泽西岛2.1+;JBoss 7.1 NoSuchMethodError:getProperties
我试图在JBoss7.1AS上运行Jersey 2.1REST服务。我在部署期间收到NoSuchMethodError:javax.ws.rs.core.Application.getProperties错误:泽西岛2.1+;JBoss 7.1 NoSuchMethodError:getProperties,jboss,jersey,jax-rs,jboss7.x,jersey-2.0,Jboss,Jersey,Jax Rs,Jboss7.x,Jersey 2.0,我试图在JBoss7.1AS上运行Jersey 2.1REST服务。我在部署期间收到NoSuchMethodError:javax.ws.rs.core.Application.getProperties错误: ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/RESTService]] (MSC service thread 1-9) StandardWrapper.Throwable: jav
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:]
ERROR[org.apache.catalina.core.ContainerBase.[jboss.web].[default host]./RESTService]](MSC服务线程1-9)StandardWrapper.Throwable:java.lang.NoSuchMethodError:javax.ws.rs.core.Application.getProperties()Ljava/util/Map;
位于org.glassfish.jersey.server.ApplicationHandler.(ApplicationHandler.java:271)[jersey-server-2.1.jar:]
在org.glassfish.jersey.servlet.WebComponent.(WebComponent.java:283)[jersey-container-servlet-core-2.1.jar:]
在pom.xml中,我有:
<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>
org.glassfish.jersey.containers
jersey容器servlet
2.1
org.glassfish.jersey.core
泽西岛客户
2.1
在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>
再服务
org.glassfish.jersey.servlet.ServletContainer
javax.ws.rs.Application
com.gatekeeper.restservice.RESTApplication
com.sun.jersey.api.json.POJOMappingFeature
真的
1.
之前我试过Jersey 1.17.1,它成功了(在JBoss中禁用resteasy扫描和jaxrs扩展/子系统之后)。到目前为止,我已经找到了一篇类似的文章(但使用Tomcat),其中的结论是在运行时绑定了错误的javax.ws.rs.core.Application,而且绑定的类是“旧”(JAX-rs 1.1)版本
如何解决这个问题有什么帮助吗?我是.net的家伙,我对java一无所知:)
谢谢
Bartek简言之,泽西岛实施的1.17和2.2之间发生了重大的结构变化。您需要: 1)从“org.glassfish.jersey.server.ResourceConfig”扩展应用程序类 2)在应用程序类构造函数中添加packages行,如下所示:
public class MyApplication extends ResourceConfig {
public MyApplication() {
packages("com.mysite.MyApplication");
}
}
<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>
3)在web.xml中,您需要更新许多位置。见下文:
public class MyApplication extends ResourceConfig {
public MyApplication() {
packages("com.mysite.MyApplication");
}
}
<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>
球衣休息服务
org.glassfish.jersey.servlet.ServletContainer
javax.ws.rs.Application
com.mysite.MyApplication
4)部署并享受乐趣。此外,似乎不赞成在java源代码中使用通配符 不是这个) 但是这个)
一个改进,IMHO。我知道这个线程不是很新鲜,但是,我昨天才遇到这个问题,似乎没有任何效果 我的场景非常类似:Jersey 2.23.1 REST应用程序(JAX-RS 2.x)已经在tomcat上运行,需要在JBoss 7.1.1(内置JAX-RS 1.1)上运行
<context-param>
<param-name>resteasy.scan</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan.providers</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan.resources</param-name>
<param-value>false</param-value>
</context-param>
我希望它能帮助别人
<servlet>
<servlet-name>WebNize REST Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>br.com.webnize.rest.service</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>WebNize REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>