JRun サーバーで実行される各 Web アプリケーションには、1 つのアプリケーション マッピングと複数のサーブレット マッピングが含まれます。Web アプリケーションを最適な方法で使用するには、HTML ファイル、JSP、およびサーブレットに対する要求を処理するために JRun がどのようにアプリケーション マッピングとサーブレット マッピングを使用するかを理解する必要があります。
JRun サーバーには、次の 2 種類の Web アプリケーションが含まれています。
.class
ファイルおよび明示的にマッピングされたリソースを除いて、Web サーバーのルート ディレクトリに関連する既定のアプリケーションのコンテンツである HTML や JSP ファイルなどを提供します。既定のアプリケーションは、JRun サーバーの local.properties
ファイルで appname.use-webserver-root=true
を設定して指定します。
複数の Web サーバーが 1 つの JRun サーバーに接続する場合、JRun サーバーには、 複数の既定のアプリケーションが各 Web サーバーに 1 つずつ含まれます。JRun 接続モジュール (JCM) は、Web サーバーと既定のアプリケーションの関係を管理 します。
JRun では、Java サーブレット API バージョン 2.2 の仕様書に準拠して、次の図に示すように URL がプロトコル、ホスト、ポート (オプション)、および要求 URI で構成されるように考慮されています。
アプリケーション マッピングおよびサーブレット マッピングは、要求 URI の異なる部分を使用して、どのサーブレットを呼び出すかを決定します。この要求 URI は次のコンポーネントに分割されます。
ContextPath
は、Web アプリケーション マッピングに関連付けられたパス接頭辞を指定します。Web サーバーの URL ネームスペースのルート ディレクトリにある既定のアプリケーションの場合、コンテキスト パスは空の文字列になります。既定以外のアプリケーションの場合、コンテキスト パスは、スラッシュ (/) で始まりますが、スラッシュで終了しません。
ServletPath
は、要求をアクティブにしたりサーブレット マッピングに一致する URL の部分です。このパスはスラッシュ (/) で始まります。PathInfo
には、要求パスの残りの部分が含まれます。
JRun がどのように要求 URI を、コンテキスト パス、サーブレット パス、パス情報に分割するかは、アプリケーション マッピングおよびサーブレット マッピングによって決まります。たとえば、アプリケーション マッピングが /hrapp
、サーブレット マッピングが /NewEmpServlet
、要求 URI が /hrapp/NewEmpServlet?empid=61355 の場合、コンテキスト パスは /hrapp
、サーブレット パスは /NewAppServlet
、パス情報は empid=61355
になります。また、アプリケーション マッピングがなく、サーブレット マッピングが /hrapp/NewEmpServlet
、要求 URI が /hrapp/NewEmpServlet/login
の場合、コンテキスト パスは空白文字、サーブレット パスは /hrapp/NewEmpServlet
、パス情報は /login
になります。詳細については、"事例"を参照してください。
メモ 要求 URI とパス部分の URL エンコードが異なる場合を除き、次のステートメントは
常に true になります。 |
サーブレットに渡される HttpServletRequest
オブジェクトには、ContextPath
、ServletPath
、および PathInfo
へのアクセスに使用可能なメソッドが含まれます。詳細については、"javax.servlet.http"を参照してください。
アプリケーション マッピングは、コンテキスト パスを Web アプリケーションの名前およびディレクトリ パスに関連付けます。これらのマッピングは、JMC を使用して管理します。アプリケーション マッピングは、JRun 内部の local.properties
ファイルに記録されます。
このマッピングは、Web サーバーのファイル システム内の Web アプリケーションの物理的位置と一致している必要はありません。たとえば、myapp
が Web アプリケーションのドキュメント ルート ディレクトリの場合に、Web アプリケーションをサーバーのディレクトリ c:/apps/myapp
に配置しているとします。myapp
以下は、Web アプリケーションのディレクトリ構造です。
この場合、Web アプリケーションが http://www.mycomp.com/myapp の形式で URL に応答するように、/myapp
に対してアプリケーションの URL マッピングを作成できます。このマッピングを設定すると、/myapp
コンテキスト パスを含むすべての URL が Web アプリケーションにマッピングされます。
JMC を使用したアプリケーション マッピングの定義の詳細については、『JRun セットアップ ガイド』を参照してください。
サーブレット マッピングは、サーブレットを URL パターンに関連付けます。URL パターンには、/MyServlet
などの接頭辞、または *.jsp
などの接尾辞を使用できます。指定された URL パターンに一致するサーブレット パスが要求 URI に含まれる場合、JRun は関連するサーブレットを呼び出します。
Web サーバーがページまたはサーブレットに対する要求を受信すると、JRun は、まず要求 URI のコンテキスト パスを JRun に定義されているアプリケーション URL マッピングに一致させて、Web アプリケーションを検索します。Web アプリケーションが見つかると、JRun はその Web アプリケーションのサーブレット マッピングを使用して、指定されたリソースを検索します。コンテキスト パスに一致するアプリケーション マッピングがない場合、JRun はその Web サーバーの既定のアプリケーションのサーブレット マッピングを使用して、リソースを検索します。
明示的サーブレット マッピングは JMC を介して定義および管理され、web.xml
ファイルに記録されます。セキュリティを最大にするには、運用 Web アプリケーションの各サーブレットごとに明示的サーブレット マッピングを定義する必要があります。JMC を使用したサーブレット マッピングの定義の詳細については、『JRun セットアップ ガイド』を参照してください。
JRun は、次のような一連の暗黙的サーブレット マッピングも保持します。
/servlet = invoker
*.jrun = invoker
*.jsp = jsp
/ = file
(既定以外のアプリケーションのみ)*.shtml = ssifilter
*.thtml = template
暗黙的サーブレット マッピングは、JMC で新しいマッピングを定義することにより、書き換えられます。たとえば、/servlet
を LoginServlet
または 404Servlet
に関連付けることで、invoker
サーブレットのサーブレット マッピングを変更できます。
メモ 暗黙的サーブレット マッピングは、JRun サーバーのすべてのアプリケーションに
よって共有され、 |
JRun には、/servlet
を invoker
サーブレットに関連付けるサーブレット マッピングが含まれています。このサーブレット マッピングにより、サーブレット パス /servlet
を含む要求 URI は、invoker
サーブレットによって処理されるようになります。invoker
サーブレットは、JRun に対して定義されていないサーブレット用の汎用呼び出しメカニズムを提供します。このマッピングは次のような状況で役立ちます。
invoker
サーブレットは、クラス名を使用して一時的なサーブレット登録を自動的に作成するからです。
WEB-INF/classes
以下のサーブレットを、servlets
ディレクトリに存在するかのように処理することで、作業の開始をより速やかに行うことができます。
セキュリティとパフォーマンス上の理由から、すべてのサーブレットに対して明示的マッピングを定義して、運用システムの /servlet = invoker
マッピングを書き換える必要があります。運用アプリケーションでは、場合によっては、常にエラーを返すカスタマイズしたサーブレットに /servlet
のマッピングを関連付けるような方法も考えられます。たとえば、次のように設定します。
/servlet = 404servlet
JRun は invoker
サーブレットを次のように使用します。
/app1/servlet/SnoopServlet
)。
/app1
)。 /servlet
)。 /SnoopServlet
)。ServletContext.getNamedDispatcher(
servletname)
を呼び出して、サーブレットを呼び出します。
メモ JRun は、まず Web アプリケーションの |