2

warJboss のような Web コンテナーによって http 要求がどのように処理されるかについて興味深いのですが、JBossには多くのコンテナーがあると想定されています。そして、私が使っていたらしたいですstruts2。リクエストは最終的に struts2 にどのように渡されActionますか? 誰かがそれを理解するのを手伝ってくれますか? ありがとう。

更新しました

以下のように、A.War と B.War の両方で同じサーブレット マッピングがあるとします。しかし、それらは異なる実装クラスですHttpServlet

    <servlet-mapping>
        <servlet-name>DeployServlet</servlet-name>
        <url-pattern>/deploy/*</url-pattern>
    </servlet-mapping>

URL が の場合、JBoss http リクエストの処理順序はどうなり/deploy/testますか?

更新しました

要約してみましょう、Web コンテナが特定のリソース (*.html *.jsp など) への Http リクエストを受信すると、Web コンテナはコンテキスト xml に基づいてこのリクエストを処理する war アプリケーションを選択します (のようserver.xmltomcat)。次に、この war アプリケーションは、最初に要求を処理するために Web.xml で定義されたサーブレットを選択します...

さて、私の質問: FilterHTTP リクエストをServlet?より前に実行します。

ありがとう。

4

2 に答える 2

2

まず、Web サーバーが http リクエストを受け取ります。通常、サーブレット コンテナー (Tomcat など) とアプリケーション サーバー (JBoss など) には組み込みの Web サーバーがあります。したがって、Web サーバーまたは http サーバーとも呼ばれるサーバーは、要求を取得し、それを処理できるかどうかを判断します。

Web サーバーは、html、画像などの静的コンテンツ要求を処理できます。要求が動的コンテンツに対するものである場合は、要求をサーブレット コンテナーに渡します。

サーブレット コンテナーは Java EE サーバーの一部です (Tomcat や JBoss AS など)。サーブレット コンテナーには、展開されたすべてのアプリケーションを認識する展開記述子 (.xml ファイル) があります。そして、コンテナが起動すると、これらの設定ファイルが読み込まれます (そしてオブジェクトに変換されます)。したがって、デプロイメント記述子マッピングを使用して、リクエストが有効かどうかを判断し、有効な場合、リクエストは適切なリソース ( servlet など) に送信されます。

詳細については、サーブレットのライフサイクルとコンテナの仕組みを読むことができます。

于 2012-12-27T06:21:36.170 に答える
2

サーブレット マッピングは、アプリケーション コンテキストに関連します。2 つの戦争を展開する場合、それらは 2 つの異なるコンテキストを持つことになります。そうしないと、展開エラーが発生します。war をコンテキスト ルートとして設定できるので、2 つの wars warA.war と warB.war がサーバーhttp://my_server.comにデプロイされているとします。

いずれかの戦争でリソースにアクセスするには、次を使用します。

http://my_server.com/warA/somePage

また

http://my_server.com/warB/somePage

説明したマッピングを使用すると、 http://my_server.com/warA/deploy/のようになります

いずれかの war をコンテキスト ルートとして設定すると、http://my_server.com/deploy/ としてリソースにアクセスできます、サーバーはまだそれを /deploy から warA/deploy に変換しています。

したがって、どのサーブレットが取得されるかについて混乱することはありません。

于 2012-12-27T06:09:58.380 に答える