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