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

推薦する

Dockerコンテナでユーザーを分離する方法

前回の記事「Docker コンテナの UID と GID を理解する」では、Docker コンテナ内...

MySQL MGR 構築時の一般的な問題と解決策

目次01 よくある故障 1 02 よくある欠陥 2 03 よくある欠陥 3 04 よくある欠陥 4 ...

CSS3 アドバンス LESS で星空アニメーションを実装するサンプルコード

この記事では、星空アニメーションを実現するための高度な CSS3 LESS のサンプルコードを次のよ...

この記事では、MySQLのマスタースレーブ同期の原理を説明します。

目次MySQL マスタースレーブ同期原理の簡単な分析1. マスタースレーブとは何ですか? 2. 主従...

nginx を使用したプロキシ サーバーの設定

Nginx は、リバース プロキシ機能を使用して負荷分散を実装できるほか、フォワード プロキシ機能を...

Idea の起動速度を改善し、Tomcat ログの文字化けを解決する方法

目次序文アイデアの起動速度Tomcat ログが文字化けしている序文Idea を再インストールしたので...

Web デザインでフラッシュ オーバーレイ ポップアップ レイヤーの z-index プロパティを設定しても機能しない

デフォルトでは、Flash は常にページのトップレベルに表示されます。つまり、ページに DHTML ...

MySQL 5.7.20 zip インストール チュートリアル

MySQL 5.7.20 zipインストール、具体的な内容は次のとおりです(1)圧縮パッケージを解凍...

Vue プロジェクトでブラウザ キャッシュ設定を無効にする例

プロジェクトをリリースするときに、キャッシュをクリーンアップする必要があるという問題に遭遇することが...

WeChat アプレットの日付と時刻のコンポーネント (年、月、日、時間、分)

この記事の例では、WeChatアプレットの日付と時刻コンポーネントの具体的なコードを参考までに共有し...

Docker+Nginx を使ってシングルページアプリケーションをデプロイする

開発から導入まで自分で行うシングルページアプリケーションを開発する場合、ビルドを実行した後 npm ...

Vueプラグインの実装で発生した問題の概要

目次シーン紹介プラグインの実装問題1: 重複したヘッダーコンポーネント質問2: 別の実装アイデア質問...

WeChatアプレットシングルページアプリケーションルーティングを徹底的に理解するための10分

シングルページアプリケーションの特徴「前提:」Web ページには、クリックするとサイト内の他のページ...

MySQL で union all を使用してユニオンソートを取得する方法

プロジェクトでは、何らかの不可逆的な理由により、テーブルに保存されたデータがページの表示要件を満たす...

MySQL カーディナリティ統計の簡単な分析

1. カーディナリティとは何ですか?カーディナリティとは、MySQL テーブルの列内の異なる値の数を...