tomcatservlet 4.0jax-rs返回404错误

kd3sttzy  于 2021-07-03  发布在  Java
关注(0)|答案(0)|浏览(261)

在eclipse中使用tomcat9.0.31运行时,我已经失去了开发/测试restfuljax-rsweb服务的能力。当我在eclipse中启动tomcat并尝试点击我编写的众多jax-rs-wed服务中的任何一个时,我收到一个404错误。对于这种类型的测试,我通常使用fiddler来点击服务url
我在这里读了很多帖子,包括但不限于:
tomcat上的jax-rs总是返回404
404在jax-rs上在tomcat上,mbeans?
jersey jax rs应用程序返回404
还有更多。大多数响应似乎是针对Servlet2.5和更早版本的,并提到使用web.xml中的servlet描述。
我最近的服务都是带注解的,我不需要向web.xml添加任何内容。
我的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" 
    xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
    http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    version="4.0">

我试过的东西很多。例如,我使用openjdk13作为我的javasdk,所以我将eclipse中的默认jre更改为openjdk8(1.8),这没有帮助。我已经做了很多项目清理/构建和maven项目更新。
有一件事我读过并且已经知道了,那就是设置 metadata-complete 属性设置为false。已经设置好了,所以我把它删除了。还是不行。我试着在pom中升级我的jersey bundle依赖版本,没用。
我确实尝试过重写getclasses()方法

@Override
    public Set< Class< ? > > getClasses() {

        final Set< Class< ? > > returnValue = new HashSet< Class< ? > >();
        returnValue.add( TestApi.class );
        return returnValue;
    }

这也不起作用。注意,每次更改之后,我都会在eclipse中停止并启动tomcat服务器。
以下是相关信息:
eclipse项目方面:
动态web模块4.0
java 1.8版
javascript 1.0版
我已经发布了上面的web.xml标题
pom.xml文件:

<dependency>
    <groupId>org.glassfish.jersey.bundles</groupId>
    <artifactId>jaxrs-ri</artifactId>
    <version>2.32</version> <-- Note I was using version 2.29 this is the version I upgraded too.
</dependency>

应用程序子类:

package com.company;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

@ApplicationPath ( "resources" )
public class ApplicationConfig extends Application {}

测试等级:

package com.company;

import java.util.Date;

import javax.ws.rs.GET;
import javax.ws.rs.Path;

@Path ( "test" )
public class TestApi {

    @GET
    @Path ( "datetime" )
    public String getDate() {

        return new Date().toString();
    }
}

当我运行我的web应用程序时,我希望能够通过调用http://localhost:8080/resources/test/datetime。但是我得到一个404错误,消息只是“请求的资源在这个服务器上找不到”。此错误最常见的原因是键入错误的url或断开的链接”。eclipse控制台中没有错误。
通常,当tomcat启动时,我会看到在8080协议启动消息之后的启动输出中列出的每个服务:

我被卡住了,我需要检查最近对另一个类的更改,这个类在服务器上不起作用。
如何恢复此功能?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题