用 Java 客户机调用 Web 服务: J2SE 和 J2EE 环境中 Web 服务客户机简介
2009-11-05 00:00:00 来源:WEB开发网此方法的优势在于它的简单性。基本上指需要两行代码来访问和调用 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 方法。
更多精彩
赞助商链接