快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
这些客户机是 Java 2 Standard Edition(J2SE)客户机,它们是通过简单的 java 命令进行调用的。对于非受管客户机,服务查找是通过 JAX-RPC ServiceFactory 进行的,JAX-RPC ServiceFactory 是创建服务访问点的工厂。对于 J2EE 容器管理的客户机,服务查找是通过 JNDI 查找进行的。

ServiceFactory JSR 101:“JAX-RPC ServiceFactory 是在 J2SE 环境中查找 Web 服务的标准方式。”

JAX-RPC ServiceFactory

JAX-RPC ServiceFactory 是一个抽象类,用作实例化 JAX-RPC Service 的工厂。它是厂商无关的,使您能够编写可移植代码。ServiceFactory 是实例化的,可以如下进行使用: javax.xml.rpc.Service service = ServiceFactory.newInstance().createService(...);

您需要将 Web 服务的全限定名(也就是名称空间加上服务名称)传送到 createService() 方法和(可选)描述您想要查找的 Web 服务的 WSDL URL。步骤如下:

(可选)指定 WSDL URL。

指定 Web 服务的全限定名。

调用 ServiceFactory 的 createService() 方法。

然后可以使用获得的服务接口(Service Interface)来获取存根、动态代理、或 DII Call 对象,如“ 服务访问”部分所述。在该部分中,同时还描述了动态调用接口(Dynamic Invocation Interface,DII)。使用这种方法,您不需要知道您想要调用的 Web 服务的 WSDL URL,您只需要指定 createService() 方法中的服务名称参数。清单1展示了如何使用 ServiceFactory 实现 JAX-RPC Service 。QName 是一个 javax.xml.namespace.QName 。

清单 1. 使用 JAX-RPC ServiceFactory 获得 JAX-RPC 服务

String wsdlURL = http://localhost:6080/HelloWebService/services/Hello?wsdl"; String namespace = "http://Hello.com"; String serviceName = "HelloWebService"; QName serviceQN = new QName(namespace, serviceName); ServiceFactory serviceFactory = ServiceFactory.newInstance(); /* The "new URL(wsdlURL)" parameter is optional */ Service service = serviceFactory.createService(new URL(wsdlURL), serviceQN);

由特定于厂商的 JAX-RPC ServiceFactory 可供选择。如果您想要利用某个厂商的存根,使用这些 JAX-RPC ServiceFactory 通常是非常容易的(客户机代码编写起来很简单)。然而,这样的扩展不是标准的,将很可能在其他厂商的 J2EE 实现上不起作用。

JNDI 查找

JSR 109:“JNDI 查找是在 J2EE 环境中查找 Web 服务的标准方式。”

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

时间:2011-02-03 IBM Bertrand Portier

JNDI 服务查找

J2EE 容器管理的客户机被打包成 Enterprise Archives(.EAR)文件,并且在 J2EE 容器中运行。除了 Java 代码之外,描述符也打包在该归档文件中。下面是几个不同类型的 J2EE 容器管理的客户机:

应用程序客户机容器客户机

Web 容器客户机:JavaBean 或 Servlet

EJB 容器客户机:EJB

JAX-RPC 定义了受管客户机的编程模型,而 JSR 109(“实现企业 Web 服务(Implementing Enterprise Web services)”)定义了 J2EE 容器受管的客户机的编程模型。JSR 109 的目标之一就是它的客户机编程模型遵循 JAX-RPC。然而,JSR 109 并没有推荐使用 JAX-RPC ServiceFactory 。相反,它建议客户机使用 Java 命名和目录接口(Java Naming and Directory Interface,JNDI)来获取服务接口(Service Interface)。这个过程包括下面两个步骤,同时在 清单2中进行了举例说明:

实例化本地 JNDI 上下文。

在此上下文中对 Web 服务进行 JNDI 查

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