球衣2.1 + JBoss 7.1 NoSuchMethodError:getProperties [英] 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中:
<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屋!