用SAAJ解决SOA集成问题

http://tech.ddvip.com   2007年08月14日    社区交流

内容摘要:有几个基于Java的API可以用来访问服务。这些服务包括SAAJ、基于Java API for XML 的RPC(JAX-RPC)和Web服务调用框架(WSIF)。SAAJ提供了构建服务消费者以及提供者的API。

  SAAJ提供了查找是否出现SOAP错误的API,并且如果出现SOAP错误,那么它将提供访问错误元素的方法,比如fault code、fault string、fault actor和fault detail元素。SOAPBody有以下这些方法:

  hasFault()——如果返回SOAP Fault,则返回true。

  getFault()——返回SOAPFault对象。

  SOAPFault有下面这些处理fault对象的方法:

  getFaultCode()——返回SOAP错误中的错误代码。

  getFaultString()——返回错误字符串。

  getFaultActor()——返回指出错误来源的错误操作符。

  getDetail()——返回fault detail元素。

  清单 1给出了出现错误时记录错误元素所在之处的一个示例。

  WebLogic Integration过程

  图1展示了Get Temperature的组合过程。该过程将下述的服务有机地结合在一起,从而获得某一给定城市和国家的温度:

  接收城市和州的位置信息,并将它放置在XML文档中。

  使用U.S. Zip Web服务(www.xmethods.net)获取具有给定名称的所有城市的邮政编码和所在州的列表。

  利用转换服务获取所提供的特定州中城市的邮政编码。

  调用天气-温度服务,获取该邮政编码区域的温度(www.xmethods.net)。

  将结果转换成位置输出文档,并返回它。

  合理处理所有异常。

  用SAAJ解决SOA集成问题

  图 1.

  以上是 WebLogic Integration Get Temperature 的组合过程。

  清单 2展示了如何利用清单 1中给出的方法调用该服务。这个过程的端点URL是随输入的XML文档字符串一起传递给invokeService()方法的。

  清单 2. 以下是利用SAAJ调用WebLogic Integration过程的一个例子。

String inputXml = "<env:Envelope xmlns:env=
     "http://schemas.xmlsoap.org/soap/envelope/" " +
     "xmlns:soapenc="http://schemas.xmlsoap.org/soapencoding/"
     xmlns:xsd="http://www.w3.org/001/XMLSchema" " +
     "xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <env:Header></env:Header>
     <env:Body> " + "<getTemp xmlns="http://www.openuri.org/">" + "<location xmlns="">
             <city>Barrington</city>
             <state>IL</state>
             </location>
          </getTemp>" + " </env:Body>
</env:Envelope> ";
invokeService("http://localhost:7001/saajService/processes/TempService.jpd",inputXml);

  SAAJ可能是SOA和集成领域中一种非常有用的API。SAAJ的一些应用程序包含测试框架的服务和服务调用的库。我们已经展示了如何利用SAAJ编写消费者,并创建了一个访问WebLogic Integration Get Temperature组合过程的示例客户机。将该示例应用到您自己的项目中,让SAAJ为您工作。

作者:Mitsui    责编:豆豆技术应用

正在加载评论...