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; @WebService public interface HelloService { @WebMethod public String sayHello(String name); }
HelloServiceImpl.java
package com.cr.service.impl; import javax.jws.WebService; import com.cr.service.HelloService; @WebService public 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; //发布service public 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/helloService class com.sun.proxy.$Proxy32 res: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/helloService class com.sun.proxy.$Proxy32 res2: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协议传输