接着上一篇文章,这里举一个client端handler的例子。
先把webservice服务端的代码整个贴一下
webservice:
handler:
这里用j2se来发布webservice,主函数为:
运行主函数,可以发布webservice,wsdl地址为:http://localhost:8000/HelloWS3/HelloWSService?wsdl
生成客户端代码
用wsimport命令生成客户端代码
命令为:。。。/workspace/helloWS3Client/bin>wsimport -keep http://localhost:8000/HelloWS3/HelloWSService?wsdl -p com.ws.client
其中keep表示保存源文件,-p表示代码保存到指定包下。
然后在com.ws.client下新建一个客户端主函数,其中在客户端的webservice代理对象中插入handler,为了方便使用上面的同一个handler类,client端代码如下:
代码的作用是在bindingprovider对象的handlerchain中添加一个handler。
保持之前的服务端webservice运行着,然后运行这个客户端,可以在两个进程的控制台中同时打印被调用的webservice名字。
server:
2011-5-4 18:12:08 com.sun.xml.internal.ws.model.RuntimeModeler getRequestWrapperClass
信息: Dynamically creating request wrapper Class com.ws.service.jaxws.SayHello
2011-5-4 18:12:08 com.sun.xml.internal.ws.model.RuntimeModeler getResponseWrapperClass
信息: Dynamically creating response wrapper bean Class com.ws.service.jaxws.SayHelloResponse
{http://service.ws.com/}HelloWSService
{http://service.ws.com/}HelloWSService
client:
{http://service.ws.com/}HelloWSService
{http://service.ws.com/}HelloWSService
Hello xxxxxxx.s