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

查看:90
本文介绍了球衣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中:

<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 :) 谢谢 Bartek

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)部署并享受乐趣.

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

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