用SAAJ解决SOA集成问题

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

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

  首先,创建一个SOAP连接。SAAJ客户机可以利用SOAP Connection Factory,通过创建SOAPConnection来建立点到点的同步连接。该连接提供了同步调用服务的方法。接下来,将利用MessageFactory.newInstance()创建一个消息工厂的新实例。然后利用消息工厂的createMessage()方法创建一条SOAPMessage。这样就创建了一条没有内容的消息。

  SOAPMessage可以有一个SOAPPart,它包含XML SOAP消息和一个用于二进制/文本附件的AttachPart。通过调用消息的getSOAPPart()方法可以得到SOAPPart。利用消息的createAttachPart()方法可以创建附件部分。并且可以利用AttachPart的 setContent()方法设置附件。第1个参数是附件,第2个参数是内容类型。

  现在,要利用采用一个Source 对象的setContent()方法来设置SOAPPart的内容。该示例展示了用StringReader 和 StreamSource对象设置String中的内容的方法,但其源对象可以是任何东西。例如,如果您正在从文件中读取输入,则可以使用FileInputStream设置该内容。

  可以调用SOAPMessage 的saveChanges()方法,来保存对消息的更改。在调用连接的“call”方法时(这是下一步操作),这些更改也是被自动保存的。“call”方法把消息和端点作为参数(接受)。所有来自服务的同步响应将在SOAPMessage返回参数中返回。如果服务是异步服务,那么客户机应该忽略返回的SOAPMessage。

  最后,检查由服务返回的所有错误。调用close()方法关闭连接。所有SOAP级异常都将作为SOAPException被抛出。

  SOAP Fault处理

  SOAP规范定义了一个利用SOAP Fault将异常传回消费者的标准方法。虽然SOAP 1.1和SOAP1.2的SOAP Fault 结构存在很大的差异,但所有这些版本确实有一些通用元素。有关SOAP Fault的更多信息,请参阅 www.w3.org/TR/2003/REC-soap12-part1-20030624/#soapfault。

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

正在加载评论...