使用tomcat加载两次Servlet上下文



当我在conf/server.xml中指定多个主机标记时,servlet上下文将加载两次。它是基于spring的web应用程序。我对弹簧ContextLoader进行了加长和定制。

My server.xml (tomcat 7.0.22)

                     <Host name="localhost"  appBase="webapps"
                        unpackWARs="true" autoDeploy="true">
                   <Valve className="org.apache.catalina.valves.AccessLogValve"    directory="/mnt/databank/logs/tomcat7"  
                   prefix="localhost_access_log." suffix=".txt"
                   pattern="%h %l %u %t &quot;%r&quot; %s %b" resolveHosts="false"/>
   </Host>
   <Host name="domain.com" appBase="webapps/Domain"
                        unpackWARs="true" autoDeploy="true"
                        >
                        <Context path="" docBase="."/>
          <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/mnt/databank/logs/tomcat7"  
                   prefix="localhost_access_log." suffix=".txt"
                   pattern="%h %l %u %t &quot;%r&quot; %s %b" resolveHosts="false"/>
           <Context docBase="/mnt/databank/posters" path="/Domain/posters"/>
           <Context docBase="/mnt/databank/advertisement" path="/Domain/advertisement"/>
           <Context docBase="/mnt/databank/star" path="/Domain/star"/>
   </Host>
   <Host name="www.domain.com" appBase="webapps/Redirecter"
                        unpackWARs="true" autoDeploy="true">
                        <Context path="" docBase="."/>
           <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/mnt/databank/logs/tomcat7"  
           prefix="localhost_access_log." suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" resolveHosts="false"/>
   </Host>

我在ContextLoader中添加了一个日志,它触发了两次,如下所示,

2011-10-21 12:11:22,933 ERROR [Thread-2] c.i.b.u.DomainUtilInitializer [DomainUtilInitializer.java:38] Init Method Triggered
2011-10-21 12:11:46,621 ERROR [Thread-15] c.i.b.u.DomainUtilInitializer [DomainUtilInitializer.java:38] Init Method Triggered

这似乎应该是预期的行为—您已经将Tomcat配置为运行应用程序两次,每台主机运行一次。你想要什么?如果您希望web应用程序的单个实例运行,那么您不应该像这样配置两个<host>s -我相信您可以为单个/默认<Host>添加主机名别名。

最新更新