![](/img/trans.png)
[英]Jetty+Jersey, unexpected exception: Asynchronous processing not supported on Servlet 2.x container
[英]Migrated to jersey 2.x and now I get servlet container exception
所以我正在使用Jersey 2.23.2用java构建一个小的rest api。 我遇到了一个问题,但我无法正确指定web.xml文件中的servlet。 这就是我的文件的样子:
的pom.xml
<dependencies>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.23.2</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<version>2.23.2</version>
<scope>provided</scope>
</dependency>
</dependencies>
web.xml中
...
<servlet>
<servlet-name>WebService</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>api-mashup-api.API</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>WebService</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
</web-app>
API.java
package api;
@Path("/v1")
public class API {
private Controller controller;
public API(){
controller = new Controller();
}
@GET
@Produces(MediaType.TEXT_HTML)
public String print1() {
return "Please specify what resource you need.";
}
/**
* Prints to the screen if we are in /v1/foo
*
* @return
*/
@GET
@Path("/foobar")
@Produces(MediaType.TEXT_HTML)
public String print2() {
return "Please specify what resource you need.";
}
}
我的项目文件夹结构如下所示:
api-mashup-api/Java Resources/src/api/API.java
之前我使用过Jersey 1.x然后我迁移到2.x现在我不确定在web.xml中将什么放入servlet的params中。 当我尝试在我的tomcat服务器上运行API.java时,我得到以下异常:
SEVERE: Servlet [WebService] in web application [/api-mashup-api] threw load() exception
java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer
我可以很好地到达我的index.html,所以服务器工作,但不是API部分。 不知道该怎么做。 显然servlet部分出了问题。
编辑 - 我尝试过的事情:
将API.java添加到web.xml中的param-valye
在eclipse中查看Tomcat上的Jersey的基本完整配置并实现了解决方案。 现在运行api时,服务器不会崩溃,但我找不到任何资源,例如http:// localhost:8080 / api-mashup-api / v1 。
我已经多次修复了这个错误。 它基本上总是一个依赖问题。
以下是修复它的步骤:
确保您使用的是最新版本的所有软件包(即2.23.2的glassfish)和服务器,并相应地更新您的POM。 这对您的案例非常重要,因为您使用的是新版本的Jersey。
刷新您的项目
使用Maven菜单清理和构建
使用Maven菜单刷新(这与项目刷新不同)
不要跳过步骤或假设如果你过去在这里和那里做过其中的一些,那就像一个接一个地做它们一样。
可能与servlet容器“jersey-container-servlet-core”的问题是针对servlet 2.x容器,尝试更改为
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.23.2</version>
<scope>provided</scope>
</dependency>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.