我正在尝试使用 Tomcat 7.0.34.0 上的 Servlet 3.0 Application类开发 RESTful webapp,但似乎没有任何效果。我以前使用 Jersey ServletContainer 方法并在 web.xml 中声明所有 REST 服务的应用程序没有问题。
我当前的应用程序子类:
package aaa;
@ApplicationPath("/test")
public class ApplicationConfig extends Application
{
@Override
public Set<Class<?>> getClasses ()
{
Set<Class<?>> resources = new java.util.HashSet<Class<?>> ();
resources.add (aaa.TestResource.class);
return resources;
}
}
和网络服务:
package aaa;
@Path("test")
public class TestResource
{
public TestResource () {}
@GET
@Produces("text/html")
public String getXml ()
{
return "TEST SUCCESS";
}
}
当我尝试部署应用程序时,Tomcat 告诉我上下文已重新加载:
INFO: Reloading Context with name [/WebApplication1] has started
Nov 10, 2013 7:06:25 PM org.apache.catalina.core.StandardContext reload
INFO: Reloading Context with name [/WebApplication1] is completed
Web 应用程序本身已部署(我可以访问其 JSP 页面) - 但是,“测试”资源仍然不可用。我已经尝试了所有可能的 URL,但只得到 404 响应。似乎 ApplicationConfig 甚至从未加载过。
兴趣点:按照this question中的建议,我尝试添加一个不带no的小web.xml并删除@ApplicationPath。结果是 NullPointerException,这正是我在 Servlet 2.x 环境中所期望的行为(未指定类,因此 ClassLoader 崩溃)。
我在这里不知所措。关于我做错了什么有什么建议吗?
PS:我使用的是 NetBeans 7.3.1,项目是 [Java Web -> Web Application -> Java EE 6 Web],没有额外的库,也没有上下文/依赖注入。