weblogic.webservice.core.soap.MessageFactoryImpl无法强制转换为javax.xml.soap.MessageFactory

时间:2011-11-21 11:01:49

标签: spring weblogic classpath saaj

当我在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")

我尝试搜索此问题,但遗憾的是找不到任何解决方案。我错过了春季配置中的任何内容吗?有没有人以前遇到过这个问题?

1 个答案:

答案 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类路径中。