我正在寻找Sun SAAJ以外的其他SOAP(javax.xml.soap
)实现。这样做的原因是因为我想在IBM JDK 5驱动的Tomcat AS上部署JAX-WS WebService,但是已知的问题是Sun SAAJ实现取决于重新分配的Xerces类(请参见Ref Impl does not work with IBM JDK和SAAJ test cases no longer work with IBM's 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>
我想删除此概要文件,而仅用在任何地方都可以使用的SOAP实现替换它。
我想供应商SOAP实现可能随Apache Axis / Apache CXF(基于IBM SOAP4J)或JBoss AS一起提供-请根据我的偏好提供信息:
参考文献:
参考方案
浏览后,我得出了以下可能的问题解决方案。我已经使用grepcode.com探索了javax.xml.soap.MessageFactory
的后代。
除了标准的com.sun.xml.messaging.saaj.soap.MessageFactoryImpl
之外,我还发现(如预期的那样):
org.apache.axis2.saaj.MessageFactoryImpl
中的
org.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年发布,建议很少依赖。 JBoss 3.x中org.jboss.ws.core.soap.MessageFactoryImpl
中的
org.jboss.ws.native:jbossws-native-core:3.2.1.Beta2
。看起来已经很老了,也许JBoss不再支持它的开发了,因为我能够在maven Central(here)之外找到这个jar。不推荐使用很多依赖项,大小为1.8M。 org.apache.openejb.server.webservices.saaj.MessageFactoryImpl
中的
org.apache.openejb:openejb-webservices:4.0.0-beta-2
和 org.apache.geronimo.webservices.saaj.GeronimoMessageFactory
中的org.apache.geronimo.modules:geronimo-webservices:3.0-M1
。实际上,这些工厂中的任何一个都是Axis2或Sun实现的wrapper / runtime_locator(请参见 SaajFactoryFinder
和 SAAJFactoryFinder
)。不考虑。 底线:唯一可接受的替代方法是Axis2实现。
与哪些运算符>>兼容 - java我这里没有什么代码int b=3; b=b >> 1; System.out.println(b); 它可以完美工作,但是当我将变量b更改为byte,short,float,double时,它包含错误,但是对于变量int和long来说,它可以完美工作,为什么它不能与其他变量一起工作? 参考方案 位移位运算符(例如>>)与任何整数类型兼…
什么是com.sun.proxy。$ Proxy - java我已经看到,当错误在不同的框架(例如,实现EJB规范的框架或某些JPA提供程序)的深层发生时,stacktrace包含诸如com.sun.proxy.$Proxy之类的类。我知道什么是代理,但是我正在寻找更技术性和更特定于Java的答案。他们是什么? 如何创建? 与JVM有什么关系?它们是特定于JVM实现的吗? 参考方案 代理是在运行时创建和加载的类。这些类…
JAVA:如何检查对象数组中的所有对象是否都是子类的对象? - java我有一个对象数组。现在,我要检查所有这些对象是否都是MyObject的实例。有没有比这更好的选择:boolean check = true; for (Object o : justAList){ if (!(o instanceof MyObject)){ check = false; break; } } java大神给出的解决方案 如果您不喜欢循环,则…
Java:线程池如何将线程映射到可运行对象 - java试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …
JAVA:字节码和二进制有什么区别? - javajava字节代码(已编译的语言,也称为目标代码)与机器代码(当前计算机的本机代码)之间有什么区别?我读过一些书,他们将字节码称为二进制指令,但我不知道为什么。 参考方案 字节码是独立于平台的,在Windows中运行的编译器编译的字节码仍将在linux / unix / mac中运行。机器代码是特定于平台的,如果在Windows x86中编译,则它将仅在Win…