REST webservice - ошибки при обновлении с Jersey 1 до Jersey 2 с плагином Spring Jersey

Я использую Jersey 1.8 в настоящее время с плагинами Jersey Spring 1.8, использующими JBoss EAP 6.3, и она отлично работает с JDK 1.6. Теперь при обновлении до JDK 1.8 и JBoss EAP 6.4 Jersey 1.0 не поддерживается при привязке ответа [1]. После чего я обновил версию Jersey и Jersey+Spring до 2.4.1 [2], однако получаю "исключение: java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Карта;" ошибка при запуске сервера. Может кто-нибудь, пожалуйста, дайте мне знать, как решить эту проблему или любое другое возможное решение для реализации с этой миграцией JDK 1.8?

  1. Пробовал проверять зависимость mvn: дерево и удалил jsr311-api jar из axis2-transport-local jar, но все равно получал метод не найден ошибка [3]
  2. Попытался закомментировать ресурсы, настроенные в "/jboss-eap-6.4\modules\system\layers\base\javax\ws\rs\api\main\module.xml" [5], и получил ошибку модуля not found во время запуска сервер. Даже если это работает, не уверен, что это правильный подход.

    [1] Ошибка привязки JDK 1.8 и Джерси 1.8

    20: 01: 12,484 ОШИБКА [org.apache.catalina.core.ContainerBase.[Jboss.web].[Default-host].[/ Tst02].[Jersey-serlvet]] (ajp-/10.78.180.83:9109-14) JBWEB000236: Servlet.service() для исключения выброса сервлета из трикотажа сервлета: java.lang.AbstractMethodError в org.codehaus.jackson.map.AnnotationIntrospector$Pair.findSerializer(AnnotationIntrospector.java:-pper-as as-mapper as-jack-1148) 1.9.9.redhat-4.jar:1.9.9.redhat-4] в org.codehaus.jackson.map.ser.BasicSerializerFactory.findSerializerFromAnnotation(BasicSerializerFactory.java:366) [jackson-mapper-asl-1.9.9.redhat-4.jar:1.9.9.redhat-4] в org.codehaus.jackson.map.ser.BeanSerializerFactory.createSerializer(BeanSerializerFactory.java:252) [jackson-mapper-asl-1.9.9.redhat-4.jar:1.9.9.redhat-4] в org.codehaus.jackson.map.ser.StdSerializerProvider._createUntypedSerializer(StdSerializerProvider.java:782) [jackson-mapper-asl-1.9.9.redhat-4.jar:1.9.9.redhat-4] в org.codehaus.jackson.map.ser.StdSerializerProvider._createAndCacheUntypedSerializer (StdSerializ erProvider.java:735) [jackson-mapper-asl-1.9.9.redhat-4.jar:1.9.9.redhat-4]

    [2] Ошибка после обновления до версии Джерси и Джерси + Весна с 2.4.1

    06: 12: 53,208 ОШИБКА [org.apache.catalina.core.ContainerBase.[Jboss.web].[Default-host].[/ Tst01]] (пул потоков ServerService - 113) JBWEB000289: загрузка сервлета-джерси-сервлета вызвала нагрузку () исключение: java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map; в org.glassfish.jersey.server.ApplicationHandler.(ApplicationHandler.java:272) [jersey-server-2.4.1.jar:] в org.glassfish.jersey.servlet.WebComponent.(WebComponent.java:302) [джерси -container-servlet-core-2.4.1.jar:] в org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:167) [jersey-container-servlet-core-2.4.1.jar:] в org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:349) [jersey-container-servlet-core-2.4.1.jar:] в javax.servlet.GenericServlet.init(GenericServlet.java:242) [jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-2.jar:1.0.2.Final-redhat-2] в org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1194) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1] в org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1100) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1] в org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3593) [jbossweb-7.5.7.Final-redhat-1. банка: 7,5.7.Final-redhat-1] в org.apache.catalina.core.StandardContext.start(StandardContext.java:3802) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1] at org.jboss.as.web.deployment.WebDeploymentService.doStart(WebDeploymentService.java:163) [jboss-as-web-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21] at org.jboss.as.web.deployment.WebDeploymentService.access$000(WebDeploymentService.java:61) [jboss-as-web-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21] at org.jboss.as.web.deployment.WebDeploymentService$1.run(WebDeploymentService.java:96) [jboss-as-web-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21] в java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [rt.jar:1.8.0_151] в java.util.concurrent.FutureTask.run(FutureTask.java:266) [rt.jar:1.8.0_151] в java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [rt.jar:1.8.0_151] в java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPool.java:624) [rt.jar:1.8.0_151] на java.l ang.Thread.run (Thread.java:748) [rt.jar: 1.8.0_151] at org.jboss.threads.JBossThread.run (JBossThread.java:122)

    [4] POM.xml Maven Зависимости для нашего модуля

    <dependency>
    <groupId>org.glassfish.jersey.ext</groupId>
    <artifactId>jersey-spring3</artifactId>
    <version>2.4.1</version>
    <exclusions>
    <exclusion>
    <groupId>org.springframework</groupId>
    <artifactId>spring</artifactId>
    </exclusion>
    <exclusion>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    </exclusion>
    <exclusion>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    </exclusion>
    <exclusion>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    </exclusion>
    <exclusion>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    </exclusion>
    </exclusions>
    </dependency>
    
    <dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>2.4.1</version>
    </dependency>
    <dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-multipart</artifactId>
    <version>2.4.1</version>
    </dependency>
    <dependency>
    <groupId>org.jboss.spec.javax.ws.rs</groupId>
    <artifactId>jboss-jaxrs-api_2.0_spec</artifactId>
    <version>1.0.0.Final</version>
    </dependency>
    

    [5] JBoss module.xml ->

    <dependencies>
    <module name="org.jboss.resteasy.resteasy-jaxrs" services="export"/>
    </dependencies>
    </module>
    

1 ответ

Похоже, вам может понадобиться добавить файл дескриптора jboss-deploy-structure.xml (см. Здесь для дальнейшего чтения), чтобы исключить зависимость JAX-RS 1.0, добавленную в ваш путь к классам модулями JBoss. У меня была похожая проблема, которая была исправлена ​​путем добавления следующего файла в каталог META-INF в моем EAR:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
<sub-deployment name="TheWar.war">
    <dependencies>
        <module name="javax.jws.api" /> <!-- Required due to exclusion of javaee.api below -->
        <module name="javax.servlet.api" /> <!-- Required due to exclusion of javaee.api below -->
        <module name="javax.xml.ws.api" /> <!-- Required due to exclusion of javaee.api below -->
    </dependencies>
    <exclude-subsystems>
        <subsystem name="jaxrs" />
        <subsystem name="resteasy" />
        <subsystem name="webservices" />
    </exclude-subsystems>
    <exclusions>
        <module name="javaee.api" /> <!-- Exclude as it brings in dependency on JAX-RS 1.0 -->
        <module name="javax.ws.rs.api"/> <!-- Exclude as it brings in dependency on JAX-RS 1.0 -->
        <module name="org.jboss.resteasy.resteasy-jaxrs" /> <!-- Exclude as it brings in dependency on JAX-RS 1.0 -->
        <module name="org.jboss.as.jaxrs" /> <!-- Exclude as it brings in dependency on JAX-RS 1.0 -->
    </exclusions>
</sub-deployment>

Другие вопросы по тегам