1

我目前正在使用 Jersey 1.8 和 Jersey Spring 插件 1.8,使用 JBoss EAP 6.3,它在 JDK 1.6 上运行良好。现在在升级到 JDK 1.8 和 JBoss EAP 6.4 时,绑定响应[1]时不支持 Jersey 1.0 。之后我将 Jersey 和 Jersey+Spring 版本升级到 2.4.1 [2]但是我得到了“异常:java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util /地图;” 启动服务器时出错。有人可以让我知道如何解决此问题或使用此 JDK 1.8 迁移实施的任何其他可能的解决方案吗?

  1. 尝试检查 mvn 依赖关系:树并从 axis2-transport-local jar 中删除了 jsr311-api jar,但仍然得到方法未找到错误 [3]
  2. 尝试注释掉“/jboss-eap-6.4\modules\system\layers\base\javax\ws\rs\api\main\module.xml” [5] 中配置的资源,并在启动时出现模块未找到错误服务器。即使这可行,也不确定这是正确的方法。

    [1] 绑定错误 JDK 1.8 和 Jersey 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 jersey-serlvet 的 Servlet.service() 抛出异常:java.lang.AbstractMethodError at org.codehaus.jackson.map.AnnotationIntrospector$Pair.findSerializer(AnnotationIntrospector.java:1148) [jackson-mapper-asl- 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(StdSerializerProvider.java:735)[jackson -mapper-asl-1.9.9.redhat-4.jar:1.9.9.redhat-4]

    [2] 使用 2.4.1 升级到 Jersey 和 Jersey+Spring 版本后出错

    06:12:53,208 错误 [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/tst01]] (ServerService 线程池 -- 113) JBWEB000289: Servlet jersey-serlvet 抛出负载() 异常: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) [jersey -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。

    [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 模块.xml -->

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

1 回答 1

0

在我看来,您可能需要添加一个jboss-deployment-structure.xml描述符文件(请参阅此处以进一步阅读)以排除 JBoss 模块添加到您的类路径中的 JAX-RS 1.0 依赖项。我有一个类似的问题,通过将以下文件添加到我的 EAR 中的 META-INF 目录来解决此问题:

<?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>

于 2018-01-09T15:03:40.783 回答