java - tomcat 7 - @GET 方法与@ApplicationPath - 状态 404 错误

标签 java tomcat jax-rs

我想使用端点路径在 tomcat 上运行我的项目 以下是我的两个 java 文件

这是我的应用类

package app;

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

    @ApplicationPath("/t")
    public class App extends Application{

    }

这是端点类

package controllers;

import java.util.List;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import dao.IEntityDAO;
import daoimpl.EntityDAOImpl;
import dto.Contacts;
import view.ContactView;

@ApplicationPath("/t1")
public class ContactController {

    @Path("/hi")
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getpassword()
    {
        return "Hiii";
    }

    @Path("/t2")
    @GET()
    @Produces(MediaType.APPLICATION_JSON)
    public List<ContactView> getallEntity(){

        IEntityDAO obj = new EntityDAOImpl();

        return obj.getallEntity();
    }       


}

我的 tomcat 7 正在运行 但是当我按照路径在 tomcat 上运行它时

http://localhost:8006/ContactApp/t/t1/hi

它显示以下错误

HTTP Status 404 - /ContactApp/t/t1/hi


type Status report

message /ContactApp/t/t1/hi

description The requested resource is not available.


Apache Tomcat/7.0.47

谁能帮忙??

最佳答案

@ApplicationPath只能应用于 Application 的子类:

Identifies the application path that serves as the base URI for all resource URIs provided by Path. May only be applied to a subclass of Application.

对于这个:

@ApplicationPath("/t")
public class App extends Application{

}

没关系。

但是 ContactController 不应该用 @ApplicationPath 声明:

@ApplicationPath("/t1")
public class ContactController {

但使用 @Path (没有前导斜杠):

@Path("t1")
public class ContactController {

路径 javadoc 的摘录:

Identifies the URI path that a resource class or class method will serve requests for. .... Paths are relative. For an annotated class the base URI is the application path, see ApplicationPath.

最后,您应该删除 REST 方法的 @Path 的前导斜杠:@Path("/t1")

它不是必需的,因为 Path 的规范解释了前导 / 被忽略并且基本 URI 被处理,就好像 / 是添加。

For the purposes of absolutizing a path against the base URI , a leading '/' in a path is ignored and base URIs are treated as if they ended in '/'

所以这些:

@Path("/hi")
...
@Path("/t2")

应替换为:

@Path("hi")
...
@Path("t2")

关于java - tomcat 7 - @GET 方法与@ApplicationPath - 状态 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44880781/

相关文章:

java - Eclipse Tomcat 发布错误 : FlatFile Cannot be cast to IFlatFolder

java - 无法从 START_OBJECT token 中反序列化 java.util.ArrayList 的实例

java - Java中获取泛型类型对象的字段

java - 根据 ArrayList 中存储的数据制作 CandleStick 图表动画

java - 从 Firestore 集合中检索文档 ID (Android)

java - 为什么通过 Eclipse 运行 Liferay/Tomcat 组合后,每次保存都发布失败并且我的 portlet 取消注册?

java - 当我想加载 ListView 时,Android ArrayAdapter 崩溃

tomcat - 我可以为 Spring Boot 的嵌入式 tomcat 启用 tomcat 管理器应用程序吗?

java - Jersey : Is it possible to specify multiple values in @DefaultValue() annotation

java - 如何在 JUnit 中创建 javax.ws.rs.core.Response?