Sun SAAJ SOAP实现的替代方案

dma*_*a_k 11 java soap web-services jax-ws

我正在寻找javax.xml.soapSun SAAJ之外的替代SOAP()实现.原因是因为我想在IBM JDK 5驱动的Tomcat AS上部署JAX-WS WebService,但是已知问题是Sun SAAJ实现依赖于重新分配的Xerces类(请参阅Ref Impl不能与IBM JDKSAAJ测试一起使用)案例不再适用于IBM的SDK),唯一的出路就是使用自定义Maven配置文件来实现com.sun.xml.parsers:jaxp-ri:

<profiles>
    <profile>
        <id>pre-jdk5-profile</id>

        <activation>
            <jdk>(,1.4]</jdk>
        </activation>

        <dependencies>
            <dependency>
                <groupId>com.sun.xml.parsers</groupId>
                <artifactId>jaxp-ri</artifactId>
                <scope>runtime</scope>
            </dependency>
        </dependencies>
    </profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)

我想删除此配置文件,只需将SOAP实现替换为适用于任何地方的实现.

我认为供应商SOAP实现可能附带Apache Axis/Apache CXF(基于IBM SOAP4J)或JBoss AS - 请根据我的偏好提供信息:

  • 实施应该很容易与其他工作人员(最好是一个轻量级的罐子)分开.
  • 实现应支持带附件的SOAP消息.
  • 实现应该与Java5字节码兼容.
  • 如果在Maven Central中可以实现,那么这是一个优点.

参考文献:

dma*_*a_k 7

浏览后我得到了以下潜在的问题解决方案.我已经探讨了javax.xml.soap.MessageFactory使用grepcode.com的后代是什么.

除了标准com.sun.xml.messaging.saaj.soap.MessageFactoryImpl,我发现(假设):

  • org.apache.axis2.saaj.MessageFactoryImplorg.apache.axis2:axis2-saaj:1.6.1.这个JAR正确地宣布工厂通过META-INF\services\javax.xml.soap.MessageFactory,META-INF\services\javax.xml.soap.MetaFactory因此不需要其他调整.这个版本(根据Maven Central)于2011年发布,推荐几个依赖项.
  • org.jboss.ws.core.soap.MessageFactoryImplorg.jboss.ws.native:jbossws-native-core:3.2.1.Beta2从JBoss的3.x的 看起来相当古老,也许JBoss不再支持它的开发,因为我能够在maven central(这里)之外找到这个jar .很多依赖项,1.8M大小,不推荐.
  • org.apache.openejb.server.webservices.saaj.MessageFactoryImplin in org.apache.openejb:openejb-webservices:4.0.0-beta-2org.apache.geronimo.webservices.saaj.GeronimoMessageFactoryin org.apache.geronimo.modules:geronimo-webservices:3.0-M1.实际上,这些工厂中的任何一个都是Axis2或Sun实现的包装器/ runtime_locator(请参阅SaajFactoryFinderSAAJFactoryFinder).不予考虑.

底线:唯一可接受的替代方案是Axis2实施.