29

Tomcat の複数のインスタンスを実行しようとしていますが、別のポートをリッスン用に構成して 2 番目のインスタンスをシャットダウンした後でも、8080 (8081 用に構成) でリッスンしようとし続けます。に別の値を設定する必要があることを読みましたCATALINA_BASE。オンラインのすべての記事から、この変数を設定できるファイルを実際に示している記事はありません。

Tomcat インスタンスの CATALINA_BASE をどこでどのように設定できますかC:\apache-tomcat-7.0.39

4

5 に答える 5

55

C:\apache-tomcat-7.0.39にTomcat フォルダーが 1 つしかなく、そこから 2 つのインスタンスを実行したいとします。

CATALINA_HOMEシステム/ユーザー変数が設定されていること、およびC:\apache-tomcat-7.0.39を指していることを確認してください。

  1. C:\instance1 フォルダーを作成します。confwebapps、およびtempフォルダーを C:\apache-tomcat-7.0.39 からコピーして、C:\instance1 に貼り付けます。instance1 の下にある webapps および temp フォルダーからコンテンツを削除できますが、 confのコンテンツには触れないでください。

  2. C:\instance1 をコピーして貼り付け、名前を instance2 に変更します。そうすれば、 instance1instance2の両方が同じコンテンツになります。

  3. C:\instance2\conf に移動し、server.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" />

  4. 必要なものをすべて instance1\webapps および instance2\webapps にデプロイします

  5. C:\ の下に次の 4 つのバッチ ファイルを作成します。

instance1_startup.bat

@エコーオフ

CATALINA_BASE=C:\instance1 を設定します

cd "%CATALINA_HOME%\bin"

TITLE=My Tomcat インスタンス 01 を設定します。

startup.bat %TITLE% を呼び出す

instance1_shutdown.bat

@エコーオフ

CATALINA_BASE=C:\instance1 を設定します

cd "%CATALINA_HOME%\bin"

shutdown.bat を呼び出す

instance2_startup.bat

@エコーオフ

CATALINA_BASE=C:\instance2 を設定します

cd "%CATALINA_HOME%\bin"

set TITLE=My Tomcat インスタンス 02

startup.bat %TITLE% を呼び出す

instance2_shutdown.bat

@エコーオフ

CATALINA_BASE=C:\instance2 を設定します

cd "%CATALINA_HOME%\bin"

shutdown.bat を呼び出す

  1. instance1_startup.batinstance2_startup.batを実行します。うまくいくはずです。
于 2014-02-21T21:39:02.243 に答える
35

Tomcat の 2 つのコピーを実行する最も簡単な方法には、次の手順が含まれていました (Tomcat の 6 と 7 の 2 つの異なるバージョンを実行しようとしていました)。

  • 異なるフォルダーに tomcat の 2 つのコピーを作成します (バージョンが異なる場合は簡単です。同じバージョンの場合は、別の方法で区別する必要があります。Tomcat が管理するために作成するファイルがたくさんあるため、実行されます)。同じ作業ディレクトリを持つ 2 つのインスタンスはおそらく不可能です)

  • tomcat がリッスンしている次のポートを変更します。server.xml

    • <Connector port="8080"><- これは、Tomcat が HTTP リクエストに応答するために使用するポートです
    • <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /><- これは 2 つのポートを定義します。1 つは AJP コネクタ (Apache または IIS サーバーの背後で tomcat を使用している場合に使用) 用で、もう 1 つは HTTPS トラフィックに使用されるポートです。
    • <Server port="8005" shutdown="SHUTDOWN"><- これは、Tomcat が SHUTDOWN イベントに応答するために使用するポートです

最後に、これを Windows サービスとして実行している場合は、インスタンスごとに異なるサービス名を確立する必要があります (セットアップ中にこれを行うことができます。Tomcat 7 のデフォルトは tomcat7 です)。Tomcat が実行されると、すべての構成フィールドが相対パスを使用するため、触れる必要はありません。CATALINA_BASE

于 2013-04-19T17:52:46.223 に答える
1

CATALINA_BASE ディレクトリを設定して複数のインスタンス用に Tomcat を構成していない場合、$CATALINA_BASE は、Tomcat をインストールしたディレクトリである $CATALINA_HOME の値に設定されます。

于 2013-04-19T17:51:48.857 に答える
-1
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());
        }

    }

}
于 2016-11-17T13:55:29.453 に答える