2012-04-26 3 views
2

У меня было много проблем, потому что есть различные SAAJ пакеты с классами SOAP:Что SAAJ пакет используется WebLogic

  • 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

Мое решение было создать weblogic.xml дескриптор со ссылкой SAAJ и в том числе SAAJ-impl.jar в войну. Вопрос: Могу ли я узнать, какой пакет SAAJ используется в WebLogic Server?

ответ

0

Если вы используете WebLogic 10.3.3 (или я думаю, что даже любой другой версии), реализация SAAJ используется имеет время выполнения JDK установлен, так как веб-сервер инициализирует CLASSPATH к JDK jars первым. Поэтому вам нужно переопределить его с помощью jar-файла, чтобы он мог сначала найти нужную вам реализацию. Единственное решение с WebLogic, который работал для меня было установить PRE_CLASSPATH в WebLogic setDomainEnv.cmd файл, как это,

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

причем DOMAIN_HOME представляет домен Weblogic, но это может быть любой другой абсолютный путь, а также указать банку. Немного о проблеме также описано Here

Смежные вопросы