單Tomcat部署多項目的啟動順序控制問題

問題原因

很多2B的項目當(dāng)初設(shè)計的時候都是按照SAAS模式來設(shè)計的,但是推廣運營的時候,發(fā)現(xiàn)很多企業(yè)并不接受SAAS模式,特別是大企業(yè)更希望可以私有化部署,可以保證數(shù)據(jù)的安全性。所以就需要對原有的微服務(wù)進(jìn)行私有化部署。

問題分析

原本的微服務(wù)設(shè)計,對于運維的復(fù)雜度提高非常多,如果要私有化部署需要考慮成本、復(fù)雜度問題。所以需要做大量的減法,因為甲方就會給你一臺服務(wù)器。所以基于部署資源情況,期望所有的微服務(wù)部署到一個tomcat中。那么分析下URL如下:
http://www.itdecent.cn:80/writer
協(xié)議://Domain域名:Port端口/Path路徑
通過分析Tomcat支持通過Path、Port、Domain來部署多應(yīng)用

問題解決

方案一:Path路徑來部署

通過Path路徑來部署,控制啟動順序的方式如下:
1、server.xml 的 Context 配置啟動。
2、conf\Catalina\localhost 下的 Context 配置啟動,如果需要/訪問,請取名為ROOT.xml。
3、webapps下的 啟動。

方案二:domain的方式部署

通過domain的方式部署,無法控制啟動順序。

方案三:Port的方式部署

通過Port的方式部署,順序控制靈活,根據(jù)server的排序啟動。

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

    <Engine name="app1" 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">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
        <Context docBase="/app/app1" path="" reloadable="true"/> 
      </Host>

    </Engine>
  </Service>

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

    <Engine name="app2" 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">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
        <Context docBase="/app/app2" path="" reloadable="true"/> 
      </Host>

    </Engine>
  </Service>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容