web-dev-qa-db-fra.com

Comment exécuter différentes applications sur une seule instance Tomcat derrière différents ports?

Actuellement, j'ai 2 applications Web app1 et app2 s'exécutant sur Tomcat 6:

Je souhaite configurer Tomcat pour qu'il s'exécute dans un contexte racine derrière des ports distincts:

Ce qui doit être fait?

57
DeeStackOverflow

Je pense que vous pouvez configurer cela dans vous server.xml fichier et mettre 2 services:

<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>
54
Benoit Marilleau

Un autre exemple d’ajout de connecteurs:

<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.)

Extrait de: http://www.coderanch.com/t/84172/Tomcat/listen-multiple-ports

Je recommande de lire le fil de discussion entier, car il parle de performances élevées avec cette configuration, ainsi que de possibles conditions de concurrence.

9
speeves

En plus d’exécuter deux instances de Tomcat et d’utiliser l’application ROOT (ce qui a déjà été dit, c’est une solution un peu médiocre et peu efficace), vous pouvez y parvenir en utilisant Apache + Tomcat. Configurer Apache pour écouter les deux ports et le transférer par IP: Port vers différentes applications Tomcat. Mais vous avez besoin d'un autre port por Tomcat!

Configuration 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>

ou

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>
2
Aleja_Vigo

Utilisez deux instances différentes de Tomcat.

MODIFIER:

Ou configurez Tomcat comme expliqué dans la réponse à cette question: Aide à la configuration de Tomcat: plusieurs ports ne répondent pas

0
JB Nizet

Tomcat fonctionne sur les ports spécifiés dans:

$CATALINA_HOME/conf/server.xml

Comme l'a écrit JB Nizet, configurez deux instances différentes de Tomcat et configurez correctement la valeur du port 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>
0
speeves