darkpoon 发表于 2017-2-9 11:03:46

tomcat同时部属多个项目并且用不同的端口进行访问

  前一段时间在工作中碰到了这样一个需求 就是在同一个tomcat服务器下部署多个项目并且要用不同的端口进行访问, 研究之后终于可以部署成功了,在这里与大家分享一下,如有不对的地方还请高人指点

修改tomcat的conf目录下的server.xml配置文件 里边有一个<service>...</service>节点,如下:

[*]<Service name="Catalina">
[*]    <Connector port="8080" protocol="HTTP/1.1"
[*]               connectionTimeout="20000"
[*]               redirectPort="443"
[*]               emptySessionPath="true" />
[*]    <Connector port="443"
[*]                      protocol="org.apache.coyote.http11.Http11NioProtocol"
[*]               SSLEnabled="true"
[*]               maxThreads="150"
[*]               scheme="https"
[*]               secure="true"
[*]               emptySessionPath="true"
[*]                              keystoreFile="conf/.keystore"
[*]               keystorePass="123qwe"
[*]               clientAuth="false"
[*]               sslProtocol="TLS" />
[*]    <Engine name="Catalina" defaultHost="localhost">
[*]      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
[*]             resourceName="UserDatabase"/>
[*]      <Host name="localhost"  appBase="webapps"
[*]            unpackWARs="true" autoDeploy="true"
[*]            xmlValidation="false" xmlNamespaceAware="false"
[*]            errorReportValveClass="com.captech.catalina.valves.XmlErrorReportValve">
[*]      </Host>
[*]    </Engine>
[*]  </Service>

复制代码
  这个配置文件其实是可以有多个<service>...</service>节点,想要增加多个部署目录只要写多个service节点就可以了 不过要注意以下几点:
1. service节点的name属性 同一个配置文件中不能使用相同的名称
2. 端口的配置, 一定要注意端口不能互相冲突, 否则会报错
3. 在Host节点下有这样一个属性 appBase="webapps" 这里的appBase就是你项目的部署目录,默认为webapps, 当你增加多个service节点的时候 这里也要改成对项目相对映的目录.这个目录下的项目访问端口就是当前service节点下配置的端口.
以下是配置好的完整内容:

[*]<Service name="Catalina">
[*]    <Connector port="8080" protocol="HTTP/1.1"
[*]               connectionTimeout="20000"
[*]               redirectPort="443"
[*]               emptySessionPath="true" />
[*]    <Connector port="443"
[*]                      protocol="org.apache.coyote.http11.Http11NioProtocol"
[*]               SSLEnabled="true"
[*]               maxThreads="150"
[*]               scheme="https"
[*]               secure="true"
[*]               emptySessionPath="true"
[*]                              keystoreFile="conf/.keystore"
[*]               keystorePass="123qwe"
[*]               clientAuth="false"
[*]               sslProtocol="TLS" />
[*]    <Engine name="Catalina" defaultHost="localhost">
[*]      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
[*]             resourceName="UserDatabase"/>
[*]      <Host name="localhost"  appBase="webapps"
[*]            unpackWARs="true" autoDeploy="true"
[*]            xmlValidation="false" xmlNamespaceAware="false"
[*]            errorReportValveClass="com.captech.catalina.valves.XmlErrorReportValve">
[*]      </Host>
[*]    </Engine>
[*]  </Service>
[*]  
[*]  <Service name="Catalina1">
[*]    <Connector port="8081" protocol="HTTP/1.1"
[*]               connectionTimeout="20000"
[*]               redirectPort="444"
[*]               emptySessionPath="true" />
[*]    <Connector port="444"
[*]                      protocol="org.apache.coyote.http11.Http11NioProtocol"
[*]               SSLEnabled="true"
[*]               maxThreads="150"
[*]               scheme="https"
[*]               secure="true"
[*]               emptySessionPath="true"
[*]                              keystoreFile="conf/.keystore"
[*]               keystorePass="123qwe"
[*]               clientAuth="false"
[*]               sslProtocol="TLS" />
[*]    <Engine name="Catalina1" defaultHost="localhost">
[*]      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
[*]             resourceName="UserDatabase"/>
[*]      <Host name="localhost"  appBase="webapps1"
[*]            unpackWARs="true" autoDeploy="true"
[*]            xmlValidation="false" xmlNamespaceAware="false"
[*]            errorReportValveClass="com.captech.catalina.valves.XmlErrorReportValve">
[*]      </Host>
[*]    </Engine>
[*]  </Service>

复制代码
  如上配置  端口8081访问部署目录为webapps1下的项目,8080端口访问的则是webapps下的项目.还要注意一点 就是这个appBase的指定目录是什么 就要在tomcat根目录下建立一个同名的文件夹 用于存放项目
页: [1]
查看完整版本: tomcat同时部属多个项目并且用不同的端口进行访问