Web Service(JAXWS 2)的完整实现

来源:互联网 发布:java实现snmp原理 编辑:程序博客网 时间:2024/04/26 18:05

一、创建服务器,此处使用JDK中自带的HttpServer做为Web Service服务器。

 

 

二、创建Web Service的实现类,并正确加上标注,这样系统会自动生成WSDL描述文件及包装类(Wrap Class)。

 

三、生成Web Service客户端的JAVA调用框架

 

调用  wsimport -p client -keep http://localhost:32768/ws?wsdl 便可能生成调用以上部署的Web Service的客户端代码,客户端代码包含以下java文件。

  • JAXB的Object Factory,它是生成JAXB元素的工厂,我们需要调用它来创建message对象的JAXB映射,然后表达(marshall)成XML模型发送到服务器,反之当收到服务端的XML响应,我们通过它将XML解析(unmashall)成message对象;
  • WSDL定义中message所对应的java类;
  • Web Service接口,它是我们第二步创建的Web Service的本地接口;
  • 服务类,通过此服务类我们可以获取Web Service的调用接口(即服务提供的操作集)
  • Packet-info类提供实现类的包名与调用框架类的包名的映射。在第二步中实现类的包名是webservice,而调用wsimport时我们所指定的生成代码的包名是client。

 

四、调用

本例中输出结果为  "Hello, Lambert"

 

五、WS Client - Behind the scenes

JAXWS默认绑定类型为SOAP document而不是SOAP RPC,即消息仅通过XML进行封装。这样即使不通过工具生成客户端调用框架,我们也完全可以向服务端发送HTTP消息进行web service调用。

在浏览器显示的结果为:

 

结合四、五步,要实现WS的客户端调用,我们大致需要以下工作:

  • 通过WSDL生成本地接口;
  • 实现message消息到XML的映射,即将本地对象表达成XML模型,或将XML模型解析成本地对象;
  • 向服务端发送请求,并取回结果。
  • 实现调用接口的本地实现(Proxy),需要以上所产生XML模型与message(消息)的互相映射及消息的传输。

 

一次web service调用的过程包括:

  • 通过本地接口获取调用方法
  • 调用请求产生后,将调用请求表达成XML模型,并通过如HTTP Get/Post方式发往服务端,有返回值时需等待结果
  • 当获取结果后,将此字符串表达的XML模型解析成本地对象,即返回值。

 

原创粉丝点击