JRun によるアプリケーションの開発
|
|
JRun によるサーブレットへの
要求のマッピング
|
JRun によるファイルの提供
既定のアプリケーションは Web ルート (/
) にマッピングするため、JRun は、Web サーバーに送信されるすべての要求を調べます。JRun では、高度なコーディング テクニックを使用して、パフォーマンスを低下させることなく JRun 以外の Web サーバーのファイルを提供できるようにしています。
次のセクションでは、JRun Web サーバーの対話について説明し、2 つのファイル サービス事例を記載します。
Web サーバーの対話
Web サーバーは、着信したすべての要求を JRun に渡します。JRun は、既定および既定以外のアプリケーション用のアプリケーション マッピングと、暗黙的および明示的サーブレット マッピングを使用して、次の図で示すように各要求を処理します。
各 Web サーバーは、既定の Web アプリケーションを個々に所有します。
アプリケーション URL マッピング、サーブレット マッピング、および Web サーバーのファイルの存在に応じて、JRun は次のいずれかの操作を行います。
- 関連するサーブレットまたは JSP を呼び出します。
- Web サーバーがファイルを検索および提供できるように、Web サーバーに制御を返します (既定のアプリケーションのみ)。
- エラーを返します。既定のアプリケーションでリソースが見つからない場合、Web サーバーは 404 を返します。既定以外のアプリケーションでリソースが見つからない場合、JRun は 404 を返します。
JRun は、既定のアプリケーションを除くすべてのクライアントにエラーを直接返します。したがって、Web サーバー用に定義された、404 エラーの処理用ページなどのカスタム エラー ページは使用されません。ただし、JRun アプリケーション用にカスタム エラー ページを定義することで、同じ機能を実装できます。
事例
次のセクションでは、2 つの事例を記載します。それぞれの事例でアクセスの例をいくつか示します。
各事例では、次の内容を説明します。
- 1 つまたは複数のアプリケーション マッピング
- 暗黙的サーブレット マッピング
- 明示的サーブレット マッピング
各例では、次の内容を記載します。
- 要求 URI
- JRun の応答
- 実際に解決されるドキュメント
- 処理順序
単一の既定の Web アプリケーション
この事例では、単一の既定の Web アプリケーションを使用します。既定の Web アプリケーションは、Web サーバーのルート (/
) にマッピングします。この事例では、次の暗黙的サーブレット マッピングも使用します。
*.jsp = jsp
/servlet = invoker
次の表は、単一の既定のアプリケーションに対してファイルを提供するアクセスの例を示します。
要求 URI |
JRun の応答 |
実際に解決される ドキュメント |
処理順序 |
/index.html
|
スラッシュ (/) は既定のアプリケーションに相当しますが、既定のアプリケーションには対応するサーブレット マッピングがありません。JRun は、Web サーバーに制御を返します。
|
webroot/index.html
|
- 既定のアプリケーション
- Web サーバー
|
/app1
/index.html
|
app1 対するアプリケーションマッピングがないため、JRunは既定のアプリケーションを使用します。既定のアプリケーションには対応するサーブレット マッピングがありません。JRun は、Web サーバーに制御を返します。
|
webroot/app1/
index.html
|
- 既定のアプリケーション
- Web サーバー
|
/app1/foo
/bar.jsp
|
app1 対するアプリケーション マッピングがないため、JRun は既定のアプリケーションを使用します。既定のアプリケーションには、*.jsp に対するサーブレット マッピングがあるため、JRun は jsp サーブレットを呼び出し、jsp サーブレットは、 Web サーバーと通信してパスを解決します。
|
webroot/app1/foo/
bar.jsp
|
- 既定のアプリケーション
jsp サーブレットgeneratedname.class
|
/app1/snoop
|
app1 対するアプリケーション マッピングがないため、JRun は既定のアプリケーションを使用します。既定のアプリケーションには、対応するサーブレット マッピングがないため、JRun は要求を Web サーバーに返し、Web サーバーは 404 をクライアントに返します。
|
File not found (404) (この例を機能させるには、
/app1/snoop に対してサーブレット マッピングを定義します。)
|
- 既定のアプリケーション
- Web サーバー
|
/servlet/
SnoopServlet
|
/servlet 対するサーブレット マッピングがないため、JRun は制御を invoker サーブレットに渡します。
|
サーブレットには適用されません。
|
- 既定のアプリケーション
invoker サーブレットSnoopServlet
|
JRun サーバーに複数の Web アプリケーションが存在する場合
この事例では、次のアプリケーションを使用します。
- 既定の Web アプリケーションは、Web サーバーのルート (
/
) にマッピングします。
App1
Web アプリケーションは、/app1
にマッピングします。この Web アプリケーションには、明示的サーブレット マッピング /snoop = SnoopServlet
があります。
両方の Web アプリケーションで、次の暗黙的サーブレット マッピングを使用します。
*.jsp = jsp
/servlet = invoker
次の表は、複数のアプリケーションに対するファイルの提供の例を示します。
要求 URI |
JRun の応答 |
実際に解決される ドキュメント |
処理順序 |
/index.html
|
スラッシュ (/) は既定のアプリケーションに相当しますが、既定のアプリケーションには一致するサーブレット マッピングがありません。JRun は、Web サーバーに制御を返します。
|
webroot/index.html
|
- 既定のアプリケーション
- Web サーバー
|
/app1
/index.html
|
JRun は App1 アプリケーションを使用して、Web アプリケーションのルートで見つかった index.html ファイルを提供します。
|
approot/index.html
|
App1 アプリケーション |
/app1/foo
/bar.jsp
|
JRun は App1 アプリケーションを使用します。App1 アプリケーションには、*.jsp に対するサーブレット マッピングがあるため、JRun は jsp サーブレットを呼び出し、jsp サーブレットはアプリケーション マッピングを使用して、パスを解決します。
|
approot/foo/bar.jsp
|
App1 アプリケーション
- jsp サーブレット
generatedname.class
|
/app1/snoop
|
JRun は App1 アプリケーションを使用します。App1 アプリケーションには、/snoop に対するマッピングがあるため、JRun は制御を関連するサーブレット (SnoopServlet ) に渡します。
|
サーブレットには適用されません。
|
App1 アプリケーション
SnoopServlet
|
/app1
/servlet/
SnoopServlet
|
JRun は App1 アプリケーションを使用します。App1 アプリケーションには、/servlet に対するマッピングがあるため、JRun は制御を
invoker サーブレットに渡します。
|
サーブレットには適用されません。
|
App1 アプリケーション
invoker サーブレットSnoopServlet
|
Copyright © 2001, Macromedia Inc. All rights reserved. |
|