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 ステートメントを使用した簡単な追加、削除、変更、クエリ操作の例

推薦する

CSS属性のデフォルト値width: autoとwidth: 100%の違いの詳細な説明

幅: 自動子要素(コンテンツ+パディング+境界線+余白を含む)は、親要素のコンテンツ領域全体を埋めま...

jQueryのチェーンプログラミングスタイルの詳細な例

チェーンプログラミングの実装原理jQuery を使用すると、開発者は常にドット構文を使用して独自のメ...

MySQLでユーザーを作成し、権限を管理する方法

1. ユーザーとパスワードの作成方法1. MySQLデータベースに入る mysql> mysq...

MySQLは外部SQLスクリプトファイルのコマンドを実行します

目次1. SQLコマンドを含むSQLスクリプトファイルを作成する2. SQLスクリプトファイルを実行...

Navicat For MySQL の使い方に関する簡単なチュートリアル

推薦する: Navicat for MySQL 15 登録とアクティベーションの詳細なチュートリアル...

MySQL統計テーブルのサイズを説明する例

各データベース内の各テーブルのサイズをカウントすることは、データ ガバナンスの最も単純な要件の 1 ...

基本的な HTML ディレクトリの問題 (相対パスと絶対パスの違い)

相対パス - ファイルを参照する Web ページの場所に基づいて確立されたディレクトリ パス。そのた...

ハイパーリンクに関するいくつかの質問

ポテトチップスパーティーのこのエピソードに参加して、何人かの友人に会えてとても嬉しいです。思いがけず...

Ubuntu 18.04 で中国語入力方法を設定する方法

Ubuntuの最新バージョンでは、ユーザーは中国語入力方法を別途ダウンロードする必要がなくなりました...

標準的なHTMLの書き方は、Dreamweaverによって自動的に生成されるものとは異なります。

コードをコピーコードは次のとおりです。 <!--doctype はドキュメント タイプ htm...

CentOS での mysql5.7 の詳細なインストールと設定のチュートリアル

インストールユーザーにインストール権限があることを確認してくださいルートスイッチなしsuルート(su...

HTML TextArea でのフォーマット保存の問題の解決方法

textarea の形式は保存時にデータベースに保存できますが、表示時には /n と相互に変換できな...

固定サイドバーを実現するためのJavaScript

固定サイドバーを実装するにはJavaScriptを使用します。参考までに、具体的な内容は次のとおりで...

ウェブページのカスタム選択ボックス選択

選択ドロップダウン リスト フォームは誰もがよく知っているかもしれませんが、デフォルトのドロップダウ...

JavaScript演算子の使用に関するヒントをいくつか共有します

目次1. オプションの連鎖演算子 [? .】 2. 論理的な空の代入 (?? =) 3. 論理和代入...