Tomcat несколько экземпляров одновременно
Я пытаюсь запустить несколько экземпляров Tomcat, но даже после настройки разных портов для прослушивания и выключения второго экземпляра он продолжает пытаться слушать 8080 (настроенный для 8081). Я читал, что я должен установить другое значение для CATALINA_BASE
. Из всех статей, которые есть в интернете, ни одна из них фактически не показывает, в каком файле эта переменная может быть установлена.
где и как я могу установить CATALINA_BASE для моего экземпляра Tomcat в C:apache-tomcat-7.0.39
5 ответов
самый простой способ запустить две копии Tomcat включал следующие шаги (я пытался запустить две разные версии tomcat, 6 и 7):
установите 2 копии tomcat в разных папках (если они разные версии, то это легко, если они одна и та же версия, то вам нужно будет различать каким-то другим способом. Есть много файлов, которые Tomcat создает для управления им, поэтому запуск двух экземпляров с одним и тем же рабочим каталогом, вероятно, не возможно)
-
измените следующие порты, которые прослушивает tomcat в
server.xml
-
<Connector port="8080">
-
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
-
<Server port="8005" shutdown="SHUTDOWN">
-
наконец, если вы используете это как службу Windows, вам нужно будет установить разные имена служб для каждого экземпляра (вы можете сделать это во время установки, по умолчанию для Tomcat 7-tomcat7). После запуска Tomcat все его поля конфигурации используют относительные пути, поэтому вам не нужно касаться CATALINA_BASE
предположим, что у вас есть только одна папка Tomcat, расположенная в C:\apache-tomcat-7.0.39 и что вы хотите запустить два экземпляра из него.
убедитесь, что у вас есть CATALINA_HOME набор системных / пользовательских переменных и указание на C:\apache-tomcat-7.0.39
создать папку C:\instance1 - ... Копия conf, webapps и temp папки из C:\apache-tomcat-7.0.39 и вставить их C:\instance1. Вы можете удалить содержимое из webapps и временных папок, расположенных в instance1, но не трогайте conf содержание.
Теперь копировать > вставить C:\instance1 и переименуйте его в instance2. Так, оба!--4-->instance1 и instance2 будет иметь тот же контент.
-
перейти к C:\instance2\conf, edit сервер.в XML и измените номера этих портов (я отметил их как 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" />
разверните все, что вы хотите в instance1\webapps и instance2\webapps
создайте следующие 4 пакетных файла под C:\
instance1_startup.летучая мышь!--5-->
@echo off
установить CATALINA_BASE=C:\instance1
cd "%CATALINA_HOME%\bin"
установить заголовок=мой экземпляр Tomcat 01
запуск звонка.bat %TITLE%
instance1_shutdown.летучая мышь!--5-->
@echo off
установить CATALINA_BASE=C:\instance1
cd "%CATALINA_HOME%\bin"
завершение вызова.летучая мышь!--6-->
instance2_startup.летучая мышь!--5-->
@echo off
установить CATALINA_BASE=C:\instance2
cd "%CATALINA_HOME%\bin"
установить заголовок=мой экземпляр Tomcat 02
запуск звонка.bat %TITLE%
instance2_shutdown.летучая мышь!--5-->
@echo off
установить CATALINA_BASE=C:\instance2
cd "%CATALINA_HOME%\bin"
завершение вызова.летучая мышь!--6-->
- выполнить instance1_startup.летучая мышь!--5--> и instance2_startup.летучая мышь!--5-->, надеюсь, это сработает.
Если вы не настроили Tomcat для нескольких экземпляров, установив каталог CATALINA_BASE, то $CATALINA_BASE будет установлено значение $CATALINA_HOME, каталог, в который вы установили Tomcat.
самый простой способ-загрузить другой tomcat 8 или 9 и установить его при установке изменить все номера портов. Копирования существующего экземпляра и изменение номера порта вряд ли в сервере.xml может вызвать некоторые ошибки со службами.
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());
}
}
}