Tomcat で複数の war パッケージを展開する方法と手順

Tomcat で複数の war パッケージを展開する方法と手順

1 背景

JDK1.8-u181とTomcat8.5.53がインストールされました。

インストール後、環境変数に JAVA_HOME と Path が設定されます。 JDKではなくJREが搭載されています。

MES と ERP の 2 つの戦争パッケージをリリースする必要があります。

2 Tomcatをインストールする

.exe ファイルを使用してインストールしましたが、インストール後に tomvat_home を設定しませんでした (設定する必要があるかどうかわからないため)

3 フォルダをコピー

3.1 インストールディレクトリconfCatalina

Catalina はフォルダーです。Catalina を 2 つのフォルダーにコピーします。1 つは CatalinaMES というフォルダー、もう 1 つは CatalinaERP というフォルダーです。両方をインストール ディレクトリ\conf ディレクトリに配置します。

3.2 インストールディレクトリ webapps

webapps もフォルダーです。webappsMES と webappsERP という名前の 2 つのコピーを作成し、両方をインストール ディレクトリに配置します。

MESプロジェクトのwarパッケージはインストールディレクトリ\webappsMESに配置されます。

ERPプロジェクトのwarパッケージはインストールディレクトリ\webappsERPに配置されます。

4 設定ファイルを変更する

インストールディレクトリ\conf\server.xmlの内容を変更します。

<?xml バージョン="1.0" エンコーディング="UTF-8"?>

<サーバーポート="-1" シャットダウン="シャットダウン">
<リスナークラス名="org.apache.catalina.startup.VersionLoggerListener" />

<リスナークラス名="org.apache.catalina.core.AprLifecycleListener" SSLEngine="オン" />

<リスナークラス名="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<リスナークラス名="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<リスナークラス名="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

<グローバル命名リソース>

<リソース名="UserDatabase" auth="コンテナ"
タイプ="org.apache.catalina.UserDatabase"
description="更新および保存できるユーザーデータベース"
ファクトリー="org.apache.catalina.users.MemoryUserDatabaseFactory"
パス名="conf/tomcat-users.xml" />
</グローバル命名リソース>

<!-- mes をデプロイ -->
<サービス名="CatalinaMES">

<コネクタ ポート="8085" プロトコル="HTTP/1.1"
接続タイムアウト = "20000"
リダイレクトポート="8443" />

<エンジン名="CatalinaMES" defaultHost="localhost">

<レルムクラス名="org.apache.catalina.realm.LockOutRealm">

<レルムクラス名="org.apache.catalina.realm.UserDatabaseRealm"
リソース名="ユーザーデータベース"/>
</レルム>

<ホスト名="localhost" appBase="webappsMES"
unpackWARs="true" autoDeploy="true">

<コンテキスト パス="/mes-manager-web" docBase="C:\Program Files\Tomcat 8.5\webappsMES\mes-manager-web" デバッグ="0" 特権="true"></コンテキスト>

<Valve クラス名="org.apache.catalina.valves.AccessLogValve" ディレクトリ="logs"
プレフィックス="localhost_access_log" サフィックス=".txt"
パターン="%h %l %u %t &quot;%r&quot; %s %b" />

</ホスト>
</エンジン>
</サービス>

<!-- ERP をデプロイ -->
<サービス名="CatalinaERP">

<コネクタ ポート="8082" プロトコル="HTTP/1.1"
接続タイムアウト = "20000"
リダイレクトポート="8443" />

<エンジン名="CatalinaERP" defaultHost="localhost">


<レルムクラス名="org.apache.catalina.realm.LockOutRealm">

<レルムクラス名="org.apache.catalina.realm.UserDatabaseRealm"
リソース名="ユーザーデータベース"/>
</レルム>

<ホスト名="localhost" appBase="webappsERP"
unpackWARs="true" autoDeploy="true">

<コンテキスト パス="/erp-manager-web" docBase="C:\Program Files\Tomcat 8.5\webappsERP\erp-manager-web" デバッグ="0" 特権="true"></コンテキスト>


<Valve クラス名="org.apache.catalina.valves.AccessLogValve" ディレクトリ="logs"
プレフィックス="localhost_access_log" サフィックス=".txt"
パターン="%h %l %u %t &quot;%r&quot; %s %b" />

</ホスト>
</エンジン>
</サービス>
</サーバー>

このうち、<service> ノードはサービス、つまりデプロイされたプロジェクトを表します。

<service> ノードの name 属性は、対応する Catalina フォルダーの名前に変更されます。 <Engine> ノードの name 属性も、対応する Catalina フォルダーの名前に変更されます。

<Connector> ノードの port 属性はプロジェクトのポート番号です。競合しないように注意してください。

<Host> ノードの appBase プロパティが、対応する webapps フォルダーに変更されます。

<Context> ノードのパス属性はアクセスに使用されるアドレスです。つまり、プロジェクトのアクセス アドレスは服務器ip:項目端口號/path屬性的值。現在の構成によると、MES プロジェクトのローカル アクセス アドレスは127.0.0.1:8085/mes-manager-webです。 <Context> ノードの docBase 属性は、プロジェクトの war パッケージのローカル パスです。これをローカル マシン上の war パッケージの絶対パスに変更するだけです。

5 startup.batとshutdown.batを変更する

インストール ディレクトリ\bin\startup.bat を編集し、先頭に次のコードを追加します。

JAVA_HOME=C:\Program Files\Java\jre1.8.0_181 を設定します
TOMCAT_HOME=C:\Program Files\Tomcat 8.5 を設定します

1 つ目は JRE のインストール場所で、2 つ目は tomcat のインストール パスです。

同じ内容をshutdown.batの同じ場所に追加します。

6 startup.batをダブルクリックしてTomcatを実行します

このとき、DOS ウィンドウが開き、IDEA コンソールのようなプロジェクトの起動情報が出力されることに注意してください。プロジェクトが正常に起動したら、この DOS ウィンドウを閉じずに開いたままにしてください。Tomcat をオフにすると、実行が停止します。

7 注記

複数のプロジェクトで Spring フレームワークを使用する場合、複数のポートと複数のアプリケーションで Tomcat を構成するときにエラーが発生する可能性があります。

解決策: 各プロジェクトの web.xml に次のノードを追加します。

<コンテキストパラメータ>
<param-name>webAppRootKey</param-name>
<param-value>webapp.root</param-value>
</コンテキストパラメータ>

各プロジェクトの web.xml の <param-name> が、webAppRootKey に対応する <param-value> と異なることを確認します。たとえば、最初のものは webapp.root1 を使用し、2 番目のものは webapp.root2 を使用する、というようになります。

また、サーバーのファイアウォールが設定したいポートへの外部アクセスを許可しているかどうかにも注意してください。

Tomcat で複数の war パッケージをデプロイする手順に関するこの記事はこれで終わりです。Tomcat で複数の war パッケージをデプロイする方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • アイデアを war パッケージにパッケージ化し、tomcat にデプロイしてアクセス パスの問題 (図とテキスト)
  • Tomcat ルート ディレクトリに Web アプリケーションをデプロイする 3 つの方法
  • Tomcat にデプロイすると SpringBoot アプリケーションが起動できない問題の解決方法
  • Tomcat を使用して Web アプリケーションを展開する 4 つの方法の概要 (推奨)
  • Docker で Tomcat および Java アプリケーションをデプロイする詳細な手順
  • Tomcatにデプロイされたアプリケーションがフロントエンドページにアクセスできない問題について

<<:  vue3.0+vant3.0の迅速なプロジェクト構築の実装

>>:  MySQL における or、in、union、インデックス最適化の詳細な分析

推薦する

TypeScript名前空間の説明

目次1. 定義と使用1.1 定義1.2 使用2. 複数のファイルに分割する3. エイリアス序文: T...

MySQL 8.0.19 winx64 インストールチュートリアルと Windows 10 での初期パスワードの変更

この記事では、参考までにMySQL 8.0.19 winx64のインストールチュートリアルを紹介しま...

アコーディオンセカンダリメニューを実装するためのjQueryプラグイン

この記事では、jQueryプラグインを使用してアコーディオンセカンダリメニューを作成します。具体的な...

OneProxy に基づいて MySQL の読み取り/書き込み分離と負荷分散を実装する

導入パート1: 冒頭に書いたOneProxy は、民間ソフトウェアによって完全に独立して開発された分...

MySQL インデックスのクイックガイド

MySQL インデックスの確立は、MySQL の効率的な操作にとって非常に重要です。インデックスによ...

React プロジェクトで eslint の Baidu スタイルを使用する詳細な説明

1. Baidu Eslint Ruleプラグインをインストールする npm i -D eslint...

Electronで不規則な形状の透明部分をクリックする実装

目次不規則なフォームの実装透明な部分をクリックする不規則なフォームの実装ここでは円形フォームを実装し...

Docker-compose を使用して ELK クラスターを構築する方法

すべてのオーケストレーション ファイルと構成ファイルは、私の Github からアクセスできます。構...

Nodejs 探索: シングルスレッドの高並行性の原理を深く理解する

目次序文一目でわかる建築オペレーティングシステムとの対話シングルスレッドイベント駆動/イベントループ...

Windows環境でのMySQL 8.0.13無料インストールバージョンの設定チュートリアル

目次圧縮ファイルをダウンロードするアドレス: https://dev.mysql.com/downl...

MySQL SQL 最適化チュートリアル: IN クエリと RANGE クエリ

まず、in() クエリについて説明します。 「High Performance MySQL」では、イ...

JS デコレータ パターンと TypeScript デコレータ

目次デコレータパターンの紹介TypeScript のデコレータデコレータの使用デコレーターファクトリ...

ユーザーのニーズがマーケティング指向のデザインにつながる

<br />それぞれのトピックについて、チーム内でメールで議論します。議論が白熱するにつ...

2つのボールが交差する粘着効果を実現するCSSサンプルコード

これは純粋に CSS のみを使用して作成されたエフェクトです。簡単に言うと、このエフェクトは画像処理...

JavaScript を使用してタイムラインとアニメーション効果を実装するためのサンプル コード (フロントエンドのコンポーネント化)

目次コードのクリーニングJavaScript の「フレーム」 「フレーム」の実装方法1. 間隔を設定...