使用开放源代码框架的 Java 应用程序的 Web 服务集成模式,第 1 部分: 实现调用模式
2009-11-05 00:00:00 来源:WEB开发网接下来,客户机读取调用的服务所需的输入参数。为此,客户机会在运行时使用 JAXB[12] 将 Java 格式的输入参数转换为 XML 元素对象 (org.w3c.dom.Element)。Java Architecture for XML Binding (JAXB) 提供了一种非常方便的方法,可将 XML 模式绑定到 Java 代码中的表示形式。
客户机将创建一个由这些 Element 对象组成的数组,并调用 Axis Call 对象的 invoke 方法。
invoke 方法构造 SOAP 请求消息,并通过发送消息来调用服务,从服务获取输出参数,然后将其作为 org.apache.axis.message.SOAPBodyElement 对象数组返回给客户机。
客户机然后构造与从服务接受到的输出参数对应的等效 Java 对象,这同样也是在运行时使用 JAXB(从 XML 到 Java 绑定)完成的。
然后,客户机将这一组 Java 对象提供给应用程序。
这种调用方法尤其适合用于调用具有复杂数据类型的文档样式 Web 服务。会首先使用 JAXB 将复杂数据类型转换为 XML,然后传递给服务调用者。输入参数也以 XML 格式接收,并使用 JAXB 解析回 Java 对象。
清单 3. 使用 WSIF 的 RPC 样式请求-响应 Web 服务客户机示例代码
SOAPBodyElement[] element = // create SOAPBodyElement array using input objects
// create call object
Service service = new Service();
Call call = (Call) service.createCall();
// set end point (http address)
call.setTargetEndpointAddress(endPoint);
// invoke the service by passing the SOAPBodyElement
Vector output = (Vector) call.invoke(element);
// create element array from vector
Element elemArray[] = new Element[output.size()];
for (int i = 0; i < output.size(); i++) {
if (output.get(i) instanceof Element) {
elemArray[i] = (Element) output.get(i);
}
if (output.get(i) instanceof SOAPBodyElement) {
elemArray[i] = ((SOAPBodyElement) output.get(i)).getAsDOM();
}
}
// convert Element array back into Java Objects using JAXB
- ››使用脚本恢复WinXP系统的用户登录密码
- ››使用phpMyadmin创建数据库及独立数据库帐号
- ››使用Zend Framework框架中的Zend_Mail模块发送邮件...
- ››使用cout标准输出如何控制小数点后位数
- ››使用nofollow标签做SEO的技巧
- ››使用 WebSphere Message Broker 的 WebSphere Tra...
- ››使用SQL Server事件探查器做应用程序的性能分析
- ››使用SQL Server事件探查器分析死锁原因
- ››使用纯文本文件打造WCF服务
- ››使用 Dojo 开发定制 Business Space 小部件,第 4...
- ››使用 ADDRESS 与 INDIRECT函数查询信息
- ››使用 COLUMN函数编制单元信息
赞助商链接