JAX-WS框架建立WebService服务接口生成客户端

一:IDE(MyEclipse)中以JAX-WS框架开启WebProject中服务类的WebService服务接口,自动生成额外代码:

1,服务类的webservice代理类,可以指定namespace

 //服务类:  
 public class WsClass6 {  
  public ResEntity wsmethod1( ReqEntity param  ){   
   ResEntity rstmp = new ResEntity();
   String tmpa = param.getRqa() + "(wsmethod1)";
   int tmpb = param.getRqb() + 1;
   rstmp.setRsa(tmpb);
   rstmp.setRsb(tmpa);   
   return rstmp;   
  }
 }
 //生成服务代理类:
 @javax.jws.WebService(targetNamespace = "http://x.y.z/c6/", serviceName = "WsClass6Service", 
   portName = "WsClass6Port", wsdlLocation = "WEB-INF/wsdl/WsClass6Service.wsdl")
 public class WsClass6Delegate {
  com.test6.WsClass6 wsClass6 = new com.test6.WsClass6();
  public ResEntity wsmethod1(ReqEntity param) {
   return wsClass6.wsmethod1(param);
  }
 }


2,sun-jaxws.xml 配置endpoint
sun-jaxws.xml 配置

 <?xml version = "1.0"?>
 <endpoints version="2.0"
  xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime">
  <endpoint name="WsClass6Port"
   implementation="com.test6.WsClass6Delegate"
   url-pattern="/WsClass6Port">
  </endpoint>
  <endpoint name="WsClass62Port"
   implementation="com.test6.WsClass62Delegate"
   url-pattern="/WsClass62Port">
  </endpoint>
 </endpoints>

3,web.xml中Servlet、listener配置

web.xml配置

 <?xml version="1.0" encoding="UTF-8"?>
 <web-app version="2.5" 
  xmlns="http://java.sun.com/xml/ns/javaee" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
   <servlet>
    <description>JAX-WS endpoint - WsClass6Service</description>
    <display-name>WsClass6Service</display-name>
    <servlet-name>WsClass6Service</servlet-name>
    <servlet-class>
     com.sun.xml.ws.transport.http.servlet.WSServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
   </servlet>
   <servlet-mapping>
    <servlet-name>WsClass6Service</servlet-name>
    <url-pattern>/WsClass62Port</url-pattern>
   </servlet-mapping>
   <servlet-mapping>
    <servlet-name>WsClass6Service</servlet-name>
    <url-pattern>/WsClass6Port</url-pattern>
   </servlet-mapping>
   <welcome-file-list>
     <welcome-file>index.jsp</welcome-file>
   </welcome-file-list>
   <listener>
    <listener-class>
     com.sun.xml.ws.transport.http.servlet.WSServletContextListener
    </listener-class>
   </listener>
 </web-app>

目录结构:

WEB-INF/
--------web.xml
--------sun-jaxws.xml
--------wsdl/
------------WsClass6Service.wsdl
------------WsClass6Service_schema1.xsd

二:IDE中以JAX-WS框架生成客户端

可以用IDE,以WSDL文件或者WSDL URL文件方式生成客户端代码;

src/
-------ObjectFactory.java
-------package-info.java
-------ReqEntity.java
-------ResEntity.java
-------WsClass6Delegate.java
-------WsClass6Service.java
-------Wsmethod1.java
-------Wsmethod1Response.java

三:调用WebService客户端

 //客户端调用:
 public class Testws6client6 {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  
  WsClass6Service ws = new WsClass6Service();
  ReqEntity rq = new ReqEntity();
  rq.setRqa("December");
  rq.setRqb(1);
  ResEntity rs = ws.getWsClass6Port().wsmethod1(rq);
  System.out.println(rs.getRsa() + " , " + rs.getRsb());

 }
}


四:在tomcat(6.0)运行环境部署WebService project时需要的一些jar包

gmbal-api-only.jar
,ha-api.jar
,javax.annotation-api.jar
,javax.xml.soap-api.jar
,jaxb-api.jar
,jaxb-core.jar
,jaxb-impl.jar
,jaxws-api.jar
,jaxws-rt.jar
,jaxws-tools.jar
,management-api.jar
,policy.jar
,stax-ex.jar
,streambuffer.jar

你可能感兴趣的:(JAX-WS框架建立WebService服务接口生成客户端)