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

问题描述 投票:1回答:1

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

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

更新:

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

回答: 有一个bug bug#46713

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

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

tomcat tomcat6
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。

© www.soinside.com 2019 - 2024. All rights reserved.