【发布时间】:2012-03-11 11:58:41
【问题描述】:
是否可以仅使用注释来设置 JAX-RS 应用程序? (使用 Servlet 3.0 和 JAX-RS Jersey 1.1.0)
我试过了,但没有运气。似乎需要使用一些web.xml。
配置 A(工作,但有 web.xml 配置)
web.xml
...
<servlet>
<servlet-name>org.foo.rest.MyApplication</servlet-name>
</servlet>
<servlet-mapping>
<servlet-name>org.foo.rest.MyApplication</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
...
Java
@ApplicationPath("/")
public class MyApplication extends Application {
...
}
配置 B(不工作,抛出异常)
@ApplicationPath("/")
@WebServlet("/*") // <--
public class MyApplication extends Application {
...
}
后者似乎坚持认为 Application 将是 Servlet 的子类(例外情况不容猜测)
java.lang.ClassCastException: org.foo.rest.MyApplication cannot be cast to javax.servlet.Servlet
问题
为什么 web.xml 定义有效但注释无效?有什么区别?
有没有办法让它工作,例如有没有 web.xml 的 JAX-RS 应用程序?
【问题讨论】:
-
如果您可以尝试使用 NetBeans,这里有一个用于创建 RESTFul Web 服务的向导。看来您正在尝试做的是该向导在 6.8 版中所做的事情。我使用的是 7.0.1,新方法更简单,但使用单个 servlet,即 com.sun.jersey.spi.container.servlet.ServletContainer 但它在 web.xml 中定义
标签: java jakarta-ee jax-rs servlet-3.0