Linux环境.
- 假设我的war包名为project.war
- 发布到tomcat的webapps下,
- 到bin目录下执行./startup.sh启动命令
- 之后webapps目录下出现ROOT文件夹和project文件夹.
- 而且启动时看logs/catalina.out感觉项目启动了俩次.
- 是我的server.xml哪里配置错了吗?还是本身就应该这样呢?
下面是server.xml的配置内容
<?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 "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>
参考链接
参考链接2
上面俩个链接很好的解决了我的问题.
关键之处,就在下面的代码配置中
appBase下面的所有项目都会被部署 所以设置
autoDeploy="false" deployOnStartup="false"
如果不指定context,那么确实会只解压部署一次,但是解压完的项目名并不是ROOT这个特殊文件夹,
所以访问项目的时候得带上项目名.这不是我想要的效果.
context中得path指定为""那就是默认的ROOT,docBase指定项目文件夹或war文件的位置.
不知道我表述的是否清楚,遇到同样问题的朋友可以参考上面的俩个链接.