マッピング

JRun サーバーで実行される各 Web アプリケーションには、1 つのアプリケーション マッピングと複数のサーブレット マッピングが含まれます。Web アプリケーションを最適な方法で使用するには、HTML ファイル、JSP、およびサーブレットに対する要求を処理するために JRun がどのようにアプリケーション マッピングとサーブレット マッピングを使用するかを理解する必要があります。

JRun サーバーには、次の 2 種類の Web アプリケーションが含まれています。

JRun では、Java サーブレット API バージョン 2.2 の仕様書に準拠して、次の図に示すように URL がプロトコル、ホスト、ポート (オプション)、および要求 URI で構成されるように考慮されています。

アプリケーション マッピングおよびサーブレット マッピングは、要求 URI の異なる部分を使用して、どのサーブレットを呼び出すかを決定します。この要求 URI は次のコンポーネントに分割されます。

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 になります。
RequestURI = contextpath + servletpath + pathinfo


サーブレットに渡される HttpServletRequest オブジェクトには、ContextPathServletPath、および 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 は、次のような一連の暗黙的サーブレット マッピングも保持します。

暗黙的サーブレット マッピングは、JMC で新しいマッピングを定義することにより、書き換えられます。たとえば、/servletLoginServlet または 404Servlet に関連付けることで、invoker サーブレットのサーブレット マッピングを変更できます。


メモ

暗黙的サーブレット マッピングは、JRun サーバーのすべてのアプリケーションに よって共有され、local.properties ファイルに記録されます。


invoker サーブレットの使用

JRun には、/servletinvoker サーブレットに関連付けるサーブレット マッピングが含まれています。このサーブレット マッピングにより、サーブレット パス /servlet を含む要求 URI は、invoker サーブレットによって処理されるようになります。invoker サーブレットは、JRun に対して定義されていないサーブレット用の汎用呼び出しメカニズムを提供します。このマッピングは次のような状況で役立ちます。

セキュリティとパフォーマンス上の理由から、すべてのサーブレットに対して明示的マッピングを定義して、運用システムの /servlet = invoker マッピングを書き換える必要があります。運用アプリケーションでは、場合によっては、常にエラーを返すカスタマイズしたサーブレットに /servlet のマッピングを関連付けるような方法も考えられます。たとえば、次のように設定します。

/servlet = 404servlet

JRun は invoker サーブレットを次のように使用します。

  1. 要求 URI にアクセスします (例 : /app1/servlet/SnoopServlet )。
  2. コンテキスト パスを抽出します (例 : /app1 )。
  3. サーブレット パスを抽出します (例 : /servlet)。
  4. パス情報からサーブレット名を抽出します (例 : /SnoopServlet)。
  5. ServletContext.getNamedDispatcher(servletname) を呼び出して、サーブレットを呼び出します。

メモ

JRun は、まず Web アプリケーションの web.xml ファイルを調べて、サーブレットが 定義されているかどうかを確認します。一致するサーブレットが見つからない場合、 JRun は アプリケーションのクラスパスに記載されたディレクトリ内でサーブレットを 検索します。