我正在使用tomcat7,并且有一个需要在ROOT下部署的小型Java应用程序。这样做的原因是客户端无法在此时指定web应用程序的正确上下文路径。
我在这个webapp中有一个index.html,我的问题是,当我在webapp名称下部署应用程序- ${catalina_home}/mywebapp - index.html呈现时没有问题,当我导航到http://localhost:8080/mywebapp。
然而,当我在ROOT - ${catalina_home}/ROOT下部署它时-当我导航到http://localhost:8080/时,里面的index.html不呈现。错误提示404未找到。这是否与重写tomcat的默认页面有关?
我的web . xml。
<context-param>
<param-name>resteasy.servlet.mapping.prefix</param-name>
<param-value>/</param-value>
</context-param>
...
<servlet-mapping>
<servlet-name>resteasy-servlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
...
谁能解释一下为什么会这样?
提前感谢。
更新:我看到在这个stackoverflow显示html页面在tomcat从maven RESTEasy webapp的问题可能是我的过滤器说/*下的任何东西应该去servlet。我尝试为.html页面设置默认servlet,但这似乎还没有帮助…
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
如何以ROOT身份部署应用程序?如果打包为war文件,要以ROOT方式部署,请将war文件更改为ROOT。将index.html放在ROOT文件夹下。同时检查WEB-INF下的web.xml,将欢迎页面设置为index.html,如下所示:
<welcome-file-list>
<welcome-file>
index.html
</welcome-file>
</welcome-file-list>
我在这里找到了答案- http://docs.jboss.org/resteasy/docs/3.0.2.Final/userguide/html_single/:
"将Resteasy作为Servlet运行的缺点是,您不能在与JAX-RS服务相同的路径中拥有静态资源,如。html和。jpeg文件。Resteasy允许您作为过滤器运行。如果在请求的URL下没有找到JAX-RS资源,Resteasy将委托回基本servlet容器来解析URL。"
我创建了一个过滤器,这样我就可以同时提供静态页面和常规REST资源。