WebLogic使用什么SAAJ包

时间:2012-04-26 21:13:30

标签: soap weblogic weblogic11g saaj

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

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

当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包?

1 个答案:

答案 0 :(得分:0)

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

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

其中DOMAIN_HOME表示Weblogic域,但它也可以是指向jar的任何其他绝对路径。关于这个问题的一点也被描述为Here