Tomcat 7跟踪webapps的斜线问题

最近我把我的tomcat服务器从6.x版本升级到最新的7.x版本。

我想出了一点麻烦,希望能得到帮助。

我有一个应用程序调用MyApp

tomcat6,当我去http://www.example.com/MyApp/page/我通常会得到想要的结果。

现在,在tomcat7上,访问相同的确切url(跟着斜线)我得到错误:“资源不可用”,因为tomcat认为/ MyApp / page /是一个完整的webapp名称而不是请求名MyApp网页下的页面。

我需要在我的url末尾的斜线,否则我得到的错误:“HTTP状态405 – 请求方法”不支持GET“这是好的,因为我真的不允许GET方法的”页面“请求。

如果有人知道如何告诉tomcat现有的webapp的path后的斜线不应该假设redirect到新的webapp调用整个“string”,只是像tomcat6上处理请求,这将是伟大的!

检查你的欢迎文件列表..接下来是猜测…

我相信问题的本质是当Tomcat提供了一个/ – 它有几个选项 – 遍历欢迎文件列表 – 没有任何东西 – 显示目录列表(如果启用)

这里有趣的地方开始…很多人想用* .do来做类似struts的东西。 所以他们希望index.do成为主页。 或者,也常见的是index.jsp,其中* .jsp被映射到JspServlet。

这里是事情得到乐趣的地方。 所以,让我们说你的欢迎文件是index.jsp,index.do。

Tomcat(IIRC)正在做什么是首先遍历欢迎文件列表寻找该名称的资源。

然后它会做第二遍寻找匹配的映射。 所以如果在欢迎列表中指定了index.jsp并且映射了* .jsp。 然后tomcat将尝试转发到index.jsp,你会得到一个404。

所以我会猜测你有一个servlet映射和欢迎文件重叠。 而该servlet的行为不支持GET。 (因此405)

如果您的项目使用v2.2的dynamicWeb模块,则需要在WebContent中的web.xml(例如:index.html)中显式创build至less一个文件(可以是空html文件)。