鍍金池/ 問答/Java  Linux/ web程序war包發(fā)布到tomcat的webapps下會(huì)解壓倆次?

web程序war包發(fā)布到tomcat的webapps下會(huì)解壓倆次?

Linux環(huán)境.


  1. 假設(shè)我的war包名為project.war
  2. 發(fā)布到tomcatwebapps下,
  3. bin目錄下執(zhí)行./startup.sh啟動(dòng)命令
  4. 之后webapps目錄下出現(xiàn)ROOT文件夾和project文件夾.
  5. 而且啟動(dòng)時(shí)看logs/catalina.out感覺項(xiàng)目啟動(dòng)了倆次.
  6. 是我的server.xml哪里配置錯(cuò)了嗎?還是本身就應(yīng)該這樣呢?
下面是server.xml的配置內(nèi)容
<?xml version='1.0' encoding='utf-8'?>
<Server port="18003" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JasperListener" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>

  <Service name="Catalina">
    <Connector port="18082" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector port="18011" protocol="AJP/1.3" redirectPort="8443" />
    <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">
        <Context path="" docBase="../webapps/projectName"
                 debug="0" reloadable="true" crossContext="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>
回答
編輯回答
孤島

參考鏈接

參考鏈接2

上面?zhèn)z個(gè)鏈接很好的解決了我的問題.
關(guān)鍵之處,就在下面的代碼配置中

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="false" deployOnStartup="false">
            <Context path="" docBase="../webapps/project"
                 debug="0" reloadable="false" crossContext="true" />

appBase下面的所有項(xiàng)目都會(huì)被部署 所以設(shè)置autoDeploy="false" deployOnStartup="false"
如果不指定context,那么確實(shí)會(huì)只解壓部署一次,但是解壓完的項(xiàng)目名并不是ROOT這個(gè)特殊文件夾,
所以訪問項(xiàng)目的時(shí)候得帶上項(xiàng)目名.這不是我想要的效果.
context中得path指定為""那就是默認(rèn)的ROOT,docBase指定項(xiàng)目文件夾或war文件的位置.
不知道我表述的是否清楚,遇到同樣問題的朋友可以參考上面的倆個(gè)鏈接.

2018年2月13日 04:37
編輯回答
尛憇藌

你從哪里判斷他解壓了兩次?

2017年10月20日 16:34