首页 > 解决方案 > Java:Jersey rest 服务 URL 映射问题

问题描述

我正在尝试为我的 java web 应用程序配置 jersey rest 服务。我面临的问题是我只能在根服务 URL 上获得所需的响应。我尝试设置的任何其他 URL 都返回 HTTP 404 Not Found。

以下配置有效:

package cz.mono.wb.rest
@Path("/")
public class UserService 
{
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String respondAsReady() {
        return "Web service is ready!";
    }
}

当我在浏览中访问 URL server:port/contextRoot/rest/ 时,它返回正确的响应,但是当我尝试设置 @Path 注释时,例如这样:

package cz.mono.wb.rest
@Path("/user")
public class UserService 
{
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String respondAsReady() {
        return "Web service is ready!";
    }
}

并尝试访问 URL

server:port/contextRoot/rest/user/

或者

server:port/contextRoot/rest/user

它返回404。

Jersey 配置如下所示:web.xml

<servlet>
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>
    com.sun.jersey.spi.container.servlet.ServletContainer
</servlet-class>
<init-param>
    <param-name>com.sun.jersey.config.property.packages</param-name>
    <param-value>cz.mono.wb.rest</param-value>
</init-param>
<init-param>
    <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
    <param-value>true</param-value>
</init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>jersey-serlvet</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

pom.xml

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-server</artifactId>
    <version>1.19</version>
</dependency>
<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-servlet</artifactId>
    <version>1.19</version>
</dependency>
<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-json</artifactId>
    <version>1.19</version>
</dependency>

标签: javarestjersey

解决方案


只是查看了您的代码,并在异常中说它已禁用 JAR-RS:

 (EJBComponentProviderFactoryInitilizer.java:89) - The EJB interceptor binding API is not available. JAX-RS EJB support is disabled.

大多数可能解决这个问题将解决您的问题。希望我对解决您的问题有所帮助。


推荐阅读