2016-11-17 13 views
1

У меня есть приложение для отдыха. Моя цель - удалить IBM JAX-RS и использовать RESTEasy JAX-RS. Я использую WAS8, и я хочу использовать только это.Невозможно протестировать RESTEasy JAX-RS для REST API

Чтобы отключить IBM JAX-RS, я удалил классы IBMRestServlet и IBMRestFilter и установил com.ibm.websphere.jaxrs.server.DisableIBMJAXRSEngine JVM для прав в консоли администратора.

Для Resteasy JAX-RS implementaion, Added Resteasy-jaxrs зависимостей в ПОМ и сконфигурированный сервлет в web.xml

 <dependency> 
     <groupId>org.jboss.resteasy</groupId> 
     <artifactId>resteasy-jaxrs</artifactId> 
     <version>3.0.11.Final</version> 
      </dependency> 

web.xml

<context-param> 
    <param-name>resteasy.servlet.mapping.prefix</param-name> 
     <param-value>/</param-value> 
    </context-param> 

    <listener> 
    <listener-class> 
    org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap 
    </listener-class> 
    </listener> 

<servlet> 
<servlet-name>resteasy-servlet</servlet-name> 
<servlet-class> 
    org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher 
</servlet-class> 
    <init-param> 
<param-name>javax.ws.rs.Application</param-name> 
<param-value>com.application.RestApplication</param-value> 
</init-param> 

    </servlet> 

    <servlet-mapping> 
    <servlet-name>resteasy-servlet</servlet-name> 
    <url-pattern>/*</url-pattern> 
    </servlet-mapping> 

A) Сначала я получил «Java. lang.NoSuchMethodError: org/jboss/resteasy/samplepl/BuiltResponse.getHeaders() исключение. Глядя на различные ответы, добавил ниже зависимость, как первый в pom.xml (хотя это не делает никакого смысла для меня)

 <dependency> 
     <groupId>org.jboss.resteasy</groupId> 
     <artifactId>jaxrs-api</artifactId> 
     <version>3.0.11.Final</version> 
     </dependency> 

B) Теперь после этого, я получаю java.lang.NoSuchMethodError: javax/WS /rs/ClientErrorException.validate(Ljavax/ws/rs/core/Response;Ljavax/ws/rs/core/Response$Status$Family;Ljavax/ws/rs/core/Response)

Можете ли вы помочь мне разрешения как A, так и B исключений. Я хочу попробовать это только в WAS8.

Кроме того, как я могу быть уверен, что я полностью отключил IBM JAX-RS, и сервер выбирает только REST Easy jaxrs.

ответ

3

Вы установили загрузчик классов вашего веб-модуля для использования режима делегирования «родительский последний»? Это обязательная часть привлечения вашего собственного провайдера JAX-RS в WebSphere. «Отключение» встроенного провайдера (через указанное системное свойство) предотвращает его инициализацию, но его классы все еще видны через загрузчик классов. Вам нужно настроить загрузчик классов вашего веб-приложения, чтобы убедиться, что он сначала загружает локальные классы.

Обратите внимание, что если вы беспокоитесь об установке «родительского последнего», вызывающей другие проблемы в вашем приложении, вы можете вместо этого просто использовать JAX-RS API и реализацию в общую библиотеку, установить общую библиотеку для использования изолированной класса и связать это с вашим веб-модулем. Это немного более целенаправленный (и, таким образом, более безопасный) способ получить этот стиль загрузки класса.

+0

Да, я изменил его. Мои приложения. Порядок загрузчика классов - это классы, загруженные сначала загрузчиком локального класса (родительский последний). – user3766874

+0

Дважды проверьте, что вы устанавливаете это на веб-модуле, а не в приложении - у них есть отдельные загрузчики классов, которые должны иметь этот параметр, настроенный отдельно. Если THAT не решит его, и вы уверены, что как API, так и банки реализации находятся в загрузчике с этим параметром, тогда, возможно, трассировка стека поможет сузить его - возможно, есть проблема с тем, неожиданные области. – Jarid

 Смежные вопросы

  • Нет связанных вопросов^_^