two how windows tomcat multiple-instances catalina

windows - how - setenv sh tomcat 8 location



Tomcat múltiples instancias simultáneamente (5)

Digamos que solo tiene una carpeta Tomcat ubicada en C: / apache-tomcat-7.0.39 , y que desea ejecutar dos instancias a partir de ella.

Asegúrese de que tiene el sistema CATALINA_HOME / conjunto de variables de usuario, y apuntando a C: / apache-tomcat-7.0.39

  1. Crea una carpeta C: / instancia1. Copie las carpetas conf , webapps y temp de C: / apache-tomcat-7.0.39 y péguelas en C: / instance1. Puede eliminar contenidos de webapps y carpetas temporales ubicados en la instancia 1, pero no toque contenidos de conf .

  2. Ahora copia> pega C: / instance1 y cámbiale el nombre a instance2. De esta forma, tanto la instancia 1 como la instancia 2 tendrán el mismo contenido.

  3. Vaya a C: / instance2 / conf, edite server.xml y cambie los números de estos puertos (los marqué como XXXX):

    <Server port="XXXX" shutdown="SHUTDOWN">

    <Connector port="XXXX" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

    <Connector port="XXXX" protocol="AJP/1.3" redirectPort="8443" />

  4. Implementa lo que quieras en instance1 / webapps y instance2 / webapps

  5. Cree los siguientes 4 archivos por lotes en C: /

instance1_startup.bat

@echo off

establecer CATALINA_BASE = C: / instance1

cd "% CATALINA_HOME% / bin"

establecer TITLE = Mi Tomcat Instance 01

llama a startup.bat% TITLE%

instance1_shutdown.bat

@echo off

establecer CATALINA_BASE = C: / instance1

cd "% CATALINA_HOME% / bin"

llamar a shutdown.bat

instance2_startup.bat

@echo off

establecer CATALINA_BASE = C: / instance2

cd "% CATALINA_HOME% / bin"

establecer TITLE = Mi Tomcat Instance 02

llama a startup.bat% TITLE%

instance2_shutdown.bat

@echo off

establecer CATALINA_BASE = C: / instance2

cd "% CATALINA_HOME% / bin"

llamar a shutdown.bat

  1. Ejecute instance1_startup.bat y instance2_startup.bat , con suerte debería funcionar.

Estoy tratando de ejecutar varias instancias de Tomcat, pero incluso después de configurar diferentes puertos para escuchar y cerrar la segunda instancia, sigue intentando escuchar en 8080 (configurado para 8081). Leí que tengo que establecer un valor diferente para CATALINA_BASE . De todos los artículos que hay en línea, ninguno muestra en qué archivo se puede establecer esta variable.

Dónde y cómo puedo configurar CATALINA_BASE para mi instancia de Tomcat en C:/apache-tomcat-7.0.39


La forma más fácil en que he ejecutado dos copias de Tomcat implicaba los siguientes pasos (estaba intentando ejecutar dos versiones distintas de tomcat, 6 y 7):

  • Establezca 2 copias de tomcat en diferentes carpetas (si son versiones diferentes, entonces esto es fácil, si son de la misma versión, entonces tendrá que distinguirse de alguna otra manera. Hay muchos archivos que Tomcat crea para administrarlo, por lo que se ejecuta dos instancias con el mismo directorio de trabajo probablemente no sea posible)

  • Cambie los siguientes puertos que escucha el tomcat en server.xml

    • <Connector port="8080"> <- Este es el puerto que usa tomcat para responder a solicitudes HTTP
    • <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> <- esto define dos puertos, uno para el conector AJP (usado si está usando tomcat detrás de un servidor Apache o IIS) y el puerto utilizado para el tráfico HTTPS
    • <Server port="8005" shutdown="SHUTDOWN"> <- este es el puerto que Tomcat utiliza para responder a los eventos SHUTDOWN

Finalmente, si está ejecutando esto como un servicio de Windows necesitará establecer diferentes nombres de servicio para cada instancia (puede hacerlo durante la instalación, el valor predeterminado para Tomcat 7 es tomcat7). Una vez que Tomcat esté ejecutando todos sus campos de configuración, use rutas relativas para que no tenga que tocar CATALINA_BASE


La forma más fácil es descargar otro Tomcat 8 o 9 e instalarlo durante la instalación para cambiar todos los números de puerto. Copiar la instancia existente y cambiar el número de puerto apenas en server.xml puede causar algunos errores con los servicios.


Si no ha configurado Tomcat para varias instancias estableciendo un directorio CATALINA_BASE, entonces $ CATALINA_BASE se establecerá en el valor de $ CATALINA_HOME, el directorio en el que ha instalado Tomcat.


1. 1st create one bat file(tomcat-start1.bat) and add the below code and keep this bat file in any location.create instance(a folder having with webapps, config, bin folders) or give directly location in "newins" tomcat folder. and change the port numbers as 8181 in server.xml. @echo off set javabin=C:/Program Files/Java/jdk1.8.0_101/bin set apachehom=E:/Apache Tomcat 8.0.15 set newins=E:/my_instance_1 (or)E:/Apache Tomcat 8.0.15 start "Tomcat 01" "%javabin%/java.exe" ^ -Djava.util.logging.config.file="%apachebas%/conf/logging.properties" ^ -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager ^ -Djava.util.logging.config.file="%apachebas%/conf/logging.properties" ^ -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager ^ -Djava.endorsed.dirs="%apachehom%/endorsed" ^ -classpath "%apachehom%/bin/bootstrap.jar;%apachehom%/bin/tomcat-juli.jar" ^ -Dcatalina.base="%newins%" ^ -Dcatalina.home="%apachehom%" ^ -Djava.io.tmpdir="%apachebas%/temp" ^ org.apache.catalina.startup.Bootstrap start exit 2. create java class and add this code and run import java.io.IOException; import java.io.InputStream; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ @Controller @RequestMapping("/hello") public class TomcatInstance { @RequestMapping(method = RequestMethod.GET) public void printHello(ModelMap model) { Runtime runtime = Runtime.getRuntime(); try { Process p1 = runtime.exec("cmd /c start E://Jammulaiah//Sample//tomcat-start1.bat"); InputStream is = p1.getInputStream(); int i = 0; StringBuffer sb=new StringBuffer(); while ((i = is.read()) != -1) { sb.append((char) i); System.out.println(sb.toString()); } } catch (IOException ioException) { System.out.println(ioException.getMessage()); } } }