2016-08-14 81 views
0

我在eclipse中使用Jersey配置了一个REST应用程序。当在web.xml中配置路径时,REST API返回404 NOT FOUND

当web.xml中的路径配置为/*,但我将其更改为/rest/*时,我收到404 NOT FOUND错误。 在服务器上没有例外。

web.xml文件,如下所示:

<servlet> 
    <servlet-name>Jersey Web Application</servlet-name> 
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>jersey.config.server.provider.packages</param-name> 
     <param-value>com.app.user</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Jersey Web Application</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 
<welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
</welcome-file-list> 

这里是我宣布Java文件

@Path("/rest/products") 
    public class Product { 

我得到一个404错误的路径时,我访问服务器URL上的路径/休息/产品。

我错过了什么?

非常感谢帮助!

回答

1

当您将Jersey Web Application映射到/rest/*时,所有请求的路径中应该有/rest。您将Product类映射到/rest/products,因此整个url应为http://localhost:port/contextRoot/rest/rest/products。如果您不想在URL中休息两次,请将Product类映射到/products

0

你已经将你的servlet映射到“/ rest/*” url,即每当有一个URL的请求时......./rest/*你的servlet将调用ServletContainer来处理它。

您的java文件@Path(“/ rest/products”)被提及。

由于@Path中提到的路径中存在正斜杠,因此您将收到此404错误。这是因为当你给路径开始正斜杠时,它将其视为绝对路径而不是相对路径。

所以您的最终网址不会落得像/myProject的/ REST /产品而是会像/REST /产品它无法找到。

因此错误。

相关问题