JRun は Web アプリケーション サーバーです。したがって、JRun によって動作できるようにするには、すべての Java サーブレットおよび JSP を Web アプリケーションの一部として組み込む必要があります。このセクションでは、最初に新規の JRun アプリケーションの作成手順について説明し、次に Web アプリケーションを構成するリソースおよびコンポーネントの追加方法について説明します。
JRun には、空の新規 Web アプリケーションを作成するユーティリティが用意されています。Web アプリケーションの基本ディレクトリ構造が作成され、適切な情報が格納された web.xml
ファイルが作成されるとともに、アプリケーションが登録されてアプリケーションの URL マッピングが作成されます。
メモ Web アプリケーションのルート ディレクトリは、JRun のディレクトリ構造に 入れる必要はありません。システム上の任意の場所に作成できます。 |
完全な Web アプリケーションは、Java サーブレット、JSP、HTML ページのようなスタティック コンテンツ、タグ ライブラリ、EJB、その他のアプリケーション リソースから構成されます。Web アプリケーションの開発作業の一部として、アプリケーションのディレクトリ構造にこれらのコンポーネントを追加します。
次のセクションでは、Web アプリケーションにコンポーネントを追加する方法について説明します。
Web アプリケーションのディレクトリ構造では、WEB-INF
という名前のサブディレクトリを 1 つ以上定義します。このディレクトリについては、"Web アプリケーションのディレクトリ構造"を参照してください。
ただし、多くの Web アプリケーションでは、アプリケーション ルートディレクトリの下に WEB-INF
以外のディレクトリも追加されています。そのアプリケーションのクラスパスに含まれていなければならない .class
または JAR ファイルが新しいディレクトリに含まれていない場合を除いて、アプリケーションのルートにサブディレクトリを追加するときは、ディレクトリ作成以外の特別な作業は必要ありません。
たとえば、通常は、アプリケーションのルート ディレクトリの下にある images
ディレクトリにイメージ ファイルを配置します。このほかの一般的なディレクトリとして、アプリケーションのルート ディレクトリの下の include
ディレクトリがあります。このディレクトリには、複数のアプリケーション リソースで共有するファイルが格納されます。この場合は、アプリケーションのルートの下に include
ディレクトリを作成できます。
このアプリケーションのルート ディレクトリは、アプリケーション ファイルを提供するためのドキュメント ルートとして機能します。アプリケーションの HTML ページをアプリケーション ルートの下か、またはWEB-INF
ディレクトリ以外のアプリケーション ルートのサブディレクトリに追加します。たとえば、Web アプリケーションが c:/apps/app1
にある場合、既定のトップ ページ ファイルは c:/apps/app1/index.html
に配置されます。
JSP を使用すると、HTML とスクリプト コードの組み合わせが含まれているテキスト ファイルから、サーブレットを作成できます。JSP (.jsp
ファイル) は、クライアントから最初に要求されたときに、Java ソース コード ファイル (.java
ファイル) に変換され、続いて Java クラス ファイル (.class
ファイル) にコンパイルされます。JSP 作成方法の詳細については、第 7 章を参照してください。
Web アプリケーションに JSP を追加するには、アプリケーションのルート ディレクトリか、または WEB-INF
にあるディレクトリ以外のアプリケーション ルートの下のディレクトリに JSP をコピーします。既定のアプリケーションに JSP を追加する場合は、Web サーバーのドキュメント ルート ディレクトリに JSP をコピーします。このディレクトリが既定のアプリケーションのルート ディレクトリとして機能しているためです。
JRun では、JSP の要求に応じて作成される .java
および .class
ファイルが、アプリケーションの WEB-INF/jsp
ディレクトリに書き込まれます。
メモ
|
JRun は、実際には jsp
という名前のサーブレットを使用して JSP を処理します。このサーブレットは、次のマッピングによって定義されるように、接尾辞 .jsp
を持つページを要求するすべての URL に応答します。
*.jsp = jsp
JMC を使用してほかのマッピングを作成することによって、jsp
サーブレットの使用を無効にして JSP の要求を処理できます。別のサーブレットを使用して JSP を処理する方法の詳細については、第 10 章を参照してください。
Java サーブレットは .class
ファイルによって表されます。Web アプリケーションに Java サーブレットを追加する手順は、サーブレットの保存場所によって異なります。通常、サーブレットは次のいずれかの場所に保存されます。
WEB-INF/classes
に .class
ファイルとして格納する。
WEB-INF/lib
に JAR ファイル内の .class
ファイルとして格納する。
ディレクトリ WEB-INF/classes
と WEB-INF/lib
は、Web アプリケーションのクラスパスに自動的に組み込まれます。また、これらのディレクトリ内のすべての .class
および JAR ファイルは再ロード可能です。共有クラスのディレクトリがアプリケーションのクラスパスに含まれていることを確認する必要があります。さらに、共有ディレクトリの中には再ロード可能なものと、そうでないものがあります。共有リソースのディレクトリの詳細については、"Web アプリケーション間でのクラスの共有"を参照してください。
JRun で Java サーブレットを実行可能にする場合に最も重要な問題は、アプリケーション サーバーが WEB-INF
や WEB-INF
のサブディレクトリ内のファイルを直接操作できないことです。このため、サーブレットの .class
ファイルを一般に JAR ファイルとして WEB-INF/classes
や WEB-INF/lib
に格納する場合、これをクライアントで利用可能にする方法が問題になります。
アプリケーションに Java サーブレットを追加する手順は次のとおりです。
.class
ファイル、またはサーブレットの .class
ファイルが含まれている JAR ファイルを、適切なディレクトリ (通常は、WEB-INF/classes
または WEB-INF/lib)
にコピーします。
[
アプリケーション名
] > [サーブレットURLのマッピング]
プロパティを使用して、サーブレットを適切な Web アプリケーション内に登録します。 サーブレットを登録すると、要求 URL のサーブレット クラス ファイルへのマッピ
ングが設定されます。この登録情報はアプリケーションの web.xml
ファイルに保存
されます。
たとえば、ファイル SnoopServlet.class
によって表されるサーブレットにアクセスするとします。まず、ファイル SnoopServlet.class
を c:/apps/app1/WEB-INF/classes
にコピーします。次に、次の表に示すサーブレット マッピングで、JMC を使用してサーブレットを登録します。
仮想パス / 拡張子 |
呼び出されるサーブレット |
---|---|
/Snoop |
SnoopServlet |
[仮想パス/拡張子]
フィールドでは、サーブレットに対応する URL を指定します。[呼び出されるサーブレット] フィールドでは、サーブレット名を指定します。サーブレット名は、.class
拡張子を除いたサーブレットのクラス ファイルの名前です。
サーブレットを登録すると、次の URL を使用して要求できます。
http://local_host/app1/Snoop
JRun ではそのサーブレットを処理し、その結果をクライアントに返します。
次の URL を使用してサーブレットに直接アクセスしようとするとエラーになります。
http://localhost/app1/WEB-INF/classes/SnoopServlet.class
この URL でエラーになるのは、JRun では WEB-INF
の下にあるファイルを操作できないためです。
しかし、app1 のルート ディレクトリに SnoopServlet.class
ファイルをコピーして、次の URL を使用してこのファイルにアクセスしようとすると次のようになります。
http://localhost/app1/SnoopServlet.class
この .class
ファイルはアプリケーションのクラスパスに含まれるディレクトリにはないので、JRun では Web サーバーによってそのファイルをクライアントに返します。Web ブラウザでは .class
ファイルの内容を表示する方法が不明なので、クライアントにファイルの保存先ディレクトリ名の入力を要求するプロンプトを表示します。しかし、ユーザはクライアントに .class
ファイルを戻したいのではなく、JRun がサーブレットをロードして実行し、サーブレットの結果をクライアントに返す必要があると考えています。
JRun には、文字列 /servlet
が含まれる URL を JRun invoker
サーブレットに関連付ける暗黙的サーブレット マッピングが含まれています。invoker
サーブレットを使用すると、サーブレットの .class
ファイルを Web アプリケーションのクラスパス内の任意のディレクトリにコピーしたり、サーブレットを最初に登録しなくても参照できます。未登録のサーブレットを参照するには、次の形式の URL を使用します。
http://local_host/app1/servlet/<servlet class name>
invoker
サーブレットは、サーブレットのクラス名を使用して一時的なサーブレット登録を自動的に作成します。
WEB-INF/classes
の下にあるサーブレットを、servlets
ディレクトリに存在するかのように処理することで、作業の開始をより速やかに行うことができます。
注意 セキュリティとパフォーマンス上の理由から、常にすべてのサーブレットに対して
明示的マッピングを定義し、 |
JavaServer Pages バージョン 1.1 の仕様書には、タグ ライブラリに関するフレームワークが記述されています。開発者は、タグ ライブラリを使用して関連する機能セットを 1 つの HTML タグ セットにカプセル化できます。JSP では、これらのタグを使用して、ライブラリに組み込まれている機能を利用できます。たとえば、タグ ライブラリを作成してデータベース アクセスを簡略化したり、基本的な電子商取引の操作を実行できます。
タグ ライブラリは、タグまたはカスタム タグと呼ばれる 1 つ以上のアクションから構成され、関連するタグ ハンドラ クラスでコーディングされている処理が、それぞれのタグによって実行されます。ユーザは、各カスタム タグを定義し、タグ ハンドラをコーディングするとともに、タグ ライブラリ記述子 (TLD) ファイルで各カスタム タグの機能 (属性を含む) を定義します。
カスタム タグでスクリプト変数を作成する場合、タグ拡張情報 (TEI) ファイルも作成する必要があります。TEI ファイルは、JSP コードで使用するスクリプト変数とそのスコープを定義する Java クラスです。TEI ファイルを使用して、変換時に属性を検証することもできます。
公開可能なタグ ライブラリでは、タグ ハンドラ、TLD ファイル、TEI クラス、およびその他のサポート クラスを JAR ファイルに組み込む必要があります。この JAR ファイルは、Web アプリケーションの WEB-INF/lib
ディレクトリに配置する必要があります。
タグ ライブラリの作成方法と使用方法の詳細については、第 22 章を参照してください。
EJB は Web アプリケーションと関連付けられていませんが、Web アプリケーションのホストである JRun サーバーと関連付けられています。Web アプリケーションが EJB にアクセスできるようにするには、その EJB を Web アプリケーションのホストである JRun サーバーか、または Web アプリケーションにアクセス可能な JRun サーバーに公開しなければなりません。
JRun における EJB の開発手順と公開手順の詳細については、第 24 章を参照してください。
追加可能なリソースには、イメージ ディレクトリや Beanのほか、データベース ドライバなどのリソース用のクラス ファイルなどがあります。JRun によって実行される Web アプリケーションにリソースを追加するときに注意する点は、リソースを正しい位置に配置することだけです。Java .class
ファイルや JAR ファイルによってリソースを提供する場合は、Web アプリケーションのクラスパス (通常は WEB-INF/classes
) に含まれているディレクトリにファイルを配置する必要があります。クラスパスの定義については、"Web アプリケーション クラスパスの決定"を参照してください。
イメージ ディレクトリなどその他のタイプのリソースについては、通常の Web アプリケーションと同じ方法で追加してください。