快速业务通道

Java Web服务,第3部分: Axis2数据绑定 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
法来实际调用操作。

Java Web服务,第3部分: Axis2数据绑定(2)

时间:2011-04-09 IBM Dennis Sosnoski

清单 1 给出了一个示例,说明如何使用更改为客户机系统 (localhost) 上的缺省 Tcpmon 端口 8800 的服务端点(其在 WSDL 中的任意设定值)创建存根。Tcpmon 是用于监 视 Web 服务交换的一个流行工具,因此在客户机代码中使用此选项通常非常有用。创建了存 根实例后,超时值的缺省值将改变(调试提供者代码时也很有用,因为很容易就会超过标准 的 20 秒超时设置),并会调用服务方法。

清单 1. 客户机存根用法示例

LibraryStub stub = new LibraryStub ("http://localhost:8800/axis2/services/library"); stub.getServiceClient().getOptions().setTimeoutInMilliseconds(10000000); Types[] types = stub.getTypes();

清单 1 中的代码显示了同步方法调用,其中的客户机线程将阻塞在服务调用内,在调用 完成且结果可用之后才会返回。Axis2 还支持使用回调接口进行异步调用。清单 2 显示了经 过修改的清单 1 代码,其中使用了一个小小的异步调用(应用程序代码仅仅等待操作完成, 而不进行任何有用的工作)。

清单 2. 客户机存根异步示例LibraryStub stub = new LibraryStub ("http://localhost:8800/axis2/services/library"); TypesCallback cb = new TypesCallback(); stub.startgetTypes(cb); Type[] types; synchronized (cb) { while (!cb.m_done) {  try {   cb.wait();  } catch (Exception e) {} } types = cb.m_result; if (types == null) {  throw cb.m_exception; } } ... private static class TypesCallback extends LibraryCallbackHandler { private boolean m_done; private Types[] m_result; private Exception m_exception; public synchronized void receiveResultgetTypes(Type[] resp) {   m_result = resp;   m_done = true;   notify(); } public synchronized void receiveErrorgetTypes(Exception e) {   m_exception = e;   m_done = true;   notify(); } }

Java Web服务,第3部分: Axis2数据绑定(3)

时间:2011-04-09 IBM Dennis Sosnoski

对于 HTTP 连接(如清单 2 中的情况),响应通常将立即返回到客户机。在将请求同响 应分离的传输——如 Java™ Message Service (JMS) 或简单邮件传输协议 (Simple Mail Transfer Protocol,SMTP)——上操作时,异步调用最有用,因 为在这种情况下,请求发出时间和接收到响应的时间存在很大的延迟。当然,使用 HTTP 访 问的服务还可能涉及到大量的处理延迟。对于具有此类延迟的 HTTP 服务,可以使用 WS- Addressing 来支持分离的响应,异步调用非常适合用于处理这些响应。

除了存根类(如果使用异步支持生成的话,还包括回调处理程序类)外,还有为客户机代 码生成的接口。接口定义与 WSDL portType 所定义的操作匹配的服务方法。存根实现此接口 ,并添加一些供内部使用的方法。可以直接使用存根,如清单 1 和清单 2 中所示,还可以 使用接口来仅仅使用属于服务定义的方法。无论采用哪种方式,调用服务方法时,存根都将 使用所选数据绑定框架处理将请求数据对象转换为 XML,以及将返回的 XML 转换为响应数据 对象的工作。

如果希望在客户机上直接使用 XML,则根本不需要使用生成的客户机存根类;可以转而使 用 org.apache.axis2.client.ServiceClient 类。这样做意味着需要首先配置服务和操作, 然后调用 ServiceClient.createClient() 方法为操作创建 org.apache.axis2.client.OperationClient。为了方便起见,WSDL2Java 工具(本文稍后讨 论)提供了相应的选项,

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号