Web フラグメント

Web アプリケーションを開発する際、複数の Web モジュールが同じコンポーネントを使用する場合、Web フラグメントの Java アーカイブ (JAR) ファイルにこれらのコンポーネントを組み込むことを考慮してください。Web フラグメントの JAR ファイルには、構成メタデータとコンポーネント・クラス・ファイルの両方が含まれます。このようにすると、アプリケーション間でのコピーが容易になります。

Web モジュール・デプロイメント記述子フラグメント (Web フラグメント) は、web.xml ファイルが提供するものと同じ構成メタデータを提供しますが、WEB-INF/lib ディレクトリーの JAR ファイルの内部にパッケージ化された web-fragment.xml ファイルとして存在します。

フレームワーク開発者は、特定のフレームワークを使用する Web アプリケーションに組み込まれる JAR ファイルを提供します。そのフレームワークでサーブレット、フィルター、またはその他の Web モジュール構成が使用される場合、Web フラグメントにより、既存の Web モジュール構成を変更しなくても、JAR ファイルをアプリケーションに簡単にドラッグすることができます。従来では、Web アプリケーション開発者は、その構成をフレームワークで必要な追加のメタデータで拡張する必要がありました。別のユース・ケースでは、前に述べたように Web モジュール間で同じコンポーネントを使用する必要があります。また Web フラグメントによって、モック・オブジェクトやスタブを使用することも簡単になります。

Web フラグメントのスキャンによって、web-fragment.xml ファイルがチェックされる各 JAR ファイルのパフォーマンスが低下します。Web アプリケーション内の JAR ファイルの数が多くなると、パフォーマンスの影響が高くなります。パフォーマンスが重要課題である場合、metadata-complete を true に設定して、Web フラグメントのスキャンを使用不可にし、必要な構成を web.xml ファイルに組み込みます。
トラブルの回避 (Avoid trouble) トラブルの回避 (Avoid trouble): Web フラグメントのスキャンを使用不可にすると、アノテーションのスキャンも使用不可になります。つまり、これらのいずれかが必要な場合、両方がスキャンされます。gotcha
重要: web.xml ファイル内の metadata-complete エレメントを true に設定すると、フラグメント・スキャンが使用不可になります。Web フラグメントのスキャン順序を強制するか、Web フラグメントのサブセットをスキャンする場合は、web.xml ファイル内に absolute-ordering タグを使用します。 別のフラグメントに対する相対的順序を指定するには、web-fragment.xml ファイル内に relative-ordering タグを使用します。
Web フラグメント内に含まれるサーブレット、フィルター、またはセキュリティー制約を認識していない場合、Web アプリケーション内にフラグメントを含めると、誤ってエンドポイントをセキュリティー・リスクにさらす可能性があります。構成されたすべてのサーブレット、フィルター、およびセキュリティー制約が期待通りに機能していることを確認してください。
トラブルの回避 (Avoid trouble) トラブルの回避 (Avoid trouble): Web フラグメント内に競合がある場合は、アプリケーションはデプロイされません。アプリケーションのインストール時に競合がある場合は、SystemOut.log ファイルを調べて、競合する項目を確認してください。gotcha
注: このトピックでは、 1 つ以上のアプリケーション・サーバー・ログ・ファイルを参照します。推奨される代替案として、分散システムや IBM® i システムの SystemOut.logSystemErr.logtrace.logactivity.log ファイルではなく、High Performance Extensible Logging (HPEL) ログおよびトレース・インフラストラクチャーを使用するようにサーバーを構成できます。また HPEL は、ネイティブ z/OS® ロギング機能と連携させて使用することができます。HPEL を使用する場合、LogViewer コマンド・ライン・ツールを サーバー・プロファイルの bin ディレクトリーから使用して、すべてのログ・ファイルにアクセスし、 情報をトレースできます。HPEL の使用について詳しくは、HPEL を使用してのアプリケーションの トラブルシューティングに関する情報を参照してください。
サーブレット 3.0 仕様で Web フラグメントおよびアノテーションをマージする一般的なルールは、以下のとおりです。
  • JAR ファイルが WEB-INF/lib ディレクトリーにある場合のみ、それらのアノテーションまたは Web フラグメント・メタデータがスキャンされます。 共有ライブラリーでは、アノテーションまたは Web フラグメント・メタデータのスキャンは行われません。
  • WEB-INF/classes ディレクトリーにあるクラスのアノテーションが最初に マージされます。これらは WEB-INF/lib ディレクトリー内のどのメタデータよりも優先されます。
  • WEB-INF/lib ディレクトリー内のすべての JAR ファイルは、web-fragment.xml ファイルを 含むかどうかに関係なく、Web フラグメントと見なされます。 JAR ファイルに web-fragment.xml ファイルが存在しない場合、web-fragment.xml ファイルは 暗黙的に存在する (空の web-fragment.xml ファイルがある) と見なされます。
  • WEB-INF/lib ディレクトリー内の各 JAR ファイルのアノテーションが、対応する web-fragment.xml ファイルにマージされた後で、競合する Web フラグメントの有無が検査されます。したがって、異なるフラグメントのアノテーションで競合があると、アプリケーションはデプロイされません。
  • Web フラグメントの順序付けを定義すると、ある特定の Web フラグメントのアノテーションおよび Web フラグメント・メタデータの両方が、順序がそれより後のフラグメントより前にマージされます。
  • WEB-INF/lib ディレクトリー内のすべての JAR ファイルはフラグメントと見なされる ため、順序が明示されないすべての JAR ファイルに対して <absolute-ordering> エレメント内の <others> エレメントが 適用されます。
 

トピックのタイプを示すアイコン 概念トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cweb_webfragments
ファイル名:cweb_webfragments.html