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

推薦する

MySQL マスタースレーブレプリケーションのいくつかのレプリケーション方法の概要

非同期レプリケーションMySQL レプリケーションは、デフォルトでは非同期です。マスター スレーブ ...

美しい FLASH ウェブサイト デザイン例 50 選

Flashにより、デザイナーや開発者はブラウザ上でリッチなコンテンツを提供し、動き、インタラクティブ...

Docker実行コンテナが作成状態にある問題についての簡単な説明

最近の問題としては、次のような現象があります。システムには、docker run コマンドを継続的に...

ウェブサイト製品設計の参考となるいくつかの原則

以下の分析は製品設計原則に関するものですが、そのほとんどはウェブサイト製品に基づいているため、ユーザ...

Linux プログラムの実行中に動的ライブラリをロードできない場合の解決策

Linux でダイナミック ライブラリをロードできません次のような異常事態が発生した場合./test...

IE環境では、divの高さはフォントの高さよりも大きくなければならないと規定されています。

コードをコピーコードは次のとおりです。 <div class="content&qu...

js配列forEachインスタンスの詳細な使用方法

1. forEach() は map() に似ています。これも渡された関数に各要素を順番に適用します...

システムエラー 1067 を解決するための MySQL データベース グリーン バージョンのインストール チュートリアル

ソフトウェアのグリーンバージョンとインストールバージョンの違いは何ですか?通常、ファイルのインストー...

データベースインデックスの知識ポイントの概要

目次ファーストルックインデックスインデックスの概念インデックスファイルの構成インデックスの役割SQL...

Mysql テーブル、列、データベースの追加、削除、変更、クエリの問題の概要

以下は私がまとめた基本的なSQL知識です。主に参考資料として、また将来の他の初心者の助けとして、私自...

Docker: /etc/default/docker の DOCKER_OPTS パラメータを変更しても反映されない

デフォルトでは、 /etc/default/docker 設定は有効になりません。docker 環境...

docker の実行に必要な権限の分析

Docker を実行するには root 権限が必要です。非 root ユーザーに docker コマ...

MySQLでよく使われる4つのストレージエンジンについて簡単に説明します。

よく使われる4つのMySQLエンジンの紹介(1):MyISAMストレージエンジン:トランザクションや...

JavaScript 組み込みの日付と時刻の書式設定のサンプル コード

1. 基礎知識(日付オブジェクトのメソッド) 😜 getFullYear() は年を表す4桁の数字を...

CentOS7 で MySQL のスケジュールされた自動バックアップを実装する方法

実稼働環境で起こる最も嬉しいことは、シナリオによっては、更新または削除時にパラメータを無視せざるを得...