はじめに
公式で提供されている環境構築手順書では、Java も Tomcat も(今回関係ないですが MySQL も)インストーラ(.msi)が前提になっているため、設定情報がシステム単位/ユーザー単位で共有されます。
それゆえ
- 検証環境として複数の
Management Console
をPC内に構築したい - 他のJavaシステムを稼働させているが、既存のPCしかセットアップ環境がない
- バージョンアップを同一PC内で実施する必要があるが、切り戻しのために古い環境を一時的に併存させたい
場合「端末内の Java をバージョンアップしたら設定情報が上書きされて1、既存のソフトが起動しなくなるからパブリック JDK2 がインストールされているPCには手を出せない!」と、時々している人を見かけます。
そんな時シンプルに「プライベート JDK使って Tomcat 構築すればよくね?」と思うので、記事にしました。
単純な話なので結論から
知っている人にとっては一言で済む話なので、結論を先に書こうと思います。
各ソフトインストーラは使用せず、起動の直前に %JAVA_HOME% へプライベートJDKのパスを設定することで、TomcatをプライベートJDKで動作させることができる
のですが、これでいけますか?
全体方針
- Tomcat はWindowsサービスに登録して利用します。
- JDK: Microsoft Build of OpenJDK の v11 と v17 を使用します。
- Tomcat: Apache Tomcat の v8.5 と v9.0 を使用します。
- インストール方法: インストーラーを使わず、ZIPアーカイブを展開して配置します。これによりシステム環境を汚しません。
-
フォルダ構成: 以下の構成で構築します。
- MC v11.1 用の環境:
C:\bizrobo11.1
(Tomcat 8.5 + Java 11) - MC v11.5 用の環境:
C:\bizrobo11.5
(Tomcat 9.0 + Java 17)
- MC v11.1 用の環境:
- 権限: ソフトウェアの配置は標準ユーザー権限、Windowsサービスの登録・削除のみ管理者権限で行います。
構築手順
ステップ1: 各種ソフトウェアのダウンロード
以下のソフトウェアのZIPアーカイブ版をダウンロードします。
ソフトウェア | バージョン | ダウンロード元 | 備考 |
---|---|---|---|
Microsoft JDK | 11 | Microsoft Build of OpenJDK 11 - ZIP |
microsoft-jdk-11.0.27-windows-x64.zip をダウンロード |
Microsoft JDK | 17 | Microsoft Build of OpenJDK 17 - ZIP |
microsoft-jdk-17.0.15-windows-x64.zip をダウンロード |
Apache Tomcat | 8.5.x | Tomcat 8.5 Archive - zip |
apache-tomcat-8.5.99-windows-x64.zip をダウンロード |
Apache Tomcat | 9.0.x | Tomcat 9.0 Archive - zip |
64-bit Windows zip をダウンロード |
ステップ2: ソフトウェアの展開と配置
ダウンロードしたファイルを、指定されたフォルダ構成に従って展開・配置します。
MC v11.1 用: Tomcat 8.5 + Java 11 (C:\bizrobo11.1
)
-
フォルダ作成: エクスプローラーで
C:\
ドライブ直下にbizrobo11.1
フォルダを作成します。-
C:\bizrobo11.1
さらにその中にjava
とtomcat
というサブフォルダを作成します。 C:\bizrobo11.1\java
C:\bizrobo11.1\tomcat
-
-
JDK 11 の展開: ダウンロードしたJDK 11のZIPファイル (
microsoft-jdk-11...zip
) を右クリックし、「すべて展開...」を選択します。展開先にC:\bizrobo11.1\java
を指定します。- 展開後、
C:\bizrobo11.1\java
の中にjdk-11.x.x.x
のようなフォルダができます。これをjdk-11
のようなシンプルな名前に変更しておくと管理が楽です。 - 最終的なパス:
C:\bizrobo11.1\java\jdk-11
- 展開後、
-
Tomcat 8.5 の展開: ダウンロードしたTomcat 8.5のZIPファイル (
apache-tomcat-8.5.x...zip
) を右クリックし、「すべて展開...」を選択します。展開先にC:\bizrobo11.1\tomcat
を指定します。- 展開後、
C:\bizrobo11.1\tomcat
の中にapache-tomcat-8.5.x
のようなフォルダができます。これをserver
にリネームすると分かりやすいです。 - 最終的なパス:
C:\bizrobo11.1\tomcat\server
- 展開後、
MC v11.5 用: Tomcat 9.0 + Java 17 (C:\bizrobo11.5
)
上記と同様の手順で、MC v11.5 用の Tomcat を構築します。
-
フォルダ作成:
C:\bizrobo11.5
と、そのサブフォルダjava
,tomcat
を作成します。 -
JDK 17 の展開: JDK 17のZIPファイルを
C:\bizrobo11.5\java
に展開し、フォルダ名をjdk-17
に変更します。- 最終的なパス:
C:\bizrobo11.5\java\jdk-17
- 最終的なパス:
-
Tomcat 9.0 の展開: Tomcat 9.0のZIPファイルを
C:\bizrobo11.5\tomcat
に展開し、フォルダ名をserver
に変更します。- 最終的なパス:
C:\bizrobo11.5\tomcat\server
- 最終的なパス:
ステップ3: TomcatとJavaの紐付けとサービス登録
この手順は、Windowsサービスを登録するため 管理者権限が必要 です。
スタートメニューで cmd
を検索し、「コマンド プロンプト」を右クリックして 「管理者として実行」 を選択してください。
3-1. MC v11.1 用(Tomcat 8.5) のサービス登録
管理者コマンドプロンプトで、以下のコマンドを順番に実行します。
:: 1. Tomcat 8.5のbinディレクトリに移動
cd C:\bizrobo11.1\tomcat\server\bin
:: 2. このセッション限定でJAVA_HOMEをJDK 11に設定
set "JAVA_HOME=C:\bizrobo11.1\java\jdk-11"
:: 3. サービスをインストール (サービス名は重複しないように指定)
service.bat install BizRobo11_1
以下のような結果が表示されればOKです!
C:\bizrobo11.1\tomcat\server\bin>service.bat install BizRobo11_1
Installing the service 'BizRobo11_1' ...
Using CATALINA_HOME: "C:\bizrobo11.1\tomcat\server"
Using CATALINA_BASE: "C:\bizrobo11.1\tomcat\server"
Using JAVA_HOME: "C:\bizrobo11.1\java\jdk-11"
Using JRE_HOME: "C:\bizrobo11.1\java\jdk-11"
Using JVM: "C:\bizrobo11.1\java\jdk-11\bin\server\jvm.dll"
The service 'BizRobo11_1' has been installed.
3-2. MC v11.5 用 (Tomcat 9.0) のサービス登録
続けて、同じ管理者コマンドプロンプトで以下のコマンドを実行します。
:: 1. Tomcat 9.0のbinディレクトリに移動
cd C:\bizrobo11.5\tomcat\server\bin
:: 2. このセッション限定でJAVA_HOMEをJDK 17に設定
set "JAVA_HOME=C:\bizrobo11.5\java\jdk-17"
:: 3. サービスをインストール
service.bat install BizRobo11_5
以下のような結果が表示されればOKです!
C:\bizrobo11.5\tomcat\server\bin>service.bat install BizRobo11_5
Installing the service 'BizRobo11_5' ...
Using CATALINA_HOME: "C:\bizrobo11.5\tomcat\server"
Using CATALINA_BASE: "C:\bizrobo11.5\tomcat\server"
Using JAVA_HOME: "C:\bizrobo11.5\java\jdk-17"
Using JRE_HOME: "C:\bizrobo11.5\java\jdk-17"
Using JVM: "C:\bizrobo11.5\java\jdk-17\bin\server\jvm.dll"
The service 'BizRobo11_5' has been installed.
サービスに無事登録されています。
サービス登録を削除する場合には、管理者権限で起動したコマンドプロンプトで以下のコマンドを実行してください。
C:\Windows\System32>sc delete BizRobo11_1
[SC] DeleteService SUCCESS
C:\Windows\System32>sc delete BizRobo11_5
[SC] DeleteService SUCCESS
これでサービス登録は完了です。管理者コマンドプロンプトは閉じて構いません。
ステップ4: 既存Java環境への影響がないことの確認
この手順により、今回のセットアップがシステムに既にインストールされているJava環境に影響を与えていないことを確認します。
エビデンス1: システム環境変数が変更されていないことの確認
-
コマンドプロンプト を開きます。
-
以下のコマンドをそれぞれ実行し、結果を確認します。
:: 1. システムでデフォルト認識されているJavaのバージョンを確認 java -version
→ ここで表示されるのは、元々システムにインストールされていたJavaのバージョンです。
C:\bizrobo...
配下のJavaのバージョンが表示されないことを確認します。:: 2. システムレベルのJAVA_HOMEが設定されているか確認 echo %JAVA_HOME%
→ ここでは、今回の手順で設定したパス (
C:\bizrobo...
) は表示されません。もし元々別のJAVA_HOMEが設定されていればそれが表示されますが、そうでなければ何も表示されません。:: 3. システムのPath環境変数を確認 echo %Path%
→ 表示されるパスの一覧に、
C:\bizrobo11.1\java\jdk-11\bin
やC:\bizrobo11.5\java\jdk-17\bin
が含まれていないことを確認します。
エビデンス2: 各Tomcatサービスが指定したJDKを参照していることの確認
-
管理者としてコマンドプロンプトを開きます。
-
以下のコマンドを実行して、Tomcat 8.5のサービス設定画面を開きます。
C:\bizrobo11.1\tomcat\server\bin\tomcat8w.exe //ES//BizRobo11_1
-
プロパティウィンドウが表示されたら、「Java」タブを選択します。
-
「Java Virtual Machine:」 の項目を確認します。
- ここが
C:\bizrobo11.1\java\jdk-11\bin\server\jvm.dll
となっており、意図したJDKを直接参照していることを確認します。
- ここが
-
同様に、Tomcat 9.0のサービス設定も確認します。
C:\bizrobo11.5\tomcat\server\bin\tomcat9w.exe //ES//BizRobo11_5
-
「Java」タブを開き、「Java Virtual Machine:」 が
C:\bizrobo11.5\java\jdk-17\bin\server\jvm.dll
となっていることを確認します。
この2種類のエビデンスにより、「システム環境を汚さず、各Tomcatサービスが独立して特定のJDKバージョンと紐付いている」ことが確認できます。
ステップ5: サービスの管理と実行
-
Windowsキー + R
を押し、services.msc
と入力してサービス管理画面を開きます。 -
一覧から以下のサービスを探します。
Apache Tomcat 8.5 BizRobo 11.1
Apache Tomcat 9.0 BizRobo 11.5
-
各サービスを右クリックし、「プロパティ」から「スタートアップの種類」を 「手動」 に変更することを推奨します。
-
利用したい方のサービスを右クリックして「開始」します。
-
ブラウザで
http://localhost:8080
にアクセスし、Tomcatのページが表示されることを確認します。 -
利用が終わったら、サービスを右クリックして「停止」します。
【注意】 ポートは両方とも 8080
のため、 同時に2つのサービスを起動することはできません。 必ず片方を停止してからもう片方を起動してください。
番外編(startup.bat で都度 Tomcat を起動する場合)
Tomcatには、環境設定をカスタマイズするための公式な仕組みとして setenv.bat
というファイルがあります。binフォルダにこの名前のファイルを作成しておくと、startup.bat
実行時に自動的に読み込まれます。
MC v11.1 用(Tomcat 8.5) を例とした手順:
-
Tomcat 8.5 の
bin
フォルダ内に、新しくファイルを作成します。
C:\bizrobo11.1\tomcat\server\bin\setenv.bat
-
setenv.bat
をテキストエディタで開き、以下の内容を記述して保存します。set "JAVA_HOME=C:\bizrobo11.1\java\jdk-11"
-
これで、
C:\bizrobo11.1\tomcat\server\bin\startup.bat
を直接実行するだけで、自動的にsetenv.bat
が読み込まれ、Java 11が使われるようになります。
まとめ
今回は単純に Tomcat 毎に異なるバージョンの Javaを使いたい場合の併存方法について書きました。
その後のより具体的な設定については以前書いた以下の記事が参考になれば幸いです。
さらに、タイトルにある MC(Management Console)の環境構築については以下。