Разрешение конфликтов библиотек axis2 и OC4J

Я пытаюсь развернуть веб-службу Axis2 на сервере приложений OC4J 10.1.3.

Раньше я использовал ось 1.4 и только что создал свою собственную общую библиотеку со всеми файлами. Была проблема с 1.4, который был пропатчен с 1.5, поэтому теперь я использую его, но он не включает все библиотеки. На этот раз я развернул axis2.war на сервере OC4J и использую страницу администратора axis2, чтобы попытаться развернуть свой веб-сервис.

Если я разверну веб-службу через ось 2, я получу java.lang.NoSuchMethodError: javax.jws.WebMethod.exclude()Z, но не могу найти конфликтующую библиотеку. В Axis2 есть новые библиотеки jax-ws, но я думаю, что это проблема на сервере приложений OC4J. Я исключил xml.jar (так как в нем есть старые библиотеки JAXB 1.0), и это решает проблему на моем локальном компьютере, но не в Linux.

Я попытался отредактировать план развертывания, чтобы сначала выполнить поиск в локальных папках, и это позволяет мне развернуть службу, но когда я пытаюсь получить доступ к ней или к WSDL, я получаю сообщение об исключении приведения класса и JXDocumentBuilderFactory (у меня нет точная ошибка на данный момент).

Я сравнил общие библиотеки в Linux-боксе с библиотеками на моем локальном компьютере, и я использовал те же самые на каждой (хотя я не проверял версии каждой банки). Если axis2 развернута на OC4J, и я разверну свой сервис на axis2, разве я не унаследую библиотеки axis2 (jax-ws и т. Д.)?


person ravun    schedule 18.09.2009    source источник
comment
У вас есть полная трассировка стека вашего исключения? Это может помочь определить виновную библиотеку.   -  person Andrey Adamovich    schedule 19.09.2009
comment
Какую версию OC4J вы используете? Вы упомянули 10.1.3, но имели ли вы в виду 10.1.3.1 или 10.1.3.3 и т. Д. Или недавно выпущенный 10.1.3.5.   -  person Vineet Reynolds    schedule 20.09.2009
comment
Извините, на данный момент у меня нет полной трассировки стека, но версия - 10.1.3.1.0. Мне был нужен xmlparserv2.jar, который находился в общей библиотеке, но не был найден при попытке доступа к моей веб-службе (возможно, конфликт с другой библиотекой?). В итоге я установил флажок, чтобы включить поиск в библиотеках веб-приложений, и включил xmlparserv2.jar в библиотеку веб-приложений, и это исправило его; Но я не знаю, вызовет ли это еще один конфликт.   -  person ravun    schedule 21.09.2009
comment
Это то, что находится в orion-web.xml: <web-app-class-loader search-local-classes-first="true" />   -  person ravun    schedule 21.09.2009


Ответы (1)


Попробуйте удалить унаследованную библиотеку, конфликтующую, добавив ее в свой orion-application.xml:

<orion-application>
  <imported-shared-libraries>
    <remove-inherited name="PUT_HERE_THE_NAME_OF_THE_LIBRARY"/>
  </imported-shared-libraries>
</orion-application>

Подробнее здесь: Удаление и / или замена Oracle Общая библиотека импортирована по умолчанию

Изменить:
Я поискал общие библиотеки и обнаружил, что их там нет, jws-api.jar загружается во время загрузки и не может быть легко удален:

Замените библиотеки OC4J JAX-WS
OC4J имеет предварительную поддержку JAX-WS, к сожалению, это означает, что во время загрузки OC4J загружаются устаревшие API-интерфейсы JAX-WS и реализация Oracle. Это происходит еще до того, как общие библиотеки вступят в действие, на очень ранней стадии загрузки OC4J.
Библиотеки OC4J времени загрузки настраиваются в файле boot.xml в банке начальной загрузки $ ORACLE_HOME / j2ee / home / oc4j.jar. Чтобы от этого избавиться:

1-Скопируйте файл jar в $ {oracle.home} / webservices / lib / jaxws
2-Распакуйте файл OC4J.jar
3-Найдите META-INF / boot.xml
4-Замените путь в этой строке с вашей банкой:

<code-source 
   path="${oracle.home}/webservices/lib/jws-api.jar" 
   if="java.specification.version == /1\.[5-6]/"
/>  

5-Перепаковать oc4j.jar (не забудьте про MANIFEST.MF - используйте jar -m META-INF / MANIFEST.MF)

Исходная статья: Конфигурация OC4J для веб-служб

person rodrigoap    schedule 20.09.2009
comment
К сожалению, уже запущено несколько других служб, которые могут зависеть от старых библиотек, поэтому я старался не менять что-либо на сервере. Кроме того, у меня есть доступ только через Oracle Enterprise Manager и нет доступа к самой машине. Я медленно собираю все по кусочкам, но это было настоящей болью. - person ravun; 22.09.2009