Web アプリケーションのパッケージ

Web アプリケーションは、次の表のディレクトリ構造を維持している必要があります。単独で、またはエンタープライズアプリケーションの一部として Web アプリケーションをデプロイできます。
ディレクトリ
説明
<Web アプリケーション>
(ルートディレクトリまたは WAR ルート)
WEB-INF ディレクトリおよび、ユーザーの Web ブラウザからアクセスされる JSP、HTML ページ、カスケーティングスタイルシート、画像、JavaScript ファイルなどの全てのファイルを格納します。
これらのファイルは、Web アプリケーションのルートディレクトリ、または予約名 WEB-INF を使用しない任意のサブディレクトリに直接置くことができます。
/WEB-INF
classes および lib ディレクトリ、標準 Web アプリケーションデプロイメントディスクリプタ (web.xml)、さらに必要に応じて JRun 固有のデプロイメントディスクリプタ (jrun-web.xml) を格納します。デプロイメントディスクリプタの詳細については、弟 1 章、「J2EE モジュールの設定」を参照してください。
/WEB-INF/classes
サーブレット、その他の Java クラス、および JAR ファイルにパッケージされない関連リソースを格納します。
/WEB-INF/lib
クラスおよび関連リソースが含まれている JAR ファイルを格納します。

このセクションでは、JRun で Web アプリケーションをデプロイするための準備の概要について説明しますが、特定のツールについては説明しません。JRun には XDoclet というオープンソースツールが用意されています。このツールは、ファイル名が Servlet または Library で終わるサーブレットおよびタグライブラリソースファイル内に、特殊な Javadoc コメントをベースにした Web アプリケーションデプロイメントディスクリプタと JSP タグライブラリディスクリプタ (TLD) を生成します。JRun では、JRun 固有のデプロイメントディスクリプタをサポートするように XDoclet を拡張し、自動コンパイルおよびデプロイをサポートしています。詳細については、『JRun プログラマーガイド』を参照するか、XDoclet の Web サイト (sourceforge.xdoclet.org) をご覧ください。

Web アプリケーションをパッケージするには

  1. エンドユーザーの Web ブラウザからアクセスする JSP、HTML ファイル、イメージ、その他のリファレンスファイルを含むステージングディレクトリを作成します。このディレクトリを Web アプリケーションディレクトリとして簡単に識別できるように、-war で終わるディレクトリ名を使用します。また、リファレンスファイルの元のディレクトリ構造を維持するようにしてください。
  2. ステージングディレクトリで WEB-INF というディレクトリを作成します。
  3. WEB-INF ディレクトリで classes および lib というディレクトリを作成します。
  4. アプリケーションのサーブレットおよびその他のアーカイブされていないクラスファイルを WEB-INF/classes ディレクトリにコピーします。
  5. Web アプリケーションで JSP タグライブラリを使用する場合は、JAR ファイルにパッケージしたタグライブラリを WEB-INF/lib ディレクトリにコピーします。アーカイブされていないタグライブラリクラスを WEB-INF/classes ディレクトリにコピーします。

    JAR ファイル内にデプロイする場合は、タグライブラリファイル (TLD) を META-INF ディレクトリまたはMETA-INF ディレクトリのサブディレクトリにおく必要があります。Web アプリケーションに直接デプロイする場合は、TLD ファイルを WEB-INF ディレクトリまたはそのサブディレクトリに置く必要があります。JSP タグライブラリディレクティブの uri 属性内の TLD ファイルへのパスはスラッシュで始まり、JSP を含んでいる Web アプリケーションのルートを基準にしています。タグライブラリディレクティブは TLD ファイルを直接指すか、あるいは TLD ファイルを含んでいる JAR ファイルを指すことができます。

  6. WEB-INF ディレクトリに Web アプリケーションデプロイメントディスクリプタを置きます。Web アプリケーションデプロイメントディスクリプタには次のものがあります。
  7. パフォーマンスとセキュリティ上の理由から、Web アプリケーションを運用環境に移行する前に、JSP ページのコンパイルを無効にして、テキストベースの .jsp ファイルではなく、バイナリの .class ファイルのみを配布することもできます (オプション)。この処理は、次の 2 つの手順で構成されます。
    1. ダイナミック JSP コンパイルを無効にします。次の「"ダイナミック JSP コンパイルの無効化" 」のセクションを参照してください。
    2. JSPC コンパイラを使用して JSP をプリコンパイルします。「JSP のプリコンパイル」を参照してください。

    メモ:  JRun 3.x 用にプリコンパイルされている JSP は JRun 4 では使用できません。オリジナルのコンパイル済み JSP を削除し、JRun 4 用にコンパイルし直す必要があります。

  8. 開発環境で Web アプリケーションをスタンドアローンモジュールとしてデプロイするには、ディレクトリ構造を JRun デプロイディレクトリにコピーします。デフォルトのデプロイディレクトリは JRun サーバのルートディレクトリ (<JRun のルートディレクトリ>/servers/<JRun サーバ>) です。JMC を使用すれば、デプロイディレクトリを追加または削除できます。JRun では、モジュールが自動的にデプロイディレクトリにデプロイされます。デプロイの詳細については、弟 3 章、「J2EE モジュールのデプロイ」を参照してください。
  9. 運用環境向けに Web アプリケーションを準備するには、ステージングディレクトリの最上位レベルから次の jar ユーティリティコマンドを使用して WAR ファイルにパッケージします。
    jar cvf <Web モジュール>.war
    

    ここで、<Web モジュール> は Web アプリケーションの名前です。

  10. Web アプリケーションがエンタープライズアプリケーションの一部である場合は、「エンタープライズアプリケーションのパッケージ」を参照してください。

ダイナミック JSP コンパイルの無効化

パフォーマンスとセキュリティ上の理由から、ダイナミック JSP コンパイルを無効にして、テキストベースの .jsp ファイルではなく、バイナリの .class ファイルを配布できます。

ダイナミック JSP コンパイルを無効にするには

次の例に太字で示してあるように、<JRun のルートディレクトリ>/servers/
<JRun サーバ>/SERVER-INF/default-web.xml ファイルで、JSPServlet の translationDisabled 初期化パラメータを true に設定します。

<servlet>
<servlet-name>JSPServlet</servlet-name>
<servlet-class>jrun.jsp.JSPServlet</servlet-class>
<init-param>
<param-name>translationDisabled</param-name>
<param-value>true</param-value>
</init-param>
</servlet>

JRun サーバを再起動すると、変更内容が有効になります。

JSP のプリコンパイル

JSP をコンパイルする理由はいくつかあります。

JSPC コンパイラは、Web サーバのコンテキストの外部で JSP をコンパイルするときに使用するコマンドラインツールです。JSPC コンパイラを使用すると、JSP のリクエスト時に JRun を使用して JSP をコンパイルするのではなく、コマンドラインから明示的に JSP をコンパイルできます。JSPC が <JRun のルートディレクトリ>/bin ディレクトリに置かれている場合は IBM jikes コンパイラを使用します。そうでない場合は、Sun javac コンパイラを使用します。

メモ:  JSPC コンパイラは、JRun での JSP のコンパイルに使用されるコンパイラと同じコンパイラです。唯一異なる点は、JSPC コンパイラはコマンドラインから起動することです。

JSPC の呼び出し

次のコマンドを使用して、JSPC コンパイラを呼び出します。JSPC が <JRun のルートディレクトリ>/bin ディレクトリに置かれている場合は IBM jikes コンパイラを使用します。そうでない場合は、Sun javac コンパイラを使用します。

jspc
[-w web_app_root]
[-d output_directory]
[-k keep processing on errors]
[JSP names]

JSPC コンパイラの引数

JSPC では次の引数を使用します。
引数
説明
-w
(オプション)
Web アプリケーションのルートディレクトリへの絶対パス。デフォルトでは、このディレクトリは現在の作業ディレクトリです。
-d
(オプション)
JSPC コンパイラが .class および .java ファイルの出力を書き込む場所を指定します。デフォルトでは、このディレクトリは Web アプリケーションのルートディレクトリを基準にした WEB-INF/jsp ディレクトリです。
-k
(オプション)
エラーが発生しても処理を続行するように JSPC に指示します。
JSP names
(オプション)
コンパイルする JSP の名前。JSP を指定しない場合、JSPC は Web アプリケーション内にあるすべての JSP をコンパイルします。

JSPC コンパイラを使用して、jrun-web.xml デプロイメントディスクリプタで仮想マッピングが指定されている Web アプリケーションを処理する場合は、-w 引数を指定する必要があります。

JSPC コンパイラの例

次に、ページ foo.jsp をコンパイルする例を示します。このページは、c:/myapps/store にドキュメントルートディレクトリを持つ Web アプリケーションの一部です。この例では、JSPC コンパイラを実行するために必要な jrun.jar は、CLASSPATH 環境変数に含まれています。

jspc -w c:\jrun -d c:\myapps\store\WEB-INF\classes foo.jsp 

次の例では、複数の JSP をコンパイルします。JSP のパスにワイルドカードが使用されていることに注意してください。

jspc -d c:\myapps\store\WEB-INF\classes *.jsp store\*.jsp