Вопрос

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

Раньше я использовал axis 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 box.

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

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

Это было полезно?

Решение

Попробуйте удалить конфликтующую унаследованную библиотеку, добавив это в свой 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 bootstrap jar.Чтобы избавиться от этого:

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

<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 для веб-служб

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top