【发布时间】:2017-02-25 00:25:47
【问题描述】:
所以我正在使用 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 的参数中添加什么。当我尝试在我的 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
-
看了Basic full configuration for Jersey on Tomcat in eclipse 并实施了解决方案。现在运行api时,服务器不会崩溃,但我找不到任何资源,例如http://localhost:8080/api-mashup-api/v1。
- 从 glassfish servlet 容器依赖项中删除了范围标记。
【问题讨论】:
-
你可以试试
api 吗?另外,添加 API.java 案例这不起作用。 -
两个都试过了,结果一样。
-
对不起,我的意思是在帖子中添加 API.java 类。
-
也试过了。看看我的编辑。
-
看看那个帖子,这个不需要web.xml。 stackoverflow.com/questions/37778893/…
标签: java maven servlets web.xml jersey-2.0