最佳答案
是否可以仅使用注释来设置 JAX-RS 应用程序? (使用 Servlet 3.0和 JAX-RS Jersey 1.1.0)
我试过了,没有运气。似乎需要使用一些 web.xml
。
配置 A (正常工作,但具有 web.xml 配置)
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>
...
爪哇咖啡
@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 应用程序?