您的位置:首页 > 其它

webservice_发布服务_客户端调用(sun-jaxws)

2018-01-15 17:49 567 查看
如何用JAX-WS RI在Tomcat中发布WebService。


项目整体结构




服务端

java EE 6Libraries中带webservices-api的jar包。还需导入webservices-rt.jar ,为web监听做准备



创建服务接口

package org.csapi.wsdl.parlayx.data.sync.v1_0.service;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;

@WebService(name = "DataSync", targetNamespace = "http://www.csapi.org/wsdl/parlayx/data/sync/v1_0/interface")
@SOAPBinding(style = Style.RPC) 
public interface DataSync {
String getName();
}

创建服务接口实现类

package org.csapi.wsdl.parlayx.data.sync.v1_0.service;

@javax.jws.WebService(
endpointInterface = "org.csapi.wsdl.parlayx.data.sync.v1_0.service.DataSync",// 接口路径
targetNamespace = "http://www.csapi.org/wsdl/parlayx/data/sync/v1_0/service", //包名
serviceName = "DataSyncService",
portName = "DataSync")
public class DataSyncImpl {
public String getName() {
return "my name is 哈哈.";
}
}

在WEB-INF中创建配置文件sun-jaxws.xml,配置文件中一个WebService对应一个Endpoint。

<?xml version = "1.0"?>
<endpoints version="2.0"
xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime">
<endpoint name="DataSync"
implementation="org.csapi.wsdl.parlayx.data.sync.v1_0.service.DataSyncImpl"//实现类路径
url-pattern="/services/testGetName"> //随便
</endpoint>
</endpoints>

在web.xml中添加WSServlet配置

<listener>  
    <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>  
  </listener> 
  	  <servlet>
      <servlet-name>jaxws</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>jaxws</servlet-name>  
    <url-pattern>/services/*</url-pattern>
  </servlet-mapping>

运行tomact后,在浏览器中输入http://localhost:8080/webservice_service/services/testGetName?wsdl




客户端

在JDK的bin文件夹中,提供了一个根据wsdl生成java类的工具wsimport.exe。

输入以下命令,即可生成Java类

[plain] view
plain copy

wsimport -keep -d D:\ -s D:\ -p client -verbose http://localhost:8080/webservice_service/services/testGetName?wsdl 
-keep:是否生成java源文件

-d:指定.class文件的输出目录

-s:指定.java文件的输出目录

-p:定义生成类的包名,不定义的话有默认包名

-verbose:在控制台显示输出信息

-b:指定jaxws/jaxb绑定文件或额外的schemas

-extension:使用扩展来支持SOAP1.2

最后生成的客户端Java类



我放这了



在客户端调用服务

package client;

public class client {
public static void main(String[] args) throws Exception {
DataSyncService dss = new DataSyncService();
DataSync ds = dss.getDataSync();
System.out.println(ds.getName());
}
}

输出



源码:http://download.csdn.net/download/qq_36967136/10207287
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: