SSMプロジェクトは、ホットデプロイメント構成を実装するためにTomcatとMavenを使用してWARパッケージとしてデプロイされることが多い。

SSMプロジェクトは、ホットデプロイメント構成を実装するためにTomcatとMavenを使用してWARパッケージとしてデプロイされることが多い。

背景

ご存知のとおり、JavaEE プロジェクトを開発した後は、そのプロジェクトをサーバーの Tomcat にデプロイする必要があります。一般的なデプロイメント方法は、プロジェクトを war パッケージにパッケージ化して Tomcat の webapps の下に置き、Tomcat を再起動して、IP アドレス + ポート番号を介してアクセスすることです。このデプロイメント自体には問題はありませんが、まだ本番環境にあり、プロジェクトを頻繁に変更して最適化する必要がある場合、プロジェクトを頻繁に war パッケージにパッケージ化し、webapps の下の war パッケージを置き換える必要があるため、面倒です。

次に、ローカル プログラミングを実装し、プロジェクトをリモート サーバーの Tomcat にデプロイしてホット デプロイメントを実現する方法について説明します。

使用されるテクノロジーとツール

  • Maven (プロジェクトの構築と依存関係の管理)
  • tomcat7 プラグイン (tomcat にデプロイされたプラグイン)
  • tomcat サーバー (Web サーバー)
  • 推奨されるコンパイラはIDEAです

1. ローカルコンピュータにリモートTomcatを使用する権限があることを確認する

Tomcat の {TOMCAT_HOME}conf/tomcat-users.xml 構成ファイルを変更し、ユーザー名、パスワード、および権限を追加します。

<role rolename="マネージャー GUI" />
<role rolename="マネージャースクリプト" />
<ロール ロール名="admin-gui" />
<role rolename="管理者スクリプト" />
<user ユーザー名="tomcat" パスワード="tomcat" 役割="manager-gui、manager-script、admin-gui、admin-script"/>

2. リモートアクセスを許可するようにTomcatを構成する

リモート サーバーの{TOMCAT_HOME}conf/Catalina/localhost/ディレクトリに manager.xml ファイルを作成し、次のように構成します。

<?xml バージョン="1.0" エンコーディング="UTF-8"?>
<コンテキスト特権="true" antiResourceLocking="false" docBase="${catalina.home}/webapps/manager">
     <Valve クラス名="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</コンテキスト>

注: 一部のユーザーのみに使用を許可する場合は、allowでIPを設定できます。例:

許可 = "192.168.0.102"

3. リモートTomcatを再起動する

tomcatのbinディレクトリで実行

//Tomcatをシャットダウンする
./シャットダウン.sh
//Tomcatを起動する
./スタートアップ.sh

4. 使用権限があるかどうかをテストする

Tomcat にアクセスします (例: http://192.168.0.102:8080) (独自のサーバーまたは仮想マシンの IP アドレスを使用します)
クリックマネージャーアプリ


ここに画像の説明を挿入

先ほど設定したTomcatアカウントとパスワードを入力します。

ここに画像の説明を挿入

このページにジャンプすれば設定は完了です。

ここに画像の説明を挿入

もちろん、現在のページで war をデプロイして置き換えることもできます。これは別のデプロイメント方法ですが、それでもホット デプロイメントほど便利ではありません。

質問: 403エラーが発生した場合、次の

403 アクセス拒否

このページを閲覧する権限がありません。
 
デフォルトでは、Manager は Tomcat と同じマシン上で実行されているブラウザからのみアクセスできます。この制限を変更する場合は、Manager の context.xml ファイルを編集する必要があります。
 
マネージャー アプリケーションがアクセスを許可するように既に構成されていて、ブラウザーの戻るボタンを使用したり、保存したブックマークなどを使用したりした場合は、マネージャー アプリケーションの HTML インターフェイスに対して有効になっているクロスサイト リクエスト フォージェリ (CSRF) 保護がトリガーされている可能性があります。メインのマネージャー ページに戻って、この保護をリセットする必要があります。このページに戻ると、マネージャー アプリケーションの HTML インターフェイスを通常どおり引き続き使用できます。このアクセス拒否メッセージが引き続き表示される場合は、このアプリケーションにアクセスするために必要な権限があるかどうかを確認してください。
 
設定ファイルを変更していない場合は、インストール内の conf/tomcat-users.xml ファイルを確認してください。このファイルには、この Web アプリケーションを使用するための資格情報が含まれている必要があります。

解決する

/webapps/manager/META_INF/context.xml ファイルを変更し、ファイル内の制限されたソース設定をコメント アウトします。

<コンテキスト antiResourceLocking="false" privileged="true" >
 <!-- アクセス権の設定を削除するには、ここにコメントしてください <Valve className="org.apache.catalina.valves.RemoteAddrValve"
     許可="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
     -->
</コンテキスト>

その後、Tomcatを再起動せずにページを更新します。

5. MavenでリモートTomcat管理者アカウントを構成する

ローカル Maven {MAVEN_HOME}/conf/settings.xml ファイルのノードに次のコンテンツを追加します。

<!-- tomcat を操作できるユーザー名とパスワードを設定します-->
<サーバー>
  <id>クロクタックス</id>
  <!-- サーバーのログイン名 -->
  <ユーザー名>tomcat</ユーザー名>
  <!-- サーバーログインパスワード -->
  <パスワード>tomcat</パスワード>
</サーバー>

6. プロジェクトでMavenのtomcat7プラグインを設定する

<!-- Tomcat プラグインを設定する-->
<プラグイン>
	<グループ ID>org.apache.tomcat.maven</グループ ID>
	<artifactId>tomcat7-maven-プラグイン</artifactId>
	<バージョン>2.2</バージョン>

	<構成>
		<!-- ここでの名前は、{MAVEN_HOME}/conf/settings.xml で設定されたサーバー ノードの ID と一致している必要があります-->
		<server>クロカットックス</server>
		<!--サーバーポート番号-->
		<ポート>8080</ポート>
		<!-- プロジェクトの公開パスはデフォルトでは tomcat/webapps ディレクトリですが、より深いディレクトリを指定することもできます。
		「/」を残した場合、ROOT.war パッケージはデフォルトで webapps ディレクトリにデプロイされます。
		<パス></パス>
		<!-- tomcat7 の URL は自由に変更できないことに注意してください。また、サフィックスは html ではなく text である必要があります。
		 ローカル Tomcat デプロイメントの場合は、localhost または ip を使用できます。
		<url>http://localhost:8080/manager/text</url>
		<!--<url>http://117.62.110.110:8080/manager/text</url>-->
		<!--中国語パラメータの文字化けの問題を解決する-->
		<uriEncoding>UTF-8</uriEncoding>
		<update> 真</update>
		<!-- tomcat\conf\tomcat-users.xml で定義されたユーザー名を設定します -->
		<ユーザー名>tomcat</ユーザー名>
		<パスワード>tomcat</パスワード>
	</構成>
</プラグイン>
  • server : 名前は、{MAVEN_HOME}/conf/settings.xml で設定されたサーバーノードの ID と一致している必要があります。
  • port : サーバーのポート番号
  • path : プロジェクトが公開されるパス。デフォルトのディレクトリは tomcat/webapps です。より深いディレクトリを指定することもできます。"/" のままにしておくと、ROOT.war パッケージはデフォルトで webapps ディレクトリにデプロイされます。
  • url : Tomcat7 の URL は自由に変更できないことに注意してください。また、サフィックスは html ではなくテキストである必要があります。ローカルの Tomcat 展開の場合は、localhost と ip を使用できます。uriEncoding: 中国語のパラメータが文字化けする問題を解決します。
  • 更新: ホットデプロイメント。そうでない場合は後でエラーが報告されます。
  • ユーザー名: {TOMCAT_HOME}\conf\tomcat-users.xmlで定義されたユーザー名を設定します。
  • パスワード: {TOMCAT_HOME}\conf\tomcat-users.xmlで定義されたパスワード

7. プロジェクトでMavenのTomcatデプロイメントコマンドを起動する

初期展開では、 「tomcat7:deploy」コマンドを使用できます(TomcatのWebアプリケーションの下にルートフォルダがない場合に使用されます)。

すでにデプロイしている場合は、「tomcat7:redeploy」コマンドを使用します。
プロジェクトの競合が発生した場合は、次のコマンドを使用できます。
-DskipTestsはテストをスキップすることを意味します

tomcat7をクリーンアップ:再デプロイ -DskipTests

使用時にファイルが見つからないというエラーが発生します。再コンパイルまたはパッケージ化してください。

以下のようにIDEAを使用します


ここに画像の説明を挿入

もちろん、クイックスタートを設定することもできます


ここに画像の説明を挿入

IDE->ターミナルまたはプロジェクトルートディレクトリを使用してDOSウィンドウを開き、Mavenコマンドを入力することもできます。

この時点で、tomcat + maven のホット デプロイメントが構成されているため、面倒なパッケージ化とデプロイメントについて心配する必要がなくなりました。

要約する

上記は私が紹介した SSM プロジェクトです。これは頻繁に war パッケージでデプロイされ、ホット デプロイメント構成は tomcat と maven を使用して実現されます。お役に立てば幸いです。ご質問がある場合は、メッセージを残してください。すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。
この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

以下もご興味があるかもしれません:
  • idea2020.3 Maven環境の設定とTomcatの設定に関する詳細なチュートリアル
  • Java (JDK/Tomcat/Maven) ランタイム環境の設定とツール (idea/eclipse) のインストールに関する詳細なチュートリアル
  • IDEA は Java 開発環境 (maven、gradle、tomcat) を構成します。
  • Maven プロジェクトのリモート デプロイメント && Tomcat を使用してデータベース接続を構成する方法
  • Ideaはプロジェクトのデプロイメントを実装するためにmaven-tomcat-pluginを設定します
  • Maven Web プロジェクトを Eclipse にインポートし、Tomcat で実行するように設定します。
  • Maven プロジェクトで Tomcat を設定する 2 つの方法

<<:  WeChatアプレットは固定ヘッダーとリストテーブルコンポーネントを実装します

>>:  MySQL ステートメントを使用した簡単な追加、削除、変更、クエリ操作の例

推薦する

Web開発でボックスを中央に配置するいくつかの方法

1. ボックスを中央に配置するいくつかの方法を記録します。 1.0、マージン幅固定、高さ中央配置。 ...

Dockerコンテナイメージからコードを復元する手順

コードが失われ、コンテナ内で実行されているイメージから必要なコードを回復する必要がある場合があります...

Nginx で Basic Auth ログイン認証を設定する方法

nginx でファイルサーバーを構築することもありますが、これは一般に公開されていますが、サーバーが...

Linux xargsコマンドの使用

1. 機能: xargs は、stdin 内のスペースまたは改行で区切られたデータをスペースで区切ら...

MySQL でコミットされていないトランザクションを見つけるための SQL の例の簡単な分析

以前、「MySQL でコミットされていないトランザクション情報を検索する方法」というタイトルのブログ...

Nginx プロセス スケジューリングの問題の詳細な説明

Nginx は、マスター プロセス (MasterProcess) と、同じ数のホスト CPU コア...

MySQL シリーズ 4 SQL 構文

目次チュートリアルシリーズ1. SQL言語の紹介と仕様2. データベース操作1. ライブラリを作成す...

CSS グリッドレイアウトを使用してレスポンシブな縦棒グラフを作成する方法

私はしばらくの間チャートをいじっていましたが、好奇心から、CSS を使用してチャートを作成するより良...

CSSアニメーションによるテーブルスクロールカルーセル効果の実装

前回の CSS 回転灯と同じ内容の CSS アニメーションの応用です。これは単なる別のアプリケーショ...

HTML ページに SVG を挿入する複数の方法

SVG (Scalable Vector Graphics)は、XML 構文に基づいた画像形式です。...

JavaScript の遅延読み込み属性パターンを理解する

従来、開発者はインスタンスで必要になる可能性のあるデータに対して JavaScript クラス内にプ...

Linux で Apache を使用してファイル サーバーを構築する手順

1. ファイルサーバーについてプロジェクトでは、公開ソフトウェアやデータをプロジェクト チーム メン...

ユーザーがフォームを繰り返し送信するのを防ぐ方法の概要

重複したフォーム送信は、マルチユーザー Web アプリケーションで最も一般的で厄介な問題です。重複送...

MySQL スロークエリログの役割と公開

序文MySQL スロー クエリ ログは、MySQL が提供するログ レコードの一種です。これは、応答...

Linuxファイルシステム操作の実装

この読書ノートでは、主にファイルシステムに関連する操作を記録します。ディスクとディレクトリの容量ディ...