Как запускать разные приложения на одном экземпляре Tomcat за разными портами?
в настоящее время у меня есть 2 веб-приложения app1 и app2 работает на Tomcat 6:
- app1 on http://localhost:8080/app1
- app2 on http://localhost:8080/app2
Я хочу настроить Tomcat так, чтобы они запускались в корневом контексте за отдельными портами:
- app1 on http://localhost:8081
- app2 по http://localhost:8082
Что нужно делать?
5 ответов:
Я думаю, что вы можете настроить, что вы сервер.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>
еще один пример добавления соединителей:
<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
Я рекомендую прочитать весь поток, так как он говорит о производительности хитов с этой конфигурацией, а также возможные условия гонки.
помимо запуска двух экземпляров Tomcat и использования корневого приложения (что уже было сказано и является немного плохим и неэффективным решением) вы можете достичь этого с помощью Apache + Tomcat. Настройка apache для прослушивания обоих портов и переадресации по IP:Port в разные приложения Tomcat. Но вам нужен другой порт por 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>
Tomcat работает на портах, указанных в:
$CATALINA_HOME/conf/server.xml
как писал JB Nizet, установите два разных экземпляра tomcat и настройте сервер значений портов.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>
используйте два разных экземпляра Tomcat.
EDIT:
или настроить Tomcat, как описано в ответе на этот вопрос:справка по конфигурации Tomcat: несколько портов не отвечают