use*_*105 6 jboss jax-rs jersey jboss7.x jersey-2.0
我正在尝试在JBoss 7.1 AS上运行Jersey 2.1 REST服务.我在部署期间收到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: 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:]
Run Code Online (Sandbox Code Playgroud)
在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>
Run Code Online (Sandbox Code Playgroud)
并在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>
Run Code Online (Sandbox Code Playgroud)
以前我尝试使用Jersey 1.17.1并且它有效(在JBoss中禁用resteasy扫描和jaxrs扩展/子系统之后).到目前为止,我已经找到了一个类似的帖子(但是使用了Tomcat),其中的结论是错误的javax.ws.rs.core.Application在运行时绑定,并且绑定类是一个"旧"(JAX- RS 1.1)版本.
任何帮助如何解决这个问题?我是.net的家伙,我在java中完全失明了:)感谢Bartek
小智 0
简而言之,泽西岛实施的 1.17 和 2.2 之间发生了重大的结构性变化。你需要:
1)从“org.glassfish.jersey.server.ResourceConfig”扩展您的应用程序类
2) 在应用程序类构造函数中添加 packages 行,如下所示:
public class MyApplication extends ResourceConfig {
public MyApplication() {
packages("com.mysite.MyApplication");
}
}
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
4) 部署并享受乐趣。
| 归档时间: |
|
| 查看次数: |
7389 次 |
| 最近记录: |