java - 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>
解决方案
只是查看了您的代码,并在异常中说它已禁用 JAR-RS:
(EJBComponentProviderFactoryInitilizer.java:89) - The EJB interceptor binding API is not available. JAX-RS EJB support is disabled.
大多数可能解决这个问题将解决您的问题。希望我对解决您的问题有所帮助。
推荐阅读
- c# - DoubleLinkedList C#删除最后两个元素
- python - 合并数据框的问题
- chart.js - ChartJs 工具提示高度选项不起作用
- html - 全角 div 不出现
- python - 将列的平均值设为 100,并按比例转换列中的其他值(Pandas Python)
- google-cloud-firestore - 调用服务函数时出现firebase错误
- javascript - 为什么我可以在 JavaScript / TypeScript 中声明变量之前使用它?
- javascript - 量角器 - ScriptTimeoutError:脚本超时 - 来自:任务:Protractor.waitForAngular()
- android - 新 Firebase Crashlytics SDK 的 Crashlytics 日志文件位于何处
- reactjs - 开发工具中缺少 React 扩展