1

我有以下错误:

Exception: javax.xml.soap.SOAPException: javax.xml.soap.SOAPException: Message send failed: com.sun.xml.messaging.saaj.soap.ver1_1.Message1_1Impl cannot be cast to oracle.j2ee.ws.saaj.soap.MessageImpl
    at oracle.j2ee.ws.saaj.client.p2p.HttpSOAPConnection.call2(HttpSOAPConnection.java:234)
    at oracle.j2ee.ws.saaj.client.p2p.HttpSOAPConnection.call(HttpSOAPConnection.java:141)
    at oracle.j2ee.ws.saaj.client.p2p.HttpSOAPConnection.call(HttpSOAPConnection.java:134)

我的代码是:

SOAPMessage soapMessage = MessageFactory.newInstance().createMessage();

soapMessage.getSOAPPart().getEnvelope().addNamespaceDeclaration("http://action.web.nnn.some.com/", "act");

SOAPElement elemement = soapMessage.getSOAPPart().getEnvelope().getBody().addChildElement("getSomeMethod", "http://action.web.nnn.some.com/").addChildElement("arg0");

elemement.addTextNode(someDate);

soapMessage.saveChanges();

SOAPMessage responce = SOAPConnectionFactory.newInstance().createConnection().call(soapMessage, wsdlUrl);

运行的应用程序:

  • Java(TM) SE 运行时环境 (build 1.7.0_15-b33)

  • WebLogic 服务器 12.1.2.0.0

将以下行添加到 setDomainEnv 后出现错误:

set JAVA_OPTIONS=%JAVA_OPTIONS% -Djavax.xml.soap.MessageFactory=com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl

我正在尝试将 SAAj 的实现切换到 saaj-impl-1.3.23.jar。

我的问题是:如何正确地要求 Weblogic 使用提供的 SAAJ 实现而不是它自己的实现?

4

1 回答 1

0

这个问题经常被问到,答案是告诉 weblogic 它应该在你的 weblogic/application.xml 文档中首选哪个版本:

<wls:prefer-application-packages>
   <wls:package-name>com.sun.xml.messaging.saaj.*</wls:package-name>
</wls:prefer-application-packages>

这将强制 weblogic 使用您 ear APP-INF/lib 目录中的 saaj 包。在此处查看 Oracle 文档

另见:

如何在 WebLogic 中设置 jar 的顺序?

防止 Weblogic 12c 使用系统的 slf4j 绑定

Weblogic 配置-prefer-web-inf-classes

于 2014-08-28T16:17:02.717 回答