Какой пакет SAAJ используется WebLogic

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

  • 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

or

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

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


person Sonny Benavides    schedule 26.04.2012    source источник


Ответы (1)


Если вы используете 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, но может быть и любой другой абсолютный путь, указывающий на банку. Немного о проблеме также описано здесь

person Furqan Hameedi    schedule 07.10.2012