WEB开发网
开发学院软件开发Java 使用开放源代码框架的 Java 应用程序的 Web 服务集... 阅读

使用开放源代码框架的 Java 应用程序的 Web 服务集成模式,第 1 部分: 实现调用模式

 2009-11-05 00:00:00 来源:WEB开发网   
核心提示: 接下来,客户机读取调用的服务所需的输入参数,使用开放源代码框架的 Java 应用程序的 Web 服务集成模式,第 1 部分: 实现调用模式(5),为此,客户机会在运行时使用 JAXB[12] 将 Java 格式的输入参数转换为 XML 元素对象 (org.w3c.dom.Element),然后传

接下来,客户机读取调用的服务所需的输入参数。为此,客户机会在运行时使用 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 

上一页  1 2 3 4 5 6  下一页

Tags:使用 开放 源代码

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