用 Java 客户机调用 Web 服务: J2SE 和 J2EE 环境中 Web 服务客户机简介
2009-11-05 00:00:00 来源:WEB开发网您可以重用 Call 实例来调用 Web 服务上的其他操作。
注意:createCall() 和 addParameter() 方法有其他的签名。刚才描述的并不是调用它们的惟一方法。例如,使用端口类型名和操作名参数来调用 createCall() 也是可能的。
通过 Call 对象进行 DII 调用的过程比使用存根活动态代理复杂。然而,使用 DII Call 接口的优势在于,客户机可以调用远程过程而无需知道开发时的 WSDL URI 或 Web 服务操作的签名。这样当 Web 服务的细节改变时,很容易对代码进行修改。使用 DII 客户机,不需要像动态代理或静态存根的情形那样由从 WSDL 到 Java 的映射工具(Emitter)生成运行时类。然而,如果您知道您想要调用的 Web 服务不可能更改,就应该使用动态代理,因为配置 Call 实例可能很复杂。
动态发现和调用(DDI)
动态发现和调用(Dynamic Discovery and Invocation,DDI)是 Web 服务的灵活性使用的极至,其中,Web 可以动态发现和调用 Web 服务而无需预先知道它。虽然在 前面的部分中描述的 DII 客户机不需要知道 Web 服务的开发时细节,但是它们不涉及发现 Web 服务的过程。DDI 客户机执行三个步骤:
发现 UDDI 中 Web 服务的细节:查找提供服务的业务,然后查找描述该服务的 WSDL 文档的 URL。
读取 WSDL 文档来查找 Web 服务上的信息:名称空间、服务、端口和参数。
调用服务。
在步骤1中,UDDI Registry Enquiry API 用于浏览 UDDI 注册中心。在步骤2中,UDDI4J API 用于解析 WSDL 文档。最后,在步骤3中,使用 DII 方法(在 前面的部分中进行了描述)。要获得关于 DDI 的信息,您最好读一读 developerWorks 文章“Dynamic Discovery and Invocation of Web services”(列在 参考资料部分)。
结束语
本文描述了编写 Java Web 服务客户机代码的不同方式。如前所述,为了构建和运行所提供的客户机代码可能会需要一些构件(例如 JAX-RPC 或 JSR 109 类库、Java2WSDL 映射工具发出的存根、服务端点接口(Service Endpoint Interface,SEI)、部署描述符等等)。另外,还需要准备和运行“Hello” Web 服务实现。请查阅 Zip 归档文件中的 Readme 文件以获取关于如何构建和运行类的说明。
更多精彩
赞助商链接