tomcat专题Tomcat

Tomcat 多项目部署

2017-12-14  本文已影响49人  泥坑里的一块泥

1、servlet.xml中 Context标签下参数的含义

<Context path="/xxx" docBase="D:\xxx" debug="0" reloadable="true" crossContext="true" />

  • path 指出你的访问路径
  • docBase指出你的存放路径
  • debug 为设定debug的等级0提供最少的信息,9提供最多的信息
  • reloadable=true时 当web.xml或者class有改动的时候都会自动重新加载不需要从新启动服务(建议正式发布项目时改为false)
  • crosscontext="true"表示配置的不同context共享一个session

2、一个tomcat发布多个项目

  • 在<Service name="Catalina">...</Service>标签后面添加新的service
    并且要重新命名<Service name="Catalina8081"><Engine name="Catalina8081" defaultHost="localhost"><Host name="localhost" appBase="webapps8081"三处的名字
  • 在webapps同目录下新建上一步重命名的文件夹 webapps8081
    并将原始webapps内的所有文件考进去
<Service name="Catalina8081">
    <Connector port="8081" protocol="HTTP/1.1"
              connectionTimeout="20000"
              redirectPort="8443" />
   <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

   <Engine name="Catalina8081" defaultHost="localhost">
     <Realm className="org.apache.catalina.realm.LockOutRealm">
       <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
              resourceName="UserDatabase"/>
     </Realm>

     <Host name="localhost"  appBase="webapps8081"
           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" />

     </Host>
   </Engine>
 </Service>
  • 打开server.xml
  • 添加如下代码
<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <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 path="/XX" docBase="webapps" debug="0" reloadable="true" crossContext="true" />
        <Context path="/yy" docBase="webapps8081" debug="0" reloadable="true" crossContext="true" />
      </Host>

3、发现问题,解决问题

1、比较容易遇到的一个问题,tomcat正常启动,但是只能打开一个项目,另一个则报404错误

可能的解决方法:

  • 通常是log4j或者logback导致的,因为它们保存日志的路径一样,只需要修改路径
  • 修改web.xml文件,添加webAppRootKey
1、例如 logback  修改路径${catalina.home}为${catalina8081.home}
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--See http://logback.qos.ch/manual/appenders.html#RollingFileAppender-->
        <!--and http://logback.qos.ch/manual/appenders.html#TimeBasedRollingPolicy-->
        <!--for further documentation-->
        <file>${catalina8081.home}/logs/example_log/PurePro_</file>
        <encoder>
            <pattern>[example_sys] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${catalina8081.home}/logs/example_log/PurePro_.%d{yyyy-MM-dd'.log'}</fileNamePattern>
        </rollingPolicy>
    </appender>
2、修改web.xml,在最后加入下面代码
<context-param>
    <param-name>webAppRootKey</param-name>
    <param-value>mos_ms.root</param-value>
  </context-param>
上一篇下一篇

猜你喜欢

热点阅读