Tomcat  中部署多个应用,自定义应用的启动顺序

在Tomcat 中部署了多个应用,但这些应用之间是有依赖关系的,比如 A 应用依赖于Core 应用,B应用也依赖于Core应用,必须在Core 应用启动之后才能启动A应用,否则会报错,原因是在A 启动的时候会去调用Core 的API 去做一些事情,所以启动的顺序肯定不能颠倒,但通常用tomcat 都是将应用的war包放到 webapps 目录下,但如果将所有应用都放到这个目录下,完全没有办法控制应用的启动顺序,虽然网上有人说会根据应用的名称来排序启动,但更改名字也许并不是很好的办法,我也没测试,但我找到了另外一个方法来定义应用的启动顺序,就是更改tomcat安装目录conf目录下的service.xml 文件来实现, 看下面的修改 :
程序代码 程序代码

<Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

    <Connector
           port="8443" minSpareThreads="5"
           enableLookups="false" disableUploadTimeout="true"
           keepAliveTimeout="900000" maxKeepAliveRequests="-1"
           acceptCount="100"  maxThreads="200"
           scheme="https" secure="true" SSLEnabled="true"
           keystoreFile="conf/testserver.keystore" keystorePass="passphrase"
           clientAuth="true" sslProtocol="TLS"
           ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,
                    TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
                    TLS_DHE_DSS_WITH_AES_128_CBC_SHA"
           truststoreFile="conf/testtrust.keystore" truststorePass="passphrase" />

    <Engine name="Catalina" defaultHost="localhost">

      <Realm className="org.apache.catalina.realm.LockOutRealm">
      
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">        
        
      </Host>
    </Engine>    
  </Service>
  
  <Service name="yessafe">
    <Connector port="7080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

    <Connector port="7443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true" address="172.16.30.28"
               clientAuth="false" sslProtocol="TLS" sslEnabledProtocols="TLSv1.2,TLSv1.1,TLSv1"
               keystoreFile="/conf/YESsafeIDServer.keystore"
               keystorePass="iSprint@*sec"/>

    <Engine name="Catalina" defaultHost="localhost-yessafe">

      <Realm className="org.apache.catalina.realm.LockOutRealm">
    
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <Host name="localhost-yessafe"  appBase="webapps-yessafe"
            unpackWARs="true" autoDeploy="true">        
        
      </Host>
    </Engine>
  </Service>


从上面的定义可以看出,定义了两个 service: Catalina 与 yessafe ,他们分别代表部署在不同的端口,不同的部署文件夹,比如Catalina 是部署在 webapps 目录下的, 而yessafe  是部署在 webapps-yessafe 文件夹下的。


这样配置之后,你会发现,配置在webapps 里面的应用会先启动,而配置在 webapps-yessafe 里面的应用会在webapps 里面的应用启动完成之后才启动。这样就达到目的了。当然这是针对在同一个tomcat  里面需要有启动先后顺序的场景才适用。



除非申明,文章均为一号门原创,转载请注明本文地址,谢谢!
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: tomcat
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.