1、概述
开发手段:
使用jdk开发(1.6及以上的版本)
使用CXF框架开发
组成:
-服务器端
-客户端
2、使用JDK开发
1)、服务器端
-@WebService(SEI和SEI的实现类)
-@WebMethod(SEI中的所有方法)
2)、客户端
使用eclipse提供的web service浏览器访问
-查看对应的wsdl文档
-请求webservice病查看请求和响应的信息
创建客户端应用编码方式访问:
-借助jdk的wsimort.exe工具生成客户端代码:
wsimport -keep url
-借助生成的代码写请求编码
3、服务器端的代码实现:
1、工程的目录结构如下:
2、类:
HelloService.java
package com.cr.service;import javax.jws.WebMethod;import javax.jws.WebService;@WebServicepublic interface HelloService { ??? @WebMethod ???public String sayHello(String name);}
HelloServiceImpl.java
package com.cr.service.impl;import javax.jws.WebService;import com.cr.service.HelloService;@WebServicepublic class HelloServiceImpl implements HelloService{ ???@Override ???public String sayHello(String name) { ???????System.out.println("webservice sercer..."); ???????System.out.println("name:" + name ); ???????return "hello:"+name; ???}}
server.java
package com.cr.server;import javax.xml.ws.Endpoint;import com.cr.service.impl.HelloServiceImpl;//发布servicepublic class server { ???????public static void main(String[] args){ ??????????String address = "http://localhost:8081/webserviceserver/helloService"; ???????Endpoint.publish(address , new HelloServiceImpl()); ???????System.out.println("发布成功...."); ???}}
此时运行,项目会在后台运行,并且不是以往的瞬间关闭!
使用浏览器查看wsdl文档:
http://localhost:8081/webserviceserver/helloService?wsdl
使用Eclipse自带的web service浏览器进行测试:
使用其进行测试:
查看服务器端的打印情况:
4、客户端的 实现
1、此时新建的客户端如下:
2、使用命令进行生成客户端的代码
先进入带工程的src路径下
执行命令:
wsimport -keep http://localhost:8081/webserviceserver/helloService?wsdl
3、进入工程进行刷新包
4、写实现的方法:
client.java
package com.cr.service.client;import com.cr.service.impl.HelloServiceImpl;import com.cr.service.impl.HelloServiceImplService;public class client { ???????public static void main(String[] args) { ???????????????HelloServiceImplService factory = new HelloServiceImplService(); ???????????????HelloServiceImpl helloWs = factory.getHelloServiceImplPort(); ???????????????System.out.println(helloWs); ???????????????System.out.println(helloWs.getClass()); ???????????????String res = helloWs.sayHello("java"); ???????System.out.println("res:" + res); ???????????}}
结果:
使用代理的方式
JAX-WS RI 2.2.9-b130926.1035 svn-revision#5f6196f2b90e9460065a4c2f4e30e065b245e51e: Stub for http://localhost:8081/webserviceserver/helloServiceclass com.sun.proxy.$Proxy32res:hello:java
还可以使用Eclipse自带的Web Service浏览器进行相关的测试:
5、使用Ec自带的TCP/IP工具进行监听请求(端口转发)
1、将服务端的WSDL文档保存到本地
2、修改文档的端口: 8081端口改为8082
wsdl文件
新建一个工程
wsdl保存在本地的文件
3、根据本地的wsdl生成客户端的代码,并且写客户端的调用代码
4、配置eclipsedeTCP/IP,启动监听
5‘编写客户端的测试u代码“
client.java
package com.cr.service.client;import com.cr.service.impl.HelloServiceImpl;import com.cr.service.impl.HelloServiceImplService;public class client { ???public static void main(String[] args) { ???????????????HelloServiceImplService factory = new HelloServiceImplService(); ???????????????HelloServiceImpl helloWs = factory.getHelloServiceImplPort(); ???????????????System.out.println(helloWs); ???????????????System.out.println(helloWs.getClass()); ???????????????String res = helloWs.sayHello("java"); ???????System.out.println("res2:" + res); ???}}
启动测试:
JAX-WS RI 2.2.9-b130926.1035 svn-revision#5f6196f2b90e9460065a4c2f4e30e065b245e51e: Stub for http://localhost:8082/webserviceserver/helloServiceclass com.sun.proxy.$Proxy32res2:hello:java
6、执行客户端代码发送service请求监听得到:
请求体的代码:
<?xml version="1.0" ?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:sayHello xmlns:ns2="http://impl.service.cr.com/">
<arg0>java</arg0>
</ns2:sayHello>
</S:Body>
</S:Envelope>
响应体的代码:
<?xml version="1.0" ?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body><
ns2:sayHelloResponse xmlns:ns2="http://impl.service.cr.com/">
<return>hello:java</return>
</ns2:sayHelloResponse>
</S:Body></S:Envelope>
基于soap协议传输
3、Web Service-Jaxws(Eclipse版本)
原文地址:https://www.cnblogs.com/Mrchengs/p/10562458.html