Разрешение конфликтов между axis2 и библиотекой OC4J - PullRequest
2 голосов
/ 18 сентября 2009

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

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

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

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

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

1 Ответ

4 голосов
/ 21 сентября 2009

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

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

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

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

Заменить библиотеки JCX-WS OC4J
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-Repackage oc4j.jar (не забудьте о MANIFEST.MF - используйте jar -m META-INF / MANIFEST.MF)

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

...