1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

公式で提供されている環境構築手順書では、Java も Tomcat も(今回関係ないですが MySQL も)インストーラ(.msi)が前提になっているため、設定情報がシステム単位/ユーザー単位で共有されます。

それゆえ

  • 検証環境として複数の Management ConsoleをPC内に構築したい
  • 他のJavaシステムを稼働させているが、既存のPCしかセットアップ環境がない
  • バージョンアップを同一PC内で実施する必要があるが、切り戻しのために古い環境を一時的に併存させたい

場合「端末内の Java をバージョンアップしたら設定情報が上書きされて1、既存のソフトが起動しなくなるからパブリック JDK2 がインストールされているPCには手を出せない!」と、時々:weary:している人を見かけます。

そんな時シンプルに「プライベート JDK使って Tomcat 構築すればよくね?:neutral_face:」と思うので、記事にしました。

単純な話なので結論から

知っている人にとっては一言で済む話なので、結論を先に書こうと思います。

各ソフトインストーラは使用せず、起動の直前に %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)
  • 権限: ソフトウェアの配置は標準ユーザー権限、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)

  1. フォルダ作成: エクスプローラーで C:\ ドライブ直下に bizrobo11.1 フォルダを作成します。

    • C:\bizrobo11.1
      さらにその中に javatomcat というサブフォルダを作成します。
    • C:\bizrobo11.1\java
    • C:\bizrobo11.1\tomcat

    image.png
     

  2. 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

    image.png
     

  3. 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

    image.png

MC v11.5 用: Tomcat 9.0 + Java 17 (C:\bizrobo11.5)

上記と同様の手順で、MC v11.5 用の Tomcat を構築します。

  1. フォルダ作成: C:\bizrobo11.5 と、そのサブフォルダ java, tomcat を作成します。

    image.png
     

  2. JDK 17 の展開: JDK 17のZIPファイルを C:\bizrobo11.5\java に展開し、フォルダ名を jdk-17 に変更します。

    • 最終的なパス: C:\bizrobo11.5\java\jdk-17

    image.png
     

  3. Tomcat 9.0 の展開: Tomcat 9.0のZIPファイルを C:\bizrobo11.5\tomcat に展開し、フォルダ名を server に変更します。

    • 最終的なパス: C:\bizrobo11.5\tomcat\server

    image.png

ステップ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.

サービスに無事登録されています。
image.png

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.

サービスに無事登録されています。

image.png

サービス登録を削除する場合には、管理者権限で起動したコマンドプロンプトで以下のコマンドを実行してください。

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. コマンドプロンプト を開きます。

  2. 以下のコマンドをそれぞれ実行し、結果を確認します。

    :: 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\binC:\bizrobo11.5\java\jdk-17\bin含まれていないことを確認します。

    image.png

エビデンス2: 各Tomcatサービスが指定したJDKを参照していることの確認

  1. 管理者としてコマンドプロンプトを開きます。

  2. 以下のコマンドを実行して、Tomcat 8.5のサービス設定画面を開きます。

    C:\bizrobo11.1\tomcat\server\bin\tomcat8w.exe //ES//BizRobo11_1
    
  3. プロパティウィンドウが表示されたら、「Java」タブを選択します。

  4. 「Java Virtual Machine:」 の項目を確認します。

    • ここが C:\bizrobo11.1\java\jdk-11\bin\server\jvm.dll となっており、意図したJDKを直接参照していることを確認します。

    image.png

  5. 同様に、Tomcat 9.0のサービス設定も確認します。

    C:\bizrobo11.5\tomcat\server\bin\tomcat9w.exe //ES//BizRobo11_5
    
  6. 「Java」タブを開き、「Java Virtual Machine:」C:\bizrobo11.5\java\jdk-17\bin\server\jvm.dll となっていることを確認します。

    image.png

この2種類のエビデンスにより、「システム環境を汚さず、各Tomcatサービスが独立して特定のJDKバージョンと紐付いている」ことが確認できます。

ステップ5: サービスの管理と実行

  1. Windowsキー + R を押し、services.msc と入力してサービス管理画面を開きます。

  2. 一覧から以下のサービスを探します。

    • Apache Tomcat 8.5 BizRobo 11.1
    • Apache Tomcat 9.0 BizRobo 11.5
  3. 各サービスを右クリックし、「プロパティ」から「スタートアップの種類」を 「手動」 に変更することを推奨します。

  4. 利用したい方のサービスを右クリックして「開始」します。

  5. ブラウザで http://localhost:8080 にアクセスし、Tomcatのページが表示されることを確認します。

    Apache Tomcat 8.5 BizRobo 11.1
    image.png

    Apache Tomcat 9.0 BizRobo 11.5
    image.png

  6. 利用が終わったら、サービスを右クリックして「停止」します。

【注意】 ポートは両方とも 8080 のため、 同時に2つのサービスを起動することはできません。 必ず片方を停止してからもう片方を起動してください。

番外編(startup.bat で都度 Tomcat を起動する場合)

Tomcatには、環境設定をカスタマイズするための公式な仕組みとして setenv.bat というファイルがあります。binフォルダにこの名前のファイルを作成しておくと、startup.bat 実行時に自動的に読み込まれます。

MC v11.1 用(Tomcat 8.5) を例とした手順:

  1. Tomcat 8.5 の bin フォルダ内に、新しくファイルを作成します。
    C:\bizrobo11.1\tomcat\server\bin\setenv.bat

  2. setenv.bat をテキストエディタで開き、以下の内容を記述して保存します。

    set "JAVA_HOME=C:\bizrobo11.1\java\jdk-11"
    
  3. これで、C:\bizrobo11.1\tomcat\server\bin\startup.bat を直接実行するだけで、自動的に setenv.bat が読み込まれ、Java 11が使われるようになります。

まとめ

今回は単純に Tomcat 毎に異なるバージョンの Javaを使いたい場合の併存方法について書きました。

その後のより具体的な設定については以前書いた以下の記事が参考になれば幸いです。

さらに、タイトルにある MC(Management Console)の環境構築については以下。

  1. JAVA_HOME の値が書き換わってしまいこれまで使っていたソフトが起動できなくなったり。。

  2. PCにインストールされており、そのPC全体で共有されるJDK。対してプライベートJDKは、アプリケーションごとにインストールされるJDKであり、他のアプリケーションには影響しないもの。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?