单Tomcat部署多项目的启动顺序控制问题

问题原因

很多2B的项目当初设计的时候都是按照SAAS模式来设计的,但是推广运营的时候,发现很多企业并不接受SAAS模式,特别是大企业更希望可以私有化部署,可以保证数据的安全性。所以就需要对原有的微服务进行私有化部署。

问题分析

原本的微服务设计,对于运维的复杂度提高非常多,如果要私有化部署需要考虑成本、复杂度问题。所以需要做大量的减法,因为甲方就会给你一台服务器。所以基于部署资源情况,期望所有的微服务部署到一个tomcat中。那么分析下URL如下:
https://www.jianshu.com:80/writer
协议://Domain域名:Port端口/Path路径
通过分析Tomcat支持通过Path、Port、Domain来部署多应用

问题解决

方案一:Path路径来部署

通过Path路径来部署,控制启动顺序的方式如下:
1、server.xml 的 Context 配置启动。
2、conf\Catalina\localhost 下的 Context 配置启动,如果需要/访问,请取名为ROOT.xml。
3、webapps下的 启动。

方案二:domain的方式部署

通过domain的方式部署,无法控制启动顺序。

方案三:Port的方式部署

通过Port的方式部署,顺序控制灵活,根据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>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容