我正在使用tomcat7并且有一个需要在ROOT下部署的小型Java应用程序。这样做的原因是客户端无法在此时指定webapp的正确上下文路径。
我在这个webapp中有一个index.html,我的问题是,当我在webapp名称下部署应用程序时 - $ {catalina_home} / mywebapp - 当我导航到{{3}时,index.html呈现没有问题}。
但是,当我在ROOT下部署它时 - $ {catalina_home} / ROOT - 当我导航到http://localhost:8080/mywebapp时,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 http://localhost:8080/中看到问题可能是我的过滤器说/ *下的任何内容应该转到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>
答案 0 :(得分:0)
如何将应用部署为ROOT?如果打包为war文件,要部署为ROOT,请将war文件更改为ROOT.war并将index.html置于ROOT文件夹下。还要检查WEB-INF下的web.xml,将welcom页面设置为index.html,如下所示:
<welcome-file-list>
<welcome-file>
index.html
</welcome-file>
</welcome-file-list>
答案 1 :(得分:0)
我在这里找到了答案 - http://docs.jboss.org/resteasy/docs/3.0.2.Final/userguide/html_single/:
“将Resteasy作为Servlet运行的缺点是,您不能将.html和.jpeg文件等静态资源放在与JAX-RS服务相同的路径中.Resteasy允许您作为过滤器运行。如果是JAX在请求的URL下找不到-RS资源,Resteasy将委托回基本servlet容器来解析URL。“
我创建了一个过滤器,我能够同时提供静态页面和常规REST资源。