读书人

设计与开发 JAX-WS 2.0 Web 服务 保藏

发布时间: 2012-09-15 19:09:28 作者: rapoo

设计与开发 JAX-WS 2.0 Web 服务 收藏

设计与开发 JAX-WS 2.0 Web 服务 保藏
设计与开发 JAX-WS 2.0 Web 服务 保藏
回页首

?


设计与开发 JAX-WS 2.0 Web 服务 保藏
设计与开发 JAX-WS 2.0 Web 服务 保藏
回页首

?

在浏览器中打开 schemaLocation (http://localhost:8080/OrderProcessWeb/orderprocess?xsd=1),以查看模式定义在浏览器中呈现的情况。让我们分析一下其中的情况:模式定义最开始是 targetNamspacetns 声明,映射到在 OrderProcessService@WebService Annotation 中定义的 targetNamespace http://jawxs.ibm.tutorial/jaxws/orderprocess。清单 5 给出了对应的代码。


清单 5. 模式(Schema)命名空间声明

前面指定的 wsgen 工具命令生成两个包装 Bean 类,ProcessOrderProcessOrderResponse,分别包含订单处理 Web 服务的输入和输出消息。将基于这些包装 Bean 类生成以下模式元素:

processOrder 属于 processOrder 类型,表示其中包含一个元素,且此元素的名称为 arg0,类型为 orderBean。可以看到,在 ProcessOrder 类和 processOrder 复杂类型之间存在一对一映射。 processOrderResponseprocessOrderResponse 类型类似,后者的定义映射到 ProcessOrderResponse 类。

让我们仔细分析一下清单 6 中的代码。


清单 6. processOrder 的模式声明

清单 7 中所示的 orderBean 类型定义映射到 OrderBean 类。orderBean 类型定义包括:

一个 customer 元素,其类型为 customer。一个 orderId,其类型为 stringorderItems(它为数组类型,因为其将 maxOccurs 属性指定为 unbounded),其类型为 orderItemshippingAddress,其类型为 address


清单 7. processOrder 的模式声明

类似地,模式的其余部分 customerorderItemsaddress 分别映射到 CustomerOrderItemAddress Java Bean。

分析了模式定义后,接下来让我们回头来看看 WSDL 中的消息定义,如清单 8 中所示。WSDL 指定消息 processOrderprocessOrderResponse,其所属的元素为 processOrderprocessOrderResponse(我们已经讨论了其模式定义)。portType 指定操作 processOrder,其输入消息为 processOrder,而输出消息为 processOrderResponse


清单 8. WSDL 文档中的 processOrder 消息元素

接下来定义了 WSDL 绑定。此绑定将 soap:binding 样式定义为 documentsoap:body 使用 literal 标记指定操作 processOrder 的输入和输出消息格式。生成的 WSDL 定义映射到 @SOAPBinding Annotation(已在 OrderProcessService 类上定义,请参见清单 9)。


清单 9. WSDL 文档的绑定信息

接下来定义 WSDL服务。这将指定端口和对应的绑定类型,以及服务的实际位置。此位置通常为 HTTP 位置,在本例中为http://localhost:8080/OrderProcessWeb/orderprocess。可以在清单 10 中了解到具体的情况。


清单 10. WSDL 文档的服务信息

我们已经对生成的 WSDL 和模式构件进行了分析。清单 11 给出了一个示例 SOAP 请求消息,此消息是在 Web 服务客户机调用 processOrder 操作时发送的。


清单 11. processOrder 操作的示例 SOAP 消息

上面列出的 Web 服务客户机代码执行以下任务:

通过传入 OrderProcess Web 服务的 WSDL URL 和服务的 QName 创建 OrderProcess 类的实例。创建 OrderBean 的实例,并使用 populateOrder() 方法填充订单信息。对服务调用 getOrderProcessPort(),以检索到服务的代理(也称为端口)。端口实现服务所定义的接口。调用端口的 processOrder 方法,并同时传入在上面的第二个列表项目中创建的 OrderBean 实例。从服务获得 OrderBean 响应并输出订单 ID。
描述名字大小下载方法JAX-WS Web services codejaxws.zip32KBHTTP 

读书人网 >Web前端

热点推荐