我在Tomcat中将Jersey应用程序部署为WAR。我获得了所有资源的404s,我正在努力找出原因。
由于我启用了Jersey日志记录,因此我看到一条日志消息,指示Jersey正在初始化:
INFO: org.apache.catalina.startup.HostConfig deployWAR
+INFO: Deploying web application archive myApp.war
INFO: org.glassfish.jersey.server.ApplicationHandler initialize
+INFO: Initiating Jersey application, version Jersey: 2.3.1 2013-09-27 07:50:09... [.logger.j2se.BizManagerHandler]
根据其他SO帖子判断,我希望看到这样的日志作为下一行:
INFO: Scanning for root resource and provider classes in the packages:
com.xxx.restful
我没有看到此日志,也没有显示找到资源的任何日志 - 所以我不确定扫描是否正在发生。
web.xml
中的myApp.war
包含以下内容:
<servlet>
<servlet-name>My Servlet</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.example.MyConfig</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.example.myApp.rest</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
<param-value>com.sun.jersey.api.container.filter.LoggingFilter</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
<param-value>com.sun.jersey.api.container.filter.LoggingFilter</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.config.feature.Trace</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.config.feature.Debug</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
我假设我做的日志是证明正在部署这个servlet元素。
我有什么理由错过了原因:
由于
答案 0 :(得分:6)
您正在尝试使用Jersey 1属性(包前缀org.glassfish.jersey
)配置Jersey 2应用程序(包前缀com.sun.jersey
)。目前不支持此功能。看看文章Registering Resources and Providers in Jersey 2,它解释了如何在Jersey 2中实现这样的功能。还有对支持的属性的引用。
注意:您不会看到通知您有关Jersey 2中找到的资源/提供商的日志消息。