当我在weblogic中部署我的Web服务客户端应用程序时,我遇到以下错误。 [此应用程序在tomcat中一直没有任何问题。]
无法解析对bean'saajSoapMessageFactory'的引用 设置构造函数参数;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 在类路径中定义名为'saajSoapMessageFactory'的bean resource [... / core / ws / ws-config.xml]:调用init方法 失败;嵌套异常是 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")
我尝试搜索此问题,但遗憾的是找不到任何解决方案。我错过了春季配置中的任何内容吗?有没有人以前遇到过这个问题?
答案 0 :(得分:3)
我没有碰到过这个 - 但是发生的事情是Weblogic使用它自己的默认MessageFactoryImpl
检查您的weblogic启动日志,您将看到一些参数设置,例如
javax.xml.rpc.ServiceFactory = weblogic.webservice.core.rpc.ServiceFactoryImpl
javax.xml.soap.MessageFactory = weblogic.webservice.core.soap.MessageFactoryImpl
你可以尝试2个选项(我不知道哪个可行,试试看)
A)
在您的客户端中,将它们自己设置为Spring等效项
System.setProperty("javax.xml.soap.MessageFactory", "org.springframework.ws.soap.saaj.SaajSoapMessageFactory");
System.setProperty( "javax.xml.rpc.ServiceFactory", "** Spring version **");
B)将您所需的版本作为-D
参数传递给startWeblogic.cmd
-Djavax.xml.soap.MessageFactory=org.springframework.ws.soap.saaj.SaajSoapMessageFactory
并将saaj jar添加到weblogic类路径中。