JAVA调用WebService实例

WebService是提供特定服务的架构技术,通过标准的Web协议提供服务,其目的是保证不同平台的应用服务可以相互操作。目前比较流行的实现是使用.NETJAVA两种语言技术,并且两种实现语言可以相互操作;

下面主要围绕通过JAVA语言来介绍Webservice定义和调用,通过JAVA语言开发WebService的方式又分为Axis、axis2、XfireCXF以及JWS。每种方式实现都有各自的特点,由于本人使用CXF方式比较熟练,而且,CFXSpring无缝结合,所以下面重点介绍以CXF方式的实现。

由于WebService实现分为服务端和客户端两种开发模式,接下来介绍WebService服务端开发、客户端开发及实例测试。

  1. 环境准备

JDK1.6以上,需要的JAR文件有:commons-logging-1.1.1.jar、cxf-2.4.3.jar、neethi-3.0.1.jar、spring-aop-3.0.5.RELEASE.jar、spring-asm-3.0.5.RELEASE.jar、spring-beans-3.0.5.RELEASE.jar、spring-context-3.0.5.RELEASE.jar、spring-context-support-3.0.5.RELEASE.jar、spring-core-3.0.5.RELEASE.jar、spring-expression-3.0.5.RELEASE.jar、spring-web-3.0.5.RELEASE.jar、wsdl4j-1.6.2.jar、xmlschema-core-2.0.1.jar。

 

1.服务端开发

自定义接口类

 package cn.test.ws.service;

 import javax.jws.WebParam;

 import javax.jws.WebService;

 @WebService

public interface GreetingService {

   public String welcome(@WebParam(name="username") String username);

   public int getNum(@WebParam(name="number") int number);

 }

 定义接口实现类

 

package cn.test.ws.service.impl;

 import cn.test.ws.service.GreetingService;

public class GreetingServiceImpl implements GreetingService {

 @Override

public String welcome(String username) {

  System.out.println("服务端的方法为:greeting()");

  return "Hell0 "+username+",欢迎你调用JAVA下的WebService服务!";

}

 @Override

public int getNum(int number) {

  System.out.println("服务端的方法为:getNum()");

  return number;

}

}

 

Spring.xml配置

 

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

xmlns:jaxws="http://cxf.apache.org/jaxws"

xsi:schemaLocation="

 http://www.springframework.org/schema/beans

 http://www.springframework.org/schema/beans/spring-beans.xsd

 http://cxf.apache.org/jaxws

 http://cxf.apache.org/schemas/jaxws.xsd">

<import resource="classpath:META-INF/cxf/cxf.xml" />

<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

<jaxws:server id="GreetingService"

serviceClass="cn.test.ws.service.GreetingService"

address="/GreetingService">

<jaxws:serviceBean>

<bean class="cn.test.ws.service.impl.GreetingServiceImpl" />

</jaxws:serviceBean>

<jaxws:features>

<bean class="org.apache.cxf.feature.LoggingFeature" />

</jaxws:features>

</jaxws:server>

</beans>

 

2. web.xml配置

 

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <servlet>
    <display-name>CXF Servlet</display-name>
    <servlet-name>CXFServlet</servlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>

 

 

3.客户端开发

 public static void main(String[] args) {

JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();

 String wsUrl = "http://127.0.0.1:8080/WS/GreetingService?wsdl";

String method ="welcome";

String method2 =  "getNum";

 try {

  Client client = dcf.createClient(wsUrl);

  Object[] objects =client.invoke(method,"TEST");

  Object[] numbers =client.invoke(method2,6);

  System.out.println(objects[0].toString());

  System.out.println(numbers[0]);

} catch (Exception e) {

  e.printStackTrace();

}

 }

 

4.实例测试

WebService测试可以使用上述客户端main方法进行测试,也可通过在浏览器中进行测试,还有专门的webservice测试工具等众多方式进行测试。

在浏览器中输入http://IP:端口/项目名称/GreetingService?wsdl即可看到已发布的服务端信息,并且通过输入制定参数显示服务端返回的信息,如:http://IP:端口/项目名称/GreetingService/welcome?username=test。

原文地址:https://www.cnblogs.com/weinan2087/p/5462520.html