WEB开发网
开发学院软件开发Java 用 Java 客户机调用 Web 服务: J2SE 和 J2EE 环境... 阅读

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

 2009-11-05 00:00:00 来源:WEB开发网   
核心提示: 此方法的优势在于它的简单性,基本上指需要两行代码来访问和调用 Web 服务的操作,用 Java 客户机调用 Web 服务: J2SE 和 J2EE 环境中 Web 服务客户机简介(7),然而,您需要知道开发时的 WSDL URL 并且运行您的从 WSDL 到 Java 的映射工具,如果您没有这方

此方法的优势在于它的简单性。基本上指需要两行代码来访问和调用 Web 服务的操作。然而,您需要知道开发时的 WSDL URL 并且运行您的从 WSDL 到 Java 的映射工具。另外,这些存根不是可移植的,因为它们依赖于实现类,并且不应该作为应用程序的一部分进行打包。可移植存根的设计超出了 JAX-RPC 1.0 和 1.1 的范围。

动态代理


您可以使用代理从 JAX-RPC Service中调用 Web 服务的操作。代理是实现 SEI 的 Java 类。获得代理使用的是 JAX-RPC Service 的getPort() 方法,它接受您想要调用的 Web 服务的端口的名称(存在于 WSDL 文档中)以及代理实现的 SEI。它之所以称为 动态是因为该代理是在运行时创建的。动态代理客户机的步骤如下:

获取一个 JAX-RPC Service 。

使用 JAX-RPC Service 的 getPort() 方法来获得一个代理以调用 Web 服务的操作。

在步骤1中,对于受管客户机,通过把 WSDL URL 以及 Web 服务名参数传送到 createService() 方法来获得 JAX-RPC Service 。对于 J2EE 容器管理的客户机,您通过 JNDI 查找来获取 JAX-RPC Service 。 清单5展示了在 Web 服务上调用“getGreeting”操作的动态代理方法(步骤2)。

清单 5. 在动态代理上调用 Web 服务的操作
String namespace = "http://Hello.com"; 
String portName = "Hello"; 
QName portQN = new QName(namespace, portName); 
    
Hello myProxy = service.getPort(portQN, Hello.class); 
System.out.println(myProxy.getGreeting("Jane")); 

这是所有您为了使用动态代理方法调用 Web 服务而需要编写的代码。使用这种方法的优势在于您可以编写可移植的、厂商无关的代码。然而,您需要知道开发时的 WSDL URL,并且需要在运行之前根据 WSDL 文档运行您的从 WSDL 到 Java 的映射工具。如果您没有这方面的信息,或者 WSDL URL 很可能改变,那么您应该改为使用 DII 方法。

上一页  2 3 4 5 6 7 8 9  下一页

Tags:Java 客户机 调用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接