Веб-служба REST — ошибки при обновлении с Джерси 1 до Джерси 2 с помощью плагина Spring Jersey

В настоящее время я использую Jersey 1.8 с плагинами Jersey Spring 1.8, используя JBoss EAP 6.3, и он отлично работает с JDK 1.6. Теперь при обновлении до JDK 1.8 и JBoss EAP 6.4 Джерси 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 dependency:tree и удалил jsr311-api jar из axis2-transport-local jar, но все еще получаю метод, не найденный при ошибке [3]
  2. #P2# #P3#
    #P4#
    #P5#
    #P6#
    #P7#
    <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>
    
    #P8#
    <dependencies>
    <module name="org.jboss.resteasy.resteasy-jaxrs" services="export"/>
    </dependencies>
    </module>
    

person Visagan    schedule 06.01.2018    source источник


Ответы (1)


Мне кажется, вам может понадобиться добавить файл дескриптора jboss-deployment-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>

person Zammo Holtenhoffen    schedule 09.01.2018