Tomcat与主机,上下文和webapp双重实例有关的问题

时间:2018-12-14 13:47:58

标签: java tomcat alias server.xml

  

/ ...解释时间太长且不清楚... /

以另一种方式,我搜索仅用(一个或多个)域名(然后是www.my_domain.it而不是www.my_domain.it/appname)访问网站的正确方法,所有这些都必须指向Web应用程序的相同实例(这样,从您访问的任何域名中,将始终显示相同的运行时数据)。

是的,是的,我已经将WAR文件部署在tomcat / webapps文件夹中,现在,正确编辑conf / server.xml以获取上述结果,是否与以下之一相对应?

1。

<Host name="my_domain.eu" appBase="webapps" unpackWARs="true" autoDeploy="true">
            <Alias>www.my_domain.eu</Alias>
            <Alias>www.my_domain.it</Alias>
            <Alias>www.my_domain_2.it</Alias>
            <Context path="" docBase="appname" debug="0" privileged="true" />
            ...
    </Host>

2。

<Host name="my_domain.eu" appBase="webapps/appname" unpackWARs="true" autoDeploy="true">
                <Alias>www.my_domain.eu</Alias>
                <Alias>www.my_domain.it</Alias>
                <Alias>www.my_domain_2.it</Alias>
                <Context path="" docBase="appname" debug="0" privileged="true" />
                ...
        </Host>

3。

<Host name="my_domain.eu" appBase="webapps/appname" unpackWARs="true" autoDeploy="true">
                <Alias>www.my_domain.eu</Alias>
                <Alias>www.my_domain.it</Alias>
                <Alias>www.my_domain_2.it</Alias>
                <Context path="/appname" docBase="appname" debug="0" privileged="true" />
                ...
        </Host>

4。

<Host name="my_domain.eu" appBase="webapps/appname" unpackWARs="true" autoDeploy="true">
                    <Alias>www.my_domain.eu</Alias>
                    <Alias>www.my_domain.it</Alias>
                    <Alias>www.my_domain_2.it</Alias>
 <!-- without context definition -->
                    ...
            </Host>

否则,正确的解决方案是什么? 谢谢大家!

1 个答案:

答案 0 :(得分:1)

我假设您在webapps目录中拥有应用程序的实例之一,该应用程序从该实例中自动以其名称进行部署。借助Context元素,您可以从文件系统中的任何位置部署应用程序。

但是,最佳做法是不使用此信息来编辑server.xml,而是在conf / hostname中创建单个context.xml文件,或者仅将其部署到主机的webapps目录中。如果要更改任何内容,则在server.xml中配置的任何内容都需要重新启动服务器。可以在运行时获取server.xml外部的配置,而无需重新启动。

编辑:我先前的答案可能不清楚:

使用Context元素进行配置时:我建议不要使用webapps目录来部署您的webapp。只需指向您实际部署Web应用程序的目录即可。这将确保即使上下文定义指向webapps/appname,也不会确保上下文从/appname部署为/的应用。

另一种方法是在Web应用程序中部署名称为ROOT的应用程序-这是将Web应用程序实际部署为/的快捷方式(注意:目录名或文件名的全部大写( ROOT.war),即使我在Windows上也没记错)。但是恕我直言,如果您决定使用上下文定义来确定路径(但部署在 appbase webapps之外),还是部署在 appbase 中(例如webapps)部署。

嘲笑appbase指向webapps中的某个目录将确保您激怒任何希望将webapps目录中的应用程序部署到Tomcat的人。这是浪费大量时间调试幻影问题的简便方法,请不要这样做。