我正在尝试使用 jersey 在 Tomcat 9 上部署一个简单的 hello-world Jax-RS Web 服务。我的欢迎页面可用,但 REST 端点返回 404 错误。 我正在使用 gradle 来构建战争,这是我的构建文件:
plugins {
id 'java'
id 'war'
}
group 'sx'
version '1.0'
repositories {
mavenCentral()
}
dependencies {
implementation group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.7.30'
compileOnly group: 'jakarta.servlet', name: 'jakarta.servlet-api', version: '5.0.0'
implementation group: 'javax.ws.rs', name: 'javax.ws.rs-api', version: '2.1.1'
implementation group: 'org.glassfish.jersey.core', name: 'jersey-server', version: '3.0.2'
implementation group: 'org.glassfish.jersey.containers', name: 'jersey-container-servlet-core', version: '3.0.2'
}
有一个提供端点的 java 类:
package sx.smev.insertion.provider.rest;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@Path("/insertion")
public class InsertionService {
@GET
@Produces(MediaType.TEXT_PLAIN)
public Response helloWorld() {
return Response.ok().entity("HelloWorld").build();
}
}
而我的 web.xml 文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
<display-name>smev-insertion-rest-provider</display-name>
<servlet>
<servlet-name>jersey-servlet</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>sx.smev.insertion.provider.rest</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-servlet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
应用程序构建到war文件并成功部署在tomcat上。 .class 和 web.xml 文件存在于 war 档案中。 WS 通过管理器应用程序部署在 Tomcat 上,路径为 /insertion-rest-1.0 欢迎页面显示在 127.0.0.1:8080/insertion-rest-1.0 但我无法访问其余端点:
/insertion-rest-1.0/rest/insertion
/休息/插入
/insertion-rest-1.0/insertion
/插入
所有这些 URL 都返回 404 not found