快速业务通道

用Java客户机调用Web服务: J2SE和J2EE环境中Web服务客户机简介 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
找。

清单 2. JNDI 服务查找

Context ic = new InitialContext(); Service service = (Service) ctx.lookup("java:comp/env/service/HelloService");

Web 服务的名称(在本例中为 java:comp/env/service/HelloService )是在客户机应用程序的部署描述符中指定的。JSR 109 建议把服务引用的所有逻辑名组织在 service 子目录中。如果客户机环境上下文是 java:comp/env ,您就可以以下面的代码结束:

service name in context = client environment context + "service" subcontext + service name.

在本例中,上下文中的服务名为:

java:comp/env/ + service/ + HelloService.

service 子上下文(subcontext) + 服务名(例如 service/HelloService )也称为逻辑上的服务名,是在 Web 服务客户机应用程序的部署描述符中进行声明的。

JNDI 查找返回 JAX-RPC Service Interface。J2EE 容器确保在部署描述符中指定的绑定通用 JAX-RPC Service 的实现。您也可以将该查找返回的对象强制转换成您的 Web 服务的指定接口。这示于 清单3,其中 HelloService 扩展了通用的 JAX-RPC Service 接口。

清单 3. 可供选择的 JNDI 查找

Context ic= new InitialContext(); HelloServiceInterface service =    (HelloServiceInterface) ic.lookup("java:comp/env/service/HelloService");

然后可以使用获得的服务接口(Service Interface)来获取静态存根、动态代理或 DII Call 对象,如下面的“ 服务访问”部分所述。

服务访问

在前面的部分中,您看到了 JAX-RPC ServiceFactory 用作 JAX-RPC Services 的工厂。同样地,JAX-RPC Service 也用作代理和存根的工厂。一旦您实例化了服务,就拥有了三种访问和调用 Web 服务的方法:

用Java客户机调用Web服务: J2SE和J2EE环境中Web服务客户机简介(4)

时间:2011-02-03 IBM Bertrand Portier

存根

动态代理

动态调用接口(Dynamic Invocation Interface,DII)

存根和动态代理方法使用服务端点接口(Service Endpoint Interface,SEI)。它基本上是 WSDL 端口类型元素中描述 Web 服务操作的 Java 表示。它是定义 Java 客户机用来与 Web 服务进行交互的方法的 Java 接口。SEI 是由从 WSDL 到 Java 的映射工具(比如 Apache Axis 的 Java2WSDL 或 IBM WSDK 的 WSDL2Client)生成的。

SEI

服务端点接口(Service Endpoint Interface,SEI)是 WSDL A  is the Java representation of a WSDL port type.

存根

存根方法使用在从 WSDL 到 Java 映射阶段运行之前创建的特定于平台的存根。因为存根是在运行之前创建的,所以它有时称为 静态存根。它是一个实现 SEI 的 Java 类。从 WSDL 到 Java 的映射工具生成所需的客户端构件;该工具主要导入 WSDL 服务定义,然后创建相应的 Java 代码。构件包括 SEI、存根、(可选)Holder、序列化器、反序列化器和实用程序类。JAX-RPC 建议把存根的实例绑定到特定的协议和传输上,比如 SOAP 绑定存根。对于存根方法,需要执行的步骤如下:

获取一个 JAX-RPC 服务。

获得一个存根。

在该存根上调用 Web 服务的操作。

步骤2和3显示在 清单4中。请注意,使用 JAX-RPC Service 的 getPort 方法(在下一部分中进行描述)来获取存根也是有可能的。

清单 4. 通过存根访问 Web 服务

Hello myStub = (Hello) service.getHello(); System.out.println(myStub.getGreeting("Jane");

此方法的优势在于它的简单性。基本上指需要两行代码来访问和调用 Web 服务的操作。然而,您需要知道开发时的 WSDL URL 并且运行您的从 WSDL 到 Java 的映射工具。另外,这些存根不是可移植的,因为

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号