GlobalNamingResources コンポーネント

目次

はじめに

**GlobalNamingResources** 要素は、Server のグローバル JNDI リソースを定義します。

これらのリソースは、サーバのグローバル JNDI リソースコンテキストにリストされます。このコンテキストは、JNDI リソース How-Toで説明されている、Web アプリケーションごとの JNDI コンテキストとは異なります。この要素で定義されたリソースは、<ResourceLink>要素で明示的にリンクしない限り、Web アプリケーションごとのコンテキストでは**表示されません**。

属性

ネストされたコンポーネント

特別な機能

環境エントリ

この要素内に<Environment>エントリをネストすることで、すべてのWebアプリケーションに表示される名前付き値を環境エントリリソースとして構成できます。例えば、次のような環境エントリを作成できます。

<GlobalNamingResources ...>
  ...
  <Environment name="maxExemptions" value="10"
         type="java.lang.Integer" override="false"/>
  ...
</GlobalNamingResources>

これは、Webアプリケーションのデプロイメント記述子(/WEB-INF/web.xml)に次の要素を含めることと同等です。

<env-entry>
  <env-entry-name>maxExemptions</env-entry-name>
  <env-entry-value>10</env-entry-value>
  <env-entry-type>java.lang.Integer</env-entry-type>
</env-entry>

しかし、この値をカスタマイズするためにデプロイメント記述子を修正する必要はありません。

<Environment>要素の有効な属性は次のとおりです。

属性説明
description

省略可能。この環境エントリの分かりやすい説明。

name

java:comp/envコンテキストを基準とした、作成する環境エントリの名前。

override

Webアプリケーションのデプロイメント記述子にある同じ環境エントリ名に対する<env-entry>がここで指定された値を上書きすることを**望まない**場合は、これをfalseに設定します。デフォルトでは、上書きが許可されています。

type

この環境エントリに対してWebアプリケーションが期待する、完全修飾Javaクラス名。Webアプリケーションのデプロイメント記述子における<env-entry-type>の合法的な値である必要があります。

value

JNDIコンテキストから要求されたときにアプリケーションに提示されるパラメータ値。この値は、type属性で定義されたJava型に変換可能である必要があります。

リソース定義

Webアプリケーションのデプロイメント記述子内の<resource-ref>および<resource-env-ref>要素のJNDIルックアップに対して返されるリソースの特性を宣言するには、この要素でそれらを定義し、<Context>要素内の<ResourceLink>要素でそれらをリンクします。また、使用するオブジェクトファクトリ(Tomcatですでに知られている場合を除く)と、そのオブジェクトファクトリを構成するために使用されるプロパティを構成するために、Resource要素の属性を使用して、その他必要なパラメータも定義する**必要があります**。

例えば、次のようなリソース定義を作成できます。

<GlobalNamingResources ...>
  ...
  <Resource name="jdbc/EmployeeDB" auth="Container"
            type="javax.sql.DataSource"
     description="Employees Database for HR Applications"/>
  ...
</GlobalNamingResources>

これは、Webアプリケーションのデプロイメント記述子(/WEB-INF/web.xml)に次の要素を含めることと同等です。

<resource-ref>
  <description>Employees Database for HR Applications</description>
  <res-ref-name>jdbc/EmployeeDB</res-ref-name>
  <res-ref-type>javax.sql.DataSource</res-ref-type>
  <res-auth>Container</res-auth>
</resource-ref>

しかし、この値をカスタマイズするためにデプロイメント記述子を修正する必要はありません。

<Resource>要素の有効な属性は次のとおりです。

属性説明
auth

Webアプリケーションコードが対応するリソースマネージャにプログラムでサインオンするか、コンテナがアプリケーションに代わってリソースマネージャにサインオンするかを指定します。この属性の値はApplicationまたはContainerである必要があります。この属性は、WebアプリケーションがWebアプリケーションのデプロイメント記述子で<resource-ref>要素を使用する場合に**必須**ですが、アプリケーションが代わりに<resource-env-ref>を使用する場合は省略可能です。

closeMethod

シングルトンリソースが不要になったときに呼び出すゼロ引数のメソッドの名前。これは、ガベージコレクションの一部として行われるリソースのクリーンアップを高速化することを目的としています。この属性は、singleton属性がfalseの場合、無視されます。指定されていない場合、デフォルトは定義されず、クローズメソッドは呼び出されません。

Apache Commons DBCP 2とApache Tomcat JDBC接続プールの場合、closeMethod="close"を使用できます。Apache Commons DBCP 2では、クリーンシャットダウンのためにこれを設定する必要があります。デフォルトのTomcat接続プール(DBCP 2に基づく)を使用する場合、Tomcatはそれが空の文字列に明示的に設定されていない限り、この属性を自動的に設定します。

description

省略可能。このリソースの分かりやすい説明。

name

java:comp/envコンテキストを基準とした、作成するリソースの名前。

scope

このリソースマネージャを介して取得された接続を共有できるかどうかを指定します。この属性の値はShareableまたはUnshareableである必要があります。デフォルトでは、接続は共有可能と見なされます。

singleton

このリソース定義がシングルトンリソース(つまり、リソースのインスタンスが1つしかないリソース)かどうかを指定します。この属性がtrueの場合、このリソースに対する複数のJNDIルックアップは同じオブジェクトを返します。この属性がfalseの場合、このリソースに対する複数のJNDIルックアップは異なるオブジェクトを返します。この属性は、DataSourceのJMX登録を有効にするために、javax.sql.DataSourceリソースの場合はtrueである必要があります。この属性の値はtrueまたはfalseである必要があります。デフォルトでは、この属性はtrueです。

type

Webアプリケーションがこのリソースをルックアップするときに期待する、完全修飾Javaクラス名。

<ResourceLink>要素を使用して、グローバルコンテキストからWebアプリケーションごとのコンテキストにリソースをリンクします。JNDIリソースHow-Toの例に基づいて、アプリケーションで使用可能なカスタムファクトリを作成する例を以下に示します。

<Context>
  <ResourceLink
    name="bean/MyBeanFactory"
    global="bean/MyBeanFactory"
    type="com.mycompany.MyBean"
  />
</Context>

トランザクション

java:comp/UserTransactionのJNDIルックアップに対して返されるUserTransactionの特性を宣言できます。このオブジェクトをインスタンス化するためのオブジェクトファクトリクラスと、必要なリソースパラメータをTransaction要素の属性として、およびそのオブジェクトファクトリを構成するために使用されるプロパティも**必ず**定義する必要があります。

<Transaction>要素の有効な属性は次のとおりです。

属性説明
factory

JNDIオブジェクトファクトリのクラス名。