tomcat 7 - 带@ApplicationPath的@GET方法 - 状态404错误

时间:2017-07-03 08:19:10

标签: java tomcat jax-rs

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

这是我的app类

Status

这是端点类

package app;

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

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

    }

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

在tomcat上运行它时
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();
    }       


}

显示以下错误

http://localhost:8006/ContactApp/t/t1/hi
谁能帮忙?

1 个答案:

答案 0 :(得分:3)

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

  

标识用作所有人的基本URI的应用程序路径   Path提供的资源URI。可能只适用于子类   应用

对于这个:

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

}

很好。

ContactController不应该使用@ApplicationPath声明:

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

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

@Path("t1")
public class ContactController {

Path javadoc的摘录:

  

标识资源类或类方法将使用的URI路径   服务请求。   ....   路径是相对的。对于带注释的类,基URI是   应用程序路径,请参阅ApplicationPath。

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

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

  

为了对基URI进行绝对化路径,a   忽略路径中的前导'/',并将基URI视为它们   结束于'/'

所以这些:

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

应替换为:

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