如何在Tomcat 6中定义应用程序的上下文路径?

时间:2012-04-06 11:56:33

标签: tomcat tomcat6

应用程序部署在Tomcat6上的上下文路径“/ environame / appname”。

<Context
...
        path="/environame/appname"
...
</Context>

但我无法使用以下网址访问我的应用程序:

  

http://localhost:8080/environame/appname

我必须在“environame”和“appname”之间使用下划线而不是斜线。

  

http://localhost:8080/environame_appname

Tomcat 5的工作方式不同 对于Tomcat 5,URL中不会有下划线:

  

http://localhost:8080/environame/appname

我应该更改应用程序或Tomcat 6的配置以使用斜杠而不是“environame”和“appname”之间的下划线来访问我的应用程序?

更新:

  

路径此Web应用程序的上下文路径,与每个请求URI的开头匹配,以选择相应的   Web应用程序进行处理。一个中的所有上下文路径   特定主机必须是唯一的。如果指定的上下文路径   空字符串(“”),您正在定义默认的Web应用程序   此主机将处理未分配给其他的所有请求   上下文。

     

除静态外,不得设置此字段的值   在server.xml中定义一个Context,因为它将从中推断出来   用于.xml上下文文件或docBase的文件名。

http://tomcat.apache.org/tomcat-5.5-doc/config/context.html

我们将上下文xml文件存储到$ CATALINA_HOME / conf / Catalina / localhost / environame_appname.xml文件中。 Tomcat 5.0.28使用Context元素的path属性 Tomcat 6使用上下文xml文件的名称 是否可以更改配置以使用路径属性而不是xontext xml文件的名称?

解答:
有一个错误bug#46713

  

如果在context xml中的context标签内设置了path属性,那么   被忽略了。而是将路径设置为“/”+。虽然很好,即使用'/'也可以   通过将'/'替换为'#'来编码文件名,这是非常的   混淆是简单地忽略现有的路径属性。

所以,我只需要将我的上下文xml文件重命名为environame#appname.xml。

1 个答案:

答案 0 :(得分:0)

很久以前(我认为是tomcat 4)有可能部署一个名为environame_appname.war的war存档,而tomcat通过url environame / appname /来提供它...我不确定这是否仍然存在工作(并没有时间测试它)。 Tomcat用斜杠和下划线做了一些替换。

实现目标的另一种方法是使用apache和mod_proxy,mod_proxy_ajp(或mod_proxy_html)和mod_rewrite。然后你可以在tomcat(app01和app02)中定义两个应用程序,定义一个代理规则,将请求转发到/ app01(resp / app02)到你的tomcat,以及一个重写规则,它将对/ env01 / app的请求重写为/ app01和/ env02 / app02到/ app02。