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

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."));
	}

}
最后可以成功调用。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值