目前我在Tomcat 6上运行了2个Web应用程序app1和app2:
我想配置Tomcat,以便它们在不同端口后面的根上下文中运行:
需要做什么?
答案 0 :(得分:53)
我认为你可以在 server.xml 文件中配置它并放置2个服务:
<Service name="app1">
<Connector port="8081" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="app1"
unpackWARs="true" autoDeploy="true">
</Host>
</Engine>
</Service>
<Service name="app2">
<Connector port="8082" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="app2"
unpackWARs="true" autoDeploy="true">
</Host>
</Engine>
</Service>
答案 1 :(得分:9)
添加连接器的另一个例子:
<Service name="reciver">
<Connector port="8080" maxHttpHeaderSize="8192" maxThreads="10"
enableLookups="false" acceptCount="100"
connectionTimeout="10000" disableUploadTimeout="true"
useBodyEncodingForURI="true"/>
<Engine name="reciver" defaultHost="localhost" jvmRoute="host1">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase" />
<Host name="localhost" appBase="webapps" unpackWARs="true"
autoDeploy="false" xmlValidation="false"
xmlNamespaceAware="false">
<Context docBase="browser" path="/browser" reloadable="false"/>
</Host>
</Engine>
</Service>
<Service name="reciver2">
<Connector port="8081" maxHttpHeaderSize="8192" maxThreads="10"
enableLookups="false" acceptCount="1"
connectionTimeout="10000" disableUploadTimeout="true"
useBodyEncodingForURI="true" proxyName="example.pt" proxyPort="80"/>
<Engine name="reciver2" defaultHost="example_app" jvmRoute="host2">
<Host name="example_app" appBase="test_app/example_app" unpackWARs="true"
autoDeploy="false" xmlValidation="false"
xmlNamespaceAware="false">
<Context docBase="example_app" path="/example_app" reloadable="false"/>
</Host>
</Engine>
</Service>
(...Repeted 2 more times.)
取自:http://www.coderanch.com/t/84172/Tomcat/listen-multiple-ports
我建议阅读整个帖子,因为它讨论了使用此配置的性能命中,以及可能的竞争条件。
答案 2 :(得分:2)
除了运行两个Tomcat实例并使用ROOT应用程序(已经说过并且是一个有点差和无效的解决方案)之外,您可以使用Apache + Tomcat实现它。配置apache以侦听两个端口并通过IP转发:端口到不同的Tomcat应用程序。但是你需要一个不同的端口来tomcat!
Apache配置
listen 8080,8081
...
<VirtualHost *:8080>
ServerName localhost
ProxyPass / http://localhost:8888/app1
ProxyPassReverse / http://localhost:8080/app1
</VirtualHost>
<VirtualHost *:8081>
ServerName localhost
ProxyPass / http://localhost:8888/app2
ProxyPassReverse / http://localhost:8080/app2
</VirtualHost>
或
listen 80,81
...
<VirtualHost *:80>
ServerName localhost
ProxyPass / http://localhost:8080/app1
ProxyPassReverse / http://localhost:8080/app1
</VirtualHost>
<VirtualHost *:81>
ServerName localhost
ProxyPass / http://localhost:8080/app2
ProxyPassReverse / http://localhost:8080/app2
</VirtualHost>
答案 3 :(得分:0)
答案 4 :(得分:0)
Tomcat在以下指定的端口上运行:
$CATALINA_HOME/conf/server.xml
正如JB Nizet所写,设置两个不同的tomcat实例,并适当地配置端口值server.xml。
$ CATALINA_HOME / Tomcat的8081 / CONF / server.xml中:
<?xml version='1.0' encoding='utf-8'?>
<Server port="8081" ... >
...
</Server>
$ CATALINA_HOME / Tomcat的8082 / CONF / server.xml中:
<?xml version='1.0' encoding='utf-8'?>
<Server port="8082" ... >
...
</Server>
答案 5 :(得分:-1)
我使用的是IntelliJ,我在application.properties文件中添加了一行,并且行得通: 对于Web应用程序1的项目,添加:server.port = 8081 对于Web应用程序2的项目,添加:server.port = 8082