Как запустить разные приложения на одном экземпляре Tomcat за разными портами? - PullRequest
56 голосов
/ 11 января 2012

В настоящее время у меня есть 2 веб-приложения app1 и app2, работающие на Tomcat 6:

Я хочу настроить Tomcat таким образом, чтобы он работал в корневом контексте за отдельными портами:

Что нужно сделать?

Ответы [ 5 ]

54 голосов
/ 11 января 2012

Я думаю, вы можете настроить, что в вашем 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>
9 голосов
/ 11 января 2012

Другой пример добавления разъемов:

<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 голосов
/ 11 января 2012

Помимо запуска двух экземпляров Tomcat и использования приложения ROOT (о котором уже говорилось, и который является немного плохим и неэффективным решением), вы можете достичь этого с помощью Apache + Tomcat. Настройка apache для прослушивания обоих портов и переадресации по IP: порт для разных приложений 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>
0 голосов
/ 11 января 2012

Tomcat работает на портах, указанных в:

$CATALINA_HOME/conf/server.xml

Как писал JB Nizet, настройте два разных экземпляра tomcat и соответствующим образом настройте значение порта server.xml.

$ CATALINA_HOME / 8081-кот / конф / server.xml:

<?xml version='1.0' encoding='utf-8'?>
 <Server port="8081" ... >
  ...
 </Server>

$ CATALINA_HOME / 8082-кот / конф / server.xml:

<?xml version='1.0' encoding='utf-8'?>
 <Server port="8082" ... >
  ...
 </Server>
0 голосов
/ 11 января 2012

Используйте два разных экземпляра Tomcat.

EDIT:

Или настройте Tomcat, как описано в ответе на этот вопрос: Справка по настройке Tomcat: несколько портов не отвечают

...