Spring weblogic.webservice.core.soap.MessageFactoryImpl不能强制转换为javax.xml.soap.MessageFactory

Spring weblogic.webservice.core.soap.MessageFactoryImpl不能强制转换为javax.xml.soap.MessageFactory,spring,weblogic,classpath,saaj,Spring,Weblogic,Classpath,Saaj,在weblogic中部署web服务客户端应用程序时,我遇到了以下错误。[此应用程序在tomcat中一直正常工作,没有任何问题。] 在运行时无法解析对bean“saajSoapMessageFactory”的引用 设置构造函数参数;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建在类路径中定义了名为“saajSoapMessageFactory”的bean 资源[…/core/ws/ws-config.xml]:

在weblogic中部署web服务客户端应用程序时,我遇到了以下错误。[此应用程序在tomcat中一直正常工作,没有任何问题。]

在运行时无法解析对bean“saajSoapMessageFactory”的引用 设置构造函数参数;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建在类路径中定义了名为“saajSoapMessageFactory”的bean 资源[…/core/ws/ws-config.xml]:初始化方法的调用 失败;嵌套异常是 org.springframework.ws.soap.SoapMessageCreationException:无法 创建SAAJ MessageFactory:无法为SOAP创建消息工厂: 无法将weblogic.webservice.core.soap.MessageFactoryImpl强制转换为 javax.xml.soap.MessageFactory;嵌套异常是 javax.xml.soap.SOAPException:无法为创建消息工厂 SOAP:weblogic.webservice.core.SOAP.MessageFactoryImpl无法强制转换 到javax.xml.soap.MessageFactory

下面是ws-config.xml中的bean定义

(bean id="saajSoapMessageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory")

我试图寻找这个问题,但不幸的是找不到任何解决办法。我在spring配置中遗漏了什么吗?以前有人遇到过这个问题吗?

我没有遇到过这个问题,但现在的情况是Weblogic对MessageFactoryImpl使用了自己的默认设置

检查weblogic启动日志,您将看到一些参数设置,如

javax.xml.rpc.ServiceFactory = weblogic.webservice.core.rpc.ServiceFactoryImpl
javax.xml.soap.MessageFactory = weblogic.webservice.core.soap.MessageFactoryImpl
你可以尝试两个选项(我不知道哪一个可行,试试看)

(A)

在您的客户机中,自己将这些设置为Spring等效项

System.setProperty("javax.xml.soap.MessageFactory",      "org.springframework.ws.soap.saaj.SaajSoapMessageFactory");
System.setProperty( "javax.xml.rpc.ServiceFactory",      "** Spring version **");
B) 在startwebologic.cmd中将所需版本作为
-D
参数传递

-Djavax.xml.soap.MessageFactory=org.springframework.ws.soap.saaj.SaajSoapMessageFactory

并将saaj JAR添加到weblogic类路径。

在类路径中包括saaj JAR(saaj impl和saaj api)有助于解决此问题。以前,我没有将这些JAR作为WS-client应用程序的一部分(部署在weblogic中),weblogic使用“weblogic.webservice.core.soap.MessageFactoryImpl”作为导致此问题的消息工厂。