SAAJ (the SOAP with Attachments API for Java™,带附件的 SOAP Java™API)是 Java 程序员在开发 Web Services 时直接处理 SOAP 消息所应用的标准 API。从 1.2 版本以来,SAAJ 提供的 javax.xml.soap 接口对相应的 DOM 接口进行了扩展,这样一来,程序员使用标准的 JAXP 处理就可以完成对收发的 SOAP 消息中 XML 内容进行创建与处理等工作。
但不幸的是,许多 Java 应用服务器并不完全支持 SAAJ 1.2 。Spring Web Services 的高级程序员 Arjen Poutsma 写了一个小的测试程序,程序使用 SAAJ 创建SOAP 消息,使用DOM 创建了消息体,但是Geronimo、JBoss、OC4J 和 Weblogic 在处理该程序时,运行结果均不正确。(详细的列表请参看 Arjen 的 blog )。
对于那些不使用数据绑定技术(诸如 JAXB 、 XMLBeans 或 Castor )而偏爱直接处理 XML 的开发者来说,根据自己使用 API 的不同偏好(包括 JDOM 、 XOM 、 dom4j 或 Axis2 的 Axiom 类库),他们有多种技术选择来完成任务。但不幸的是,其中标准化的只有 DOM 一个,这种强调远离 “使用繁琐” 的技术在这次并没有给我们带来预期的“可移植性”。
使用 Java 语言处理 SOAP 消息,您更偏爱哪一种方式?您碰到过 Arjen 在文中描述的问题吗?
评论