首页 文章

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

提问于
浏览
1

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

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

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

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”之间的下划线来访问我的应用程序?

UPDATE:

path此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文件的名称?

ANSWER:
有个bug bug#46713

如果在上下文xml中的context标记内设置了path属性,则忽略该属性 . 而是将路径设置为“/” . 虽然很好,即使使用'/'编码也可以通过将'/'替换为'#'来编码在文件名中,但是简单地忽略现有路径属性是非常令人困惑的 .

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

1 回答

  • 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 .

相关问题