2.3.4 タグライブラリのJ2EEアプリケーションへの格納
アプリケーションサーバでは,タグライブラリをJ2EEアプリケーションに格納し,JSPから使用できます。
J2EEアプリケーションに格納されたタグライブラリをJSPから使用する方法は,JSPをJ2EEサーバでコンパイルするかcjjspcコマンドでコンパイルするかによって異なります。
- J2EEサーバでJSPをコンパイルする場合
-
タグライブラリをライブラリJARに格納する。
- cjjspcコマンドでJSPをコンパイルする場合
-
タグライブラリをクラスパスに指定したJARファイルに格納する。
それぞれの方法について説明します。
(1) J2EEサーバでJSPをコンパイルする場合
タグライブラリをライブラリJARに格納することで,JSPから使用できます。
(a) TLDファイルの検索
タグライブラリをライブラリJARとしてJ2EEアプリケーションに格納した場合,web.xmlの<taglib>要素でTLDファイルを指定できません。この場合,JSPファイルのtaglibディレクティブのuri属性で,TLDファイルの<uri>要素に指定されたURIを指定してください。Webアプリケーション開始時に,ライブラリJARに格納されたTLDファイルがWebコンテナによって検索され,TLDファイルの<uri>要素に記述されたURIとそのTLDファイル自身がマッピングされます。
なお,<uri>要素がない場合はURIとそのTLDファイル自身はマッピングされません。
ライブラリJAR内のTLDファイルのマッピングは最も優先順位が低いマッピングです。ライブラリJAR内のTLDファイルのマッピングの優先順位については,「8.2.7(7) taglibディレクティブのuri属性で指定するURIとTLDファイルのマッピングについて」を参照してください。
JSPファイルでは,taglibディレクティブのuri属性でURIを指定することでタグライブラリを使用できます。
(b) ライブラリJARに格納する場合に使用できるタグライブラリの機能
タグライブラリをライブラリJARに格納する場合に使用できるタグライブラリの機能は,カスタムタグおよびリスナです。
タグファイルは使用できません。JSPファイルまたはタグファイルで,ライブラリJARに格納されたタグファイルを使用した場合,ライブラリJARに格納されたTLDファイルの<tag-file>要素が無視されます。そのため,タグファイルが存在しないと見なされて,JSPトランスレーション時にトランスレーションエラーとなります。
(2) cjjspcコマンドでJSPをコンパイルする場合
JARファイル内のタグライブラリをcjjspcコマンドの-classpathオプションでクラスパスに指定することで,WebアプリケーションのWEB-INF/libディレクトリ以外に配置したタグライブラリをJSPから使用できます。
(a) TLDファイルの検索
クラスパスに指定したJARファイルに含まれるTLDファイルが自動的に検出され,TLDファイルの<uri>要素で指定したURIとそのTLDファイル自身がマッピングされます。
クラスパスに指定したJARファイル内のTLDファイルのマッピングは最も優先順位が低いマッピングです。クラスパスに指定したJARファイル内のTLDファイルのマッピングの優先順位については,「8.2.7(7) taglibディレクティブのuri属性で指定するURIとTLDファイルのマッピングについて」を参照してください。
(b) クラスパスに指定したJARファイルに格納する場合に使用できるタグライブラリの機能
タグライブラリをクラスパスに指定したJARファイルに格納する場合に使用できるタグライブラリの機能は,カスタムタグおよびリスナです。
タグファイルは使用できません。JSPファイルまたはタグファイルで,クラスパスに指定したJARファイルに格納されたタグファイルを使用した場合,JARファイルに格納されたTLDファイルの<tag-file>要素が無視されます。そのため,タグファイルが存在しないと見なされて,JSPトランスレーション時にトランスレーションエラーとなります。