Web アプリケーションの開発

JRun は Web アプリケーション サーバーです。したがって、JRun によって動作できるようにするには、すべての Java サーブレットおよび JSP を Web アプリケーションの一部として組み込む必要があります。このセクションでは、最初に新規の JRun アプリケーションの作成手順について説明し、次に Web アプリケーションを構成するリソースおよびコンポーネントの追加方法について説明します。

Web アプリケーションの作成

JRun には、空の新規 Web アプリケーションを作成するユーティリティが用意されています。Web アプリケーションの基本ディレクトリ構造が作成され、適切な情報が格納された web.xml ファイルが作成されるとともに、アプリケーションが登録されてアプリケーションの URL マッピングが作成されます。

アプリケーションを作成するには、次の手順を実行します。

  1. JMC の左側ペインで、[マシン名] > [サーバー名] > [Web アプリケーション] をクリックします。
  2. 右側ペインで、[アプリケーションの作成] をクリックします。
  3. アプリケーションのサーバー名を選択します。
  4. 左側ペインのサーバーの下に表示される情報に従ってアプリケーション名を指定します。
  5. アプリケーションの Web サーバー ホストを指定します。
  6. アプリケーションの URL マッピングを指定します。
  7. アプリケーションのルート ディレクトリを指定します。

    メモ

    Web アプリケーションのルート ディレクトリは、JRun のディレクトリ構造に 入れる必要はありません。システム上の任意の場所に作成できます。


  8. [作成] をクリックしてアプリケーションを作成します。
  9. Web アプリケーションにコンテンツを追加します。アプリケーション リソースの追加の詳細については、"Web アプリケーション コンポーネントの追加"を参照してください。

Web アプリケーション コンポーネントの追加

完全な Web アプリケーションは、Java サーブレット、JSP、HTML ページのようなスタティック コンテンツ、タグ ライブラリ、EJB、その他のアプリケーション リソースから構成されます。Web アプリケーションの開発作業の一部として、アプリケーションのディレクトリ構造にこれらのコンポーネントを追加します。

次のセクションでは、Web アプリケーションにコンポーネントを追加する方法について説明します。

ディレクトリの追加

Web アプリケーションのディレクトリ構造では、WEB-INF という名前のサブディレクトリを 1 つ以上定義します。このディレクトリについては、"Web アプリケーションのディレクトリ構造"を参照してください。

ただし、多くの Web アプリケーションでは、アプリケーション ルートディレクトリの下に WEB-INF 以外のディレクトリも追加されています。そのアプリケーションのクラスパスに含まれていなければならない .class または JAR ファイルが新しいディレクトリに含まれていない場合を除いて、アプリケーションのルートにサブディレクトリを追加するときは、ディレクトリ作成以外の特別な作業は必要ありません。

たとえば、通常は、アプリケーションのルート ディレクトリの下にある images ディレクトリにイメージ ファイルを配置します。このほかの一般的なディレクトリとして、アプリケーションのルート ディレクトリの下の include ディレクトリがあります。このディレクトリには、複数のアプリケーション リソースで共有するファイルが格納されます。この場合は、アプリケーションのルートの下に include ディレクトリを作成できます。

HTML ページの追加

このアプリケーションのルート ディレクトリは、アプリケーション ファイルを提供するためのドキュメント ルートとして機能します。アプリケーションの HTML ページをアプリケーション ルートの下か、またはWEB-INF ディレクトリ以外のアプリケーション ルートのサブディレクトリに追加します。たとえば、Web アプリケーションが c:/apps/app1 にある場合、既定のトップ ページ ファイルは c:/apps/app1/index.html に配置されます。

JSP の追加

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 ディレクトリに書き込まれます。


メモ

WEB-INF/jsp ディレクトリは JRun 固有のものであり、Java サーブレット API バー ジョン 2.2 の仕様書では定義されていません。ほかのアプリケーション サーバーでは、 別の位置に.java および .class ファイルが書き込まれることもあります。


JRun は、実際には jsp という名前のサーブレットを使用して JSP を処理します。このサーブレットは、次のマッピングによって定義されるように、接尾辞 .jsp を持つページを要求するすべての URL に応答します。

*.jsp = jsp

JMC を使用してほかのマッピングを作成することによって、jsp サーブレットの使用を無効にして JSP の要求を処理できます。別のサーブレットを使用して JSP を処理する方法の詳細については、第 10 章を参照してください。

Java サーブレットの追加

Java サーブレットは .class ファイルによって表されます。Web アプリケーションに Java サーブレットを追加する手順は、サーブレットの保存場所によって異なります。通常、サーブレットは次のいずれかの場所に保存されます。

ディレクトリ WEB-INF/classesWEB-INF/lib は、Web アプリケーションのクラスパスに自動的に組み込まれます。また、これらのディレクトリ内のすべての .class および JAR ファイルは再ロード可能です。共有クラスのディレクトリがアプリケーションのクラスパスに含まれていることを確認する必要があります。さらに、共有ディレクトリの中には再ロード可能なものと、そうでないものがあります。共有リソースのディレクトリの詳細については、"Web アプリケーション間でのクラスの共有"を参照してください。

JRun で Java サーブレットを実行可能にする場合に最も重要な問題は、アプリケーション サーバーが WEB-INFWEB-INF のサブディレクトリ内のファイルを直接操作できないことです。このため、サーブレットの .class ファイルを一般に JAR ファイルとして WEB-INF/classesWEB-INF/lib に格納する場合、これをクライアントで利用可能にする方法が問題になります。

アプリケーションに Java サーブレットを追加する手順は次のとおりです。

  1. サーブレットの .class ファイル、またはサーブレットの .class ファイルが含まれている JAR ファイルを、適切なディレクトリ (通常は、WEB-INF/classes または WEB-INF/lib) にコピーします。
  2. JRun 管理コンソール (JMC) 内の [アプリケーション名] > [サーブレットURLのマッピング] プロパティを使用して、サーブレットを適切な Web アプリケーション内に登録します。

    サーブレットを登録すると、要求 URL のサーブレット クラス ファイルへのマッピ ングが設定されます。この登録情報はアプリケーションの web.xml ファイルに保存 されます。

たとえば、ファイル SnoopServlet.class によって表されるサーブレットにアクセスするとします。まず、ファイル SnoopServlet.classc:/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 がサーブレットをロードして実行し、サーブレットの結果をクライアントに返す必要があると考えています。

invoker サーブレットの使用

JRun には、文字列 /servlet が含まれる URL を JRun invoker サーブレットに関連付ける暗黙的サーブレット マッピングが含まれています。invoker サーブレットを使用すると、サーブレットの .class ファイルを Web アプリケーションのクラスパス内の任意のディレクトリにコピーしたり、サーブレットを最初に登録しなくても参照できます。未登録のサーブレットを参照するには、次の形式の URL を使用します。

http://local_host/app1/servlet/<servlet class name>

このマッピングは次のような状況で役に立ちます。


注意

セキュリティとパフォーマンス上の理由から、常にすべてのサーブレットに対して 明示的マッピングを定義し、invoker サーブレットには依存しないでください。運用 アプリケーションでは、global.properties ファイルからマッピング /servlet=invoker の削除を検討する場合もあります。


タグ ライブラリの追加

JavaServer Pages バージョン 1.1 の仕様書には、タグ ライブラリに関するフレームワークが記述されています。開発者は、タグ ライブラリを使用して関連する機能セットを 1 つの HTML タグ セットにカプセル化できます。JSP では、これらのタグを使用して、ライブラリに組み込まれている機能を利用できます。たとえば、タグ ライブラリを作成してデータベース アクセスを簡略化したり、基本的な電子商取引の操作を実行できます。

タグ ライブラリは、タグまたはカスタム タグと呼ばれる 1 つ以上のアクションから構成され、関連するタグ ハンドラ クラスでコーディングされている処理が、それぞれのタグによって実行されます。ユーザは、各カスタム タグを定義し、タグ ハンドラをコーディングするとともに、タグ ライブラリ記述子 (TLD) ファイルで各カスタム タグの機能 (属性を含む) を定義します。

カスタム タグでスクリプト変数を作成する場合、タグ拡張情報 (TEI) ファイルも作成する必要があります。TEI ファイルは、JSP コードで使用するスクリプト変数とそのスコープを定義する Java クラスです。TEI ファイルを使用して、変換時に属性を検証することもできます。

公開可能なタグ ライブラリでは、タグ ハンドラ、TLD ファイル、TEI クラス、およびその他のサポート クラスを JAR ファイルに組み込む必要があります。この JAR ファイルは、Web アプリケーションの WEB-INF/lib ディレクトリに配置する必要があります。

タグ ライブラリの作成方法と使用方法の詳細については、第 22 章を参照してください。

EJB の追加

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 アプリケーションと同じ方法で追加してください。