Jersey jax-rs 应用程序在使用 Tomcat 9

时间:2021-05-28 11:50:47

标签: tomcat jersey jax-rs

我正在尝试使用 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

0 个答案:

没有答案