SpringBootの埋め込みTomcatでWebアプリケーションマネージャ(manager)を使用する方法

SpringBootの埋め込みTomcatでWebアプリケーションマネージャ(manager)を使用する方法

SpringBootの埋め込みTomcatでWebアプリケーションマネージャ(manager)を使用するためには、いくつかの設定を行う必要があります。
デフォルトでは、SpringBootの埋め込みTomcatは、Webアプリケーションマネージャが無効になっています。
そのため、手動で設定を追加して有効にする必要があります。
以下の手順に従って設定を進めることで、Webアプリケーションマネージャにアクセスできるようになります。

1. 必要な依存関係を追加

まず、pom.xmlファイル(Mavenプロジェクトの場合)またはbuild.gradleファイル(Gradleプロジェクトの場合)にTomcatの依存関係を追加する必要があります。
これにより、Tomcatの管理機能を提供するライブラリがプロジェクトに含まれます。

Mavenの場合:
<dependency>
  <groupId>org.apache.tomcat.embed</groupId>
  <artifactId>tomcat-embed-manager</artifactId>
  <version>9.0.71</version> <!-- ここで使用するバージョンを指定 -->
</dependency>
Gradleの場合:
implementation 'org.apache.tomcat.embed:tomcat-embed-manager:9.0.71' // ここで使用するバージョンを指定

2. META-INF/context.xmlの作成

Tomcatの設定をSpringBootのプロジェクトに追加するには、src/main/resources/META-INFディレクトリにcontext.xmlファイルを作成する必要があります。
このファイルに、Tomcat Managerの設定を追加します。

src/main/resources/META-INF/context.xmlの例:

<Context>
  <Resource name="UserDatabase" auth="Container" 
            type="org.apache.catalina.UserDatabase"
            description="User database that can be updated and saved"
            factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
            pathname="conf/tomcat-users.xml" />
</Context>

3. tomcat-users.xmlの設定

SpringBootのプロジェクトで埋め込みTomcatを使用する場合、Tomcatのユーザー設定をsrc/main/resources/confディレクトリに配置する必要があります。
このディレクトリにtomcat-users.xmlファイルを作成し、管理者ユーザーの設定を追加します。

src/main/resources/conf/tomcat-users.xmlの例:

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="manager-gui"/>
  <user username="admin" password="admin" roles="manager-gui"/>
</tomcat-users>

この設定では、adminというユーザー名とadminというパスワードでmanager-guiロールを持つユーザーを作成しています。
このユーザーでWebアプリケーションマネージャにログインできるようになります。

4. 設定ファイルの読み込み

SpringBootのプロジェクトでは、src/main/resourcesディレクトリに配置された設定ファイルを自動的に読み込みます。
ただし、埋め込みTomcatにカスタム設定を適用するためには、追加の設定が必要になる場合があります。

src/main/resources/application.propertiesまたはapplication.ymlファイルに以下の設定を追加します。

application.propertiesの場合:

spring.datasource.jndi-name=java:comp/env/jdbc/yourDataSourceName

application.ymlの場合:

spring:
  datasource:
    jndi-name: java:comp/env/jdbc/yourDataSourceName

5. アプリケーションの起動とアクセス

設定が完了したら、SpringBootアプリケーションを再起動します。
TomcatのWebアプリケーションマネージャにアクセスするには、ブラウザで以下のURLにアクセスします。

http://localhost:8080/manager/html

アクセスすると、ログイン画面が表示されるので、tomcat-users.xmlで設定したユーザー名とパスワード(例: admin/admin)を使用してログインします。

注意点

  • SpringBootの埋め込みTomcatを使用する場合、セキュリティの観点から管理者ユーザーの設定には十分注意してください。

特に、本番環境での使用時には、強力なパスワードを使用し、アクセス制御を適切に設定することをおすすめします。

  • また、tomcat-embed-managerのバージョンは、SpringBootで使用しているTomcatのバージョンに対応していることを確認してください。

バージョンの不一致は、予期しない動作やエラーの原因となります。

このように設定を行うことで、SpringBootの埋め込みTomcatでWebアプリケーションマネージャを使用できるようになります。
これにより、Webインターフェースを介してアプリケーションのデプロイ、アンデプロイ、ステータスの確認などの操作が簡単に行えるようになります。