场景介绍
使用eclipse+tomcat开发web项目,一个工作空间下的多个项目部署在一个tomcat下。
单个项目
项目名:sesa
eclipse中的结构如下图:
其中server.xml的关键内容如下:
此时实际部署路径的文件结构如下:
默认情况下,项目部署在项目所在工作空间中的.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps下面
多个项目
在eclipse中在建立一个项目,项目名字:sesb
加入到tomcat服务中,然后编辑server.xml文件。
<Service name="Catalina">
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
<Engine defaultHost="localhost" name="Catalina">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm>
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log" suffix=".txt"/>
<Context docBase="sesa" path="/sesa" reloadable="true" source="org.eclipse.jst.jee.server:sesa"/>
</Host>
</Engine>
</Service>
<Service name="Catalina2">
<Connector connectionTimeout="20000" port="8081" protocol="HTTP/1.1" redirectPort="8443"/>
<Engine defaultHost="localhost" name="Catalina2">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm>
<Host appBase="webapps2" autoDeploy="true" name="localhost" unpackWARs="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log" suffix=".txt"/>
<Context docBase="sesb" path="/sesb" reloadable="true" source="org.eclipse.jst.jee.server:sesb"/>
</Host>
</Engine>
</Service>
注意两个Service的不同,并且第二个项目端口改为了8081
启动服务
报错了~
原因是找不到第二个项目。
解决方法
把.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps下面的项目文件夹sesb拷贝到新生成的webapps2下,启动服务。
这样就可以分别访问两个项目了
http://localhost:8080/sesa
http://localhost:8081/sesb
BTW:tomcat启动多个项目不会有session冲突问题,但是websphere会。
解决办法:解决WebSphere下在同一个server部署多个应用时的session相同的问题