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 型に変換できる必要があります。

リソース定義

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

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

<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 の場合、この属性は無視されます。指定しない場合、デフォルトは定義されず、close メソッドは呼び出されません。

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 クラス名。

グローバルコンテキストから Web アプリケーションごとのコンテキストにリソースをリンクするには、<ResourceLink> 要素を使用します。 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 オブジェクトファクトリのクラス名。