我正在尝试为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>
答案 0 :(得分:1)
在配置中将url-pattern
指定为:
<url-pattern>/rest/*</url-pattern>
现在,您在资源中的路径之前不需要/
。只需尝试@Path("user")
,它现在应该可以正常工作。
答案 1 :(得分:1)
只是看着您的代码,但有一个例外,它说它已禁用JAR-RS:
(EJBComponentProviderFactoryInitilizer.java:89) - The EJB interceptor binding API is not available. JAX-RS EJB support is disabled.
Mosto有可能解决此问题将解决您的问题。 希望我能为您解决问题。
答案 2 :(得分:0)
路径/user
是绝对路径(请注意,在/
之前加斜杠user
),这意味着它指向主机名的根。因此,它实际上指向<hostname>/user
,而不指向<hostname>/root/user
。因此,要解决此问题,只需将@Path批注的值更改为"/root/user"
。