2010-12-06 16 views
11

¿Cómo implementar la aplicación web mutiple java en tomcat que se ejecutará en diferentes puertos? - Cómo hacer ajustes para que se ejecute una aplicación web diferente en puertos diferentes - ¿Qué se necesita hacer para lograr esto?¿Cómo implementar la aplicación web mutiple en tomcat que se ejecutará en diferentes puertos?

+0

¿Alguna razón particular por la que necesita puertos diferentes? – JoseK

+0

http://stackoverflow.com/questions/8823290/how-to-run-different-apps-on-single-tomcat-instance-rehind-different-ports – sab

Respuesta

4

Será mejor que tenga varias instalaciones de tomcat. Sería más fácil.

Supongo que puede registrar múltiples <Connector> s en , y luego filtrar los contextos, pero eso es tedioso y suena mal.

+2

Quiero saber cómo hacerlo en un solo servidor Tomcat ..no quiero múltiples servidores. – LetsSyncUp

+3

¿Cuáles son las razones para elegir esa opción, en lugar de tener varios servidores? – Bozho

6

Deberá configurar otro servicio en su archivo server.xml (tomcat_home/conf). Si usted no ha cambiado de archivos del servidor, ya debería haber una llamada Catalina (estoy usando Tomcat 5.5, es posible que tenga algo ligeramente diferente dependiendo de la versión)

<Service name="Dev2"> 
    <Connector port="8090" maxHttpHeaderSize="8192" 
       maxThreads="150" minSpareThreads="25" maxSpareThreads="75" 
       enableLookups="false" redirectPort="8443" acceptCount="100" 
       connectionTimeout="20000" disableUploadTimeout="true" /> 
    <Connector port="8092" 
       enableLookups="false" redirectPort="9443" protocol="AJP/1.3" /> 

    <Engine name="Dev2" defaultHost="MyDev"> 
     <Realm className="org.apache.catalina.realm.UserDatabaseRealm" 
      resourceName="UserDatabase"/> 
     <Host name="MyDev" appBase="webapps" 
     unpackWARs="true" autoDeploy="true" 
     xmlValidation="false" xmlNamespaceAware="false"> 
     </Host> 
    </Engine> 
</Service> 

en cuenta que los nombres han cambiado de Catalina a disp2, y localhost a MyDev. Cambie estos a lo que parezca adecuado para su aplicación. Los puertos y conectores también han cambiado. Una vez que se configura el nuevo servicio, debe implementar aplicaciones en el servicio/puerto adecuado. Esto se logra mediante el uso de archivos XML bajo (Ver Virtual Hosting)

Tomcat_Home/conf/Catalina/localhost/ 

y

Tomcat_Home/conf/Dev2/MyDev/ 

para los puertos respectivos, que se está configurando

En este punto, todo lo que tiene que hacer es añadir unos pocos archivos más para dirigir el Servicio a su aplicación. A modo de ejemplo, bajo Tomcat_Home/conf/Dev2/MyDev/ tengo un archivo llamado Another.xml Este archivo contiene la siguiente

<Context path="/" docBase="C:/to_delete" debug="10" crossContext="false"> 
</Context> 

Ahora puede acceder a la nueva aplicación que utiliza la dirección web http://127.0.0.1:8090/Another Si trato de acceder a este usando mi puerto predeterminado de 8080, aparece un error ya que la aplicación no se implementó para ese puerto determinado.

Pocas cosas a tener en cuenta acerca de esta configuración. Si usa VirtualVM para mirar la aplicación, notará que comparten la misma ID de proceso. Por lo tanto, debes ser extremadamente cuidadoso con tus recursos. Utilizarán el mismo espacio de Heap, y todos los hilos se mostrarán en la misma lista. Si ha iniciado sesión en sus aplicaciones (es decir, Log4j), asegúrese de tener una opción para mostrar qué hilo estaba haciendo el trabajo, ya que puede ser difícil decir de lo contrario de qué puerto/aplicación procedería.

Como Bozho ya ha señalado, puede ser más fácil simplemente tener dos instancias de ejecución de Tomcat en lugar de un solo servidor en múltiples puertos.

4

Lo siento por hacer de esto una respuesta. No veo ninguna habilidad para comentar sobre esta pregunta. Mabye, la pregunta es demasiado antigua o mi reputación no es lo suficientemente alta.

Sin embargo, he estado investigando la misma pregunta yo mismo. Tendrá que saber mucho más sobre cómo Tomcat, los servidores http y el entorno del sistema Java usan la misma instancia. He leído donde también es MUY lento también.

La mejor apuesta son las instancias separadas.Hay dos maneras bastante fácil de hacer que : A/Para Ubuntu, se puede usar SVN para conseguir este script: http://ubuntuforums.org/showthread.php?t=1211517 http://code.google.com/p/tomcat-linux/

B/su cuenta, por las instancias de usuario. http://brian.pontarelli.com/2007/09/17/multiple-tomcat-instances-on-ubuntu/

El último de ellos fue escrito para Tomcat 5.5, pero probablemente es adaptable a Tomcat 6

Sin embargo, las mejores direcciones para varias instancias de JVM para la última Tomcat en Linux está aquí: http://www.puschitz.com/InstallingTomcat.html

+0

Welllll, el comando 'fuente' no funciona en Ubuntu en un entorno 'su'. Además, el enlace 'puschitz.com' que puse arriba requiere colocar un elemento 'Contexto' en el archivo server.xml. Tengo un servidor Tomcat6 en funcionamiento y no hay archivos server.xml en mi computadora con ese elemento. Y no puedo hacer que el enfoque de puschitz.com funcione por esas razones. Así que retrocedí en ese enlace. Todavía me estoy mirando ahora. – Dennis

2

Puede usar mod-proxy en apache para redirigir el puerto personalizado al estándar.

mod proxy

Cuestiones relacionadas