アプリケーションのバインディング

アプリケーション・サーバーにインストールしたアプリケーションを開始するには、そのアプリケーションで定義されたすべてのエンタープライズ Bean (EJB) 参照およびリソース参照が、アプリケーション・サーバーで定義された実際の成果物 (エンタープライズ Bean またはリソース) にバインドされている必要があります。

Open Liberty バージョン 以降では、アプリケーション・バインディングのドキュメントは 22.0.0.8 Open Liberty ウェブサイトで入手できます。

アプリケーション・バインディングおよび拡張は、アプリケーション・リソースを定義し、さまざまなアプリケーションの動作を制御する手段を提供します。 アプリケーション・バインディングは、エンタープライズ・アプリケーション、Web アプリケーション、および EJB アプリケーションに適用できます。

従来、このようなバインディングおよび拡張は、アプリケーション・アーカイブ内の XML ファイルで指定してきました。 例えば、Web アプリケーション・バインディングは、ibm-web-bnd.xml ファイルで定義できます。 Liberty バージョン 17.0.0.1 以降では、バインディングおよび拡張は、 server.xml ファイル内のアプリケーション構成の一部として指定できます。

Liberty は、アプリケーションの一部としてバインディングおよび拡張機能を定義する従来の方法をサポートします。 server.xml とアプリケーションの両方で情報が指定されている場合、2 つのソースをマージしてバインディングまたは拡張の実効セットが作成されます。

server.xml ファイルに指定されている情報が、アプリケーション成果物で指定されている同じ情報よりも優先されます。 例えば、ibm-web-bnd.xml ファイルと server.xml ファイルの両方で Web アプリケーションの仮想ホストが指定されている場合、server.xml ファイルに指定されている値が使用されます。 指定対象の情報に複数の値を含めることができる場合、server.xml ファイルの値がアプリケーションの値に追加されます。 例えば、ibm-application-bnd.xml ファイルで 2 つのセキュリティー・ロールが定義されていて、server.xml ファイルで 1 つのセキュリティー・ロールが定義されている場合、3 つすべてのセキュリティー・ロールが使用されます。 server.xml ファイルに定義されているセキュリティー・ロールの名前が、ibm-application-bnd.xml ファイルに定義されているセキュリティー・ロールと同じ場合、server.xml ファイルのロールにより、アプリケーションのロールが上書きされます。

アプリケーション内の特定のモジュールに適用されるバインディングおよび拡張については、構成で moduleName 属性を指定する必要が生じることがあります。 この指定は、従来であれば ibm-web-ext.xml ファイル、ibm-web-bnd.xml ファイル、ibm-ejb-jar-bnd.xml、および ibm-ejb-jar-ext.xml ファイル に指定していた情報に適用されます。 モジュール名属性は、ファイル拡張子を除いたモジュールの名前です。 例えば、アーカイブ stockDisplay.war 内に Web モジュールを含む、stockPrices.ear ファイルに定義されているエンタープライズ・アプリケーションの場合、以下の構成で、Web モジュールのデフォルト・エラー・ページを設定します。
<application location="stockPrices.ear">
   <web-ext moduleName="stockDisplay" default-error-page="error.html"/>
</application>
同様に、stockData.jar ファイルで定義されている EJB アプリケーションでは、以下の server.xml 構成で、データ・ソース・バインディングを指定します。
<application location="stockPrices.ear">
   <ejb-jar-bnd moduleName="stockData">
	<session name="StockBean">				
		<data-source name="jdbc/stockDS" binding-name="stockDataSource"/>
 	</session>  
   </ejb-jar-bnd>
</application>
アプリケーションがスタンドアロンの WAR ファイルまたは JAR ファイル内にあり、server.xml ファイルで webApplication エレメントまたは ejbApplication エレメントを使用して定義されている場合、モジュール名パラメーターは不要です。 例えば、前の例の stockDisplay.war ファイルおよび stockData.jar ファイルが、stockPrices.ear アプリケーションのモジュールではなく、スタンドアロン・アプリケーションだった場合、以下の構成を使用できます。
<webApplication location="stockPrices.ear">
   <web-ext default-error-page="error.html"/>
</webApplication>

<ejbApplication location="stockPrices.jar">
   <ejb-jar-bnd>
	<session name="StockBean">				
		<data-source name="jdbc/stockDS" binding-name="stockDataSource"/>
 	</session>  
   </ejb-jar-bnd>
</ejbApplication>

バインディング・ファイルおよび拡張ファイルで指定された一部のエレメントは、 Liberty ランタイムでは使用されません。 例えば、Web アプリケーション拡張では、 Liberty の再ロード動作は applicationMonitor 構成によって制御されるため、再ロード間隔属性の値は無視されます。 server.xml 構成でそのようなエレメントを指定してもエラーは生成されません。 ただし、その結果として、WebSphere Developer Tools で構成を編集するときに、認識されないエレメントという警告が発生することがあります。

場合によっては、バインディング・ファイルおよび拡張ファイルで子エレメントとして指定された構成を、 server.xml ファイルで属性として指定する必要があります。 これは、アプリケーション拡張ファイルの shared-session-context または Web 拡張ファイルの context-root など、子エレメントに可能な属性値が 1 つのみであるケースに影響します。 いずれの場合も、拡張ファイル内の子要素名は server.xml 内の属性名になり、子要素の単一属性の値は server.xml. 内の属性値になります。例えば、Web 拡張ファイル内の context-root の構成は、以下のようになります。

<web-ext>
   <context-root uri="stockPrices"/>
</web-ext>

server.xml での対応する構成は次のようになります。

<web-ext context-root="stockPrices"/>

server.xml ファイルで指定できるバインディングおよび拡張機能の完全なリストについては、 server.xml ファイル内の構成エレメントを参照してください。

以下の例では、EJB アプリケーション内の Managed Bean のリソース参照を指定します。
<ejbApplication location="someBean.jar">
    <managed-bean-bnd>
	<managed-bean class="com.ibm.MyBean">
		<resource-ref name="jdbc/myBinding" binding-name="jdbc/TestDataSource" />
	</managed-bean>
    </managed-bean-bnd>
</ejbApplication>
以下の構成では、アプリケーションの共有セッション・コンテキスト属性を false に設定します。
<application location="myApplication.ear">
	<application-ext shared-session-context="false" />
</application>
以下の構成では、Web アプリケーションの仮想ホストを設定します。
<application location="myApplication.ear">
	<web-bnd moduleName="myWebModule">
		<virtual-host name="default_host" />
	</web-bnd>
</application>