#web-services #stack #weblogic #swap #java-metro-framework
#веб-сервисы #стек #weblogic #обмен #java-metro-framework
Вопрос:
Я пытаюсь использовать веб-сервисы Metro вместо стека веб-сервисов Weblogic по умолчанию, содержащегося в weblogic.jar .
Проблема возникает при попытке заставить WebLogic использовать стек metro перед своим собственным.
Шаги, которые я предпринял до сих пор, заключаются в том, чтобы ссылаться на webservices-rt.jar в проекте. Пока я получаю эту ошибку при развертывании файла ear….
Вызвано: java.lang.LinkageError: нарушение ограничений загрузчика: при разрешении поля «DATETIME» загрузчик класса (экземпляр weblogic / utils / classloaders / ChangeAwareClassLoader) ссылающегося класса, javax / xml/datatype/DatatypeConstants, и загрузчик класса (экземпляр ) для разрешенного типа поля, javax / xml / namespace / QName, имеют разные объекты класса для этого типа
Обновления:
Самая последняя ошибка: «класс javax.xml.namespace.В QName нет ни @WebSerivce, ни @WebServiceProvider » Странно, что он ищет @Webservice в объекте QName:
- Содержимое Application-Weblogic.xml
<wls:prefer-application-packages>
<wls:package-name>com.ctc.</wls:package-name>
<wls:package-name>com.sun.xml.</wls:package-name>
<wls:package-name>com.sun.istack.</wls:package-name>
<wls:package-name>com.sun.msv.datatype.</wls:package-name>
<wls:package-name>com.sun.msv.driver.</wls:package-name>
<wls:package-name>com.sun.msv.grammar.</wls:package-name>
<wls:package-name>com.sun.msv.reader.</wls:package-name>
<wls:package-name>com.sun.msv.relaxns.</wls:package-name>
<wls:package-name>com.sun.msv.scanner.</wls:package-name>
<wls:package-name>com.sun.msv.util.</wls:package-name>
<wls:package-name>com.sun.msv.verifier.</wls:package-name>
<wls:package-name>com.sun.msv.writer.</wls:package-name>
<wls:package-name>com.sun.org.apache.xml.internal.</wls:package-name>
<wls:package-name>com.sun.wsit.</wls:package-name>
<wls:package-name>javax.jws.</wls:package-name>
<wls:package-name>javax.xml.bind.</wls:package-name>
<wls:package-name>javax.xml.soap.</wls:package-name>
<wls:package-name>javax.xml.stream.</wls:package-name>
<wls:package-name>javax.xml.ws.</wls:package-name>
<wls:package-name>javax.xml.activation.</wls:package-name>
<wls:package-name>javax.xml.annotation.</wls:package-name>
<wls:package-name>javax.xml.mail.</wls:package-name>
<wls:package-name>javax.xml.security.</wls:package-name>
<wls:package-name>javax.xml.registry.</wls:package-name>
<wls:package-name>javax.xml.rpc.</wls:package-name>
<wls:package-name>javax.xml.crypto.</wls:package-name>
<wls:package-name>javanet.staxutils.</wls:package-name>
<wls:package-name>jp.gr.xml.</wls:package-name>
<wls:package-name>org.codehaus.stax2.</wls:package-name>
<wls:package-name>org.glassfish.gmbal.</wls:package-name>
<wls:package-name>org.iso_relax.</wls:package-name>
<wls:package-name>org.jcp.xml.dsig.</wls:package-name>
<wls:package-name>org.jvnet.</wls:package-name>
<wls:package-name>org.relaxng.</wls:package-name>
<wls:package-name>antlr.</wls:package-name>
<wls:package-name>org.apache.commons.lang.</wls:package-name>
</wls:prefer-application-packages>
Ответ №1:
Взгляните на использование FilteringClassLoader, который настроен в weblogic-application.xml дескриптор развертывания. Вы можете поручить WebLogic загружать классы из приложения в пользу библиотек, которые входят в состав WebLogic. Элементом descriptor является, и вы указываете пакеты Java, которые хотите загрузить из приложения.
Если вы используете WebLogic 10.3.4, вы можете использовать анализ ClassLoader для анализа конфликтующих пакетов.
Ознакомьтесь с моей презентацией здесь: SlideShare.net и моя демонстрация CAT здесь: YouTube
Комментарии:
1. Версия сервера WebLogic: 10.3.3.0 : ( Однако я добился некоторого прогресса с тех пор, как опубликовал вопрос… Я буду обновлять свои выводы, и если вы сможете помочь, это было бы здорово!
2. Хотя я не пробовал это в anger, я думал, что приложение для анализа Classloader можно запускать на более ранних версиях WebLogic Server, просто оно предоставляется только с 10.3.4. Это так, Джефф?
3. Честно говоря, не уверен. Возможно, вам не хватает библиотеки в развертываемом приложении? Если бы вы могли использовать WLS 10.3.4 и попробовать использовать CAT, это могло бы дать вам представление о том, как устранить проблему в 10.3.3. CAT есть только в 10.3.4