jax-ws в Weblogic 10.3.5: IllegalAnnotationsException: 2 количества IllegalAnnotationExceptions

У нас есть тестовое веб-приложение, развернутое в Weblogic 10.3.5. Веб-приложение содержит сервлет, который использует jax-ws для вызова веб-службы, развернутой в той же веб-логике. При доступе к сервлету возникает следующее исключение:

Two classes have the same XML type name "address". Use @XmlType.name and @XmlType.namespace to assign different names to them.
this problem is related to the following location:
    at com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Address
    at public com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Address com.sun.xml.ws.developer.MemberSubmissionEndpointReference.addr
    at com.sun.xml.ws.developer.MemberSubmissionEndpointReference
this problem is related to the following location:
    at javax.xml.ws.wsaddressing.W3CEndpointReference$Address
    at private javax.xml.ws.wsaddressing.W3CEndpointReference$Address javax.xml.ws.wsaddressing.W3CEndpointReference.address
    at javax.xml.ws.wsaddressing.W3CEndpointReference

Я скопировал логику сервлета в общий класс Java и запустил его. Испытание прошло успешно. Так что проблема должна заключаться в веб-приложении.

Я пробовал много способов, модифицировал weblogic-application.xml, чтобы добавить раздел Preference-Application-Packages, как показано ниже, но все равно не работает.

<prefer-application-packages>
    <package-name>javax.xml.ws.*</package-name>
    <package-name>javax.xml.bind.*</package-name>
    <package-name>javax.jws.*</package-name>
    <package-name>javax.namespace.xml.*</package-name>
    <package-name>javax.xml.soap.*</package-name>
    <package-name>org.apache.xerces.*</package-name>
    <package-name>org.apache.commons.*</package-name>
    <package-name>com.sun.xml.*</package-name>
</prefer-application-packages>

Кто-нибудь может помочь мне в этом, потратил несколько дней на эту ошибку, никакого прогресса. Спасибо миллион за ваш ответ заранее.

Обновление 1

В веб-приложении мы не хотим использовать метро, ​​просто используем jax-ws, загруженный с java.net, и помещаем jaxws-rt.jar, jaxws-api.jar, jaxb и другие связанные банки в ухо/приложение. -INF/библиотека.

Инструмент анализа загрузчика классов WebLogic (wls-cat) сообщает о конфликте классов и предлагает добавить пакеты Preference-Application-Packages в weblogic-application.xml. Таким образом, мы добавляем пакеты preference-application-packages, чтобы weblogic загружал их из нашего приложения, а не из реализации weblogic jax-ws/metro.

Но все еще не работает.


person jeffery.yuan    schedule 01.09.2012    source источник
comment
Если вы найдете решение, не могли бы вы опубликовать его?   -  person lealceldeiro    schedule 07.11.2019


Ответы (1)


Проблема может возникнуть из-за того, что вы хотите использовать Metro JaxWs в Weblogic, который имеет собственную реализацию под названием Oracle JaxWS (на основе Metro).

Вот ссылка, где объясняется, как использовать Metro с Weblogic: http://metro.java.net/guide/ch02.html#weblogic-10

Если вы не используете Metro и полагаетесь на Oracle JaxWS, вам не нужно использовать предпочтительные библиотеки или какие-либо специальные пакеты.

person Cris    schedule 01.09.2012
comment
+Крис, спасибо за ответ. - person jeffery.yuan; 02.09.2012
comment
В веб-приложении мы не используем метро, ​​просто используем jax-ws RI с java.net. Помещаем jaxws-rt.jar, jaxws-api.jar, jaxb и другие сопутствующие jar-файлы в ear/APP-INF/lib. Мы добавляем пакеты preference-application-packages, чтобы убедиться, что weblogic загружает их из нашего приложения, а не из реализации weblogic jax-ws/metro. Я обновляю свой вопрос, чтобы добавить больше информации. - person jeffery.yuan; 02.09.2012
comment
Эта проблема была решена после изменения weblogic-application.xml - я опубликую решение после того, как найду его :) - person jeffery.yuan; 13.10.2012
comment
@jeffery.yuan: Пожалуйста, опубликуйте решение. - person Christoffer Hammarström; 14.12.2012