您的位置:首页 > 编程语言 > Java开发

利用jdk 工具构建webservice 的server 和 client

2016-04-07 18:42 525 查看
1、写个实体类:

@WebService
public class Hello {

@WebMethod
public String sayHello(String name){
return "Hello, "+name;
}
}


2、jdk提供的工具wsgen, 产生sei(service endpoint interface),利用编译的类生成wsdl 、webservice 、xsd,

wsgen -cp <classpath>  com.example.soap.Hello -s <source file directory> -wsdl -r <wsdl directory>

3、在WEB-INF 下新建sun-jaxws.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns='http://java.sun.com/xml/ns/jax-ws/ri/runtime'
version='2.0'>
<endpoint name='Hello' implementation='com.example.soap.Hello'
url-pattern='/HelloService' />
</endpoints>
4、在web.xml中添加如下配置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app  version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/HelloService</url-pattern>
</servlet-mapping>
</web-app>
5、然后部署到web server (比如tomcat)上, 启动服务后,访问http://localhost:8080/helloSOAP/HelloService?wsdl 可以看到之前定义的服务都已经以xml 方式表示出来。

注意如果出现java.lang.ClassNotFound:com.sun.xml.ws.transport.http.servlet.WSServlet, 请添加jar ,如果是maven项目 可以通过坐标引入jar:

<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.2.10</version>
</dependency>
比较原始的构建webservice 的方法到此结束。

二、通过wsdl 文件生成客户端代码:

新建一个java项目,将刚才生成的wsdl 和 xsd 文件拷贝到项目根路径/wsdl/HelloService.wsdl, /wsdl/HelloService_schema1.xsd,执行cmd命令:

wsimport -keep -s src wsdl/HelloService.wsdl

刷新java项目可以看到已经生成了客户端java文件,需要修改生成的service类的URL 将wsdlLocation 和URL 定义都修改为 http协议的(比如http://localhost:8080/helloSOAP/HelloService?wsdl)

新建一个类,测试是否能够调用service 端的方法:

public class WSDLClientTest {

public static void main(String[] args) {
HelloService service = new HelloService();
Hello hello = service.getHelloPort();
System.out.println(hello.sayHello("webservice."));
}

}
最后可以成功调用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  web service