Jersey 2.1 + JBoss 7.1 NoSuchMethodError: getProperties [英] Jersey 2.1 + JBoss 7.1 NoSuchMethodError: getProperties

查看:25
本文介绍了Jersey 2.1 + JBoss 7.1 NoSuchMethodError: getProperties的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在 JBoss 7.1 AS 上运行 Jersey 2.1 REST 服务.我在部署期间收到 NoSuchMethodError: javax.ws.rs.core.Application.getProperties 错误:

I am trying to run Jersey 2.1 REST service on JBoss 7.1 AS. I am getting the NoSuchMethodError: javax.ws.rs.core.Application.getProperties error during deployment:

ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/RESTService]] (MSC service thread 1-9) StandardWrapper.Throwable: java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map;
at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:271) [jersey-server-2.1.jar:]
at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:283) [jersey-container-servlet-core-2.1.jar:]

在 pom.xml 我有:

In pom.xml I have:

<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet</artifactId>
    <version>2.1</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-client</artifactId>
    <version>2.1</version>
</dependency>

在 web.xml 中:

And in the web.xml:

<servlet>
    <servlet-name>RESTService</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>javax.ws.rs.Application</param-name>
        <param-value>com.gatekeeper.restservice.RESTApplication</param-value>
    </init-param>
    <init-param>
        <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

以前我尝试过 Jersey 1.17.1 并且它有效(在 JBoss 中禁用 resteasy 扫描和 jaxrs 扩展/子系统之后).到目前为止,我发现了一个类似的帖子(但使用 Tomcat),其中的结论是错误的 javax.ws.rs.core.Application 在运行时被绑定,而且绑定的类是旧的"(JAX-RS 1.1) 版本.

Previously I tried with Jersey 1.17.1 and it worked (after disabling resteasy scan and jaxrs extension/subsystem in JBoss). So far I've found one similar post (but with Tomcat) where the conslusion was that the wrong javax.ws.rs.core.Application is being bound at runtime, and further that the bound class is an "old" (JAX-RS 1.1) version.

任何帮助如何解决这个问题?我是 .net 人,我在 Java 中完全失明:)谢谢巴特克

Any help how to resolve this? I'm .net guy and I'm totally blind in java :) Thanks Bartek

推荐答案

简而言之,在 Jersey 实现的 1.17 和 2.2 之间进行了重大的结构更改.您需要:

In short, significant structural changes have been made between 1.17 and 2.2 of the Jersey implementation. You need to:

1) 从org.glassfish.jersey.server.ResourceConfig"扩展您的应用程序类

2) 在应用程序类构造函数中添加包行,如下所示:

    public class MyApplication extends ResourceConfig {
        public MyApplication() {
            packages("com.mysite.MyApplication");
        }
    }

3) 在 web.xml 中,您需要更新许多地方.见下文:

    <servlet-name>Jersey REST Service</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
      <param-name>javax.ws.rs.Application</param-name>
      <param-value>com.mysite.MyApplication</param-value>
    </init-param>

4) 部署并玩得开心.

这篇关于Jersey 2.1 + JBoss 7.1 NoSuchMethodError: getProperties的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆