2

我遇到了很多问题,因为 SOAP 类有不同的 SAAJ 包:

  • com/sun/xml/internal/messaging/saaj/soap/ 在 rt.jar
  • com/sun/xml/messaging/saaj/soap/ 在 saaj-impl.jar 中

当 WebLogic 使用来自 的类com/sun/xml/internal/messaging/saaj/soap/并使用来自 的类创建应用程序时com/sun/xml/messaging/saaj/soap/,它会在部署应用程序时引发如下异常:

com.sun.xml.internal.messaging.saaj.soap.LocalStrings != com.sun.xml.messaging.saaj.soap.LocalStrings

或者

java.lang.NoClassDefFoundError: com/sun/xml/internal/messaging/saaj/soap/SAAJMetaFactoryImpl

我的解决方案是创建一个带有 saaj 引用的 weblogic.xml 描述符,并将 saaj-impl.jar 包含到战争中。问题是:我能知道 WebLogic Server 中使用的是什么 SAAJ 包吗?

4

1 回答 1

0

如果您使用 weblogic 10.3.3(或者我认为甚至是任何其他版本),则使用的 SAAJ 实现是安装的 JDK 运行时,因为 Web 服务器jars首先将 CLASSPATH 初始化为 JDK。所以你需要用你的 jar 文件覆盖它,这样它才能首先找到你想要的实现。对我有用的 weblogic 的唯一解决方案是像这样PRE_CLASSPATH在 weblogicsetDomainEnv.cmd文件中设置,

          set PRE_CLASSPATH=%DOMAIN_HOME%\lib\endorsed\saaj-impl-1.3.18.jar

借此DOMAIN_HOME表示 Weblogic 域,但它也可以是任何其他绝对路径来指向 jar。此处还描述了有关该问题的一些信息

于 2012-10-07T07:23:19.790 回答