我目前正在为我的应用程序使用 Tomcat 服务器,pom.xml 中的以下代码为我提供了用于 soap 1.2 协议的 SAAJ 1.3 版。但是当我们将服务器迁移到 websphere 时,我收到如下错误。
<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory">
<property name="soapVersion">
<util:constant static-field="org.springframework.ws.soap.SoapVersion.SOAP_12"/>
</property>
</bean>
来自 tomcat 的控制台: 2013-10-11 11:12:51 INFO SaajSoapMessageFactory:135 -使用 SOAP 1.2 协议创建 SAAJ 1.3 MessageFactory 2013-10-11 11:12:51 调试 SaajSoapMessageFactory:163 - 使用 MessageFactory 类 [com.sun. xml.internal.messaging.saaj.soap.ver1_2.SOAPMessageFactory1_2Impl]
websphere 中的错误: PropertyAccessException 1:org.springframework.beans.MethodInvocationException:Property 'soapVersion' 抛出异常;嵌套异常是 java.lang.IllegalArgumentException:SAAJ 1.1 和 1.2 仅支持 SOAP 1.1
我已经删除了 maven (SaajSoapMessageFactory) 生成的 jar 文件,并且从这个类中抛出了错误。
try {
if (SaajUtils.getSaajVersion() >= SaajUtils.SAAJ_13) {
if (!StringUtils.hasLength(messageFactoryProtocol)) {
messageFactoryProtocol = SOAPConstants.SOAP_1_1_PROTOCOL;
}
if (logger.isInfoEnabled()) {
logger.info("Creating SAAJ 1.3 MessageFactory with " + messageFactoryProtocol);
}
messageFactory = MessageFactory.newInstance(messageFactoryProtocol);
}
else if (SaajUtils.getSaajVersion() == SaajUtils.SAAJ_12) {
logger.info("Creating SAAJ 1.2 MessageFactory");
messageFactory = MessageFactory.newInstance();
}
else if (SaajUtils.getSaajVersion() == SaajUtils.SAAJ_11) {
logger.info("Creating SAAJ 1.1 MessageFactory");
messageFactory = MessageFactory.newInstance();
}
**else {
**throw new IllegalStateException(
"SaajSoapMessageFactory requires SAAJ 1.1, which was not found on the classpath");**
}**
}
请告知为什么 tomcat 工作正常而 websphere 没有获得正确的 SAAJ 版本。我们也在使用 websphere 6.1.23