glassfish へのリソース設定はリソースファイルを使うべし その1

glassfish-resources.xml ファイルで Glassfish にリソース設定

Glassfish でリソースを設定するには以下の3つの方法があります。

  1. GlassFish Server 管理コンソール の画面から設定
  2. asadmin コマンドラインツールから create-jdbc-connection-pool や create-jdbc-resource で設定
  3. glassfish-resources.xml ファイルを用意し、asadmin add-resources コマンドにより設定


ここでは3つ目の glassfish-resources.xml ファイルを使ったリソース設定について説明します。
JDBC 接続プールおよびリソース、JMS、JNDI、JavaMail のリソース、カスタムリソース、コネクタリソース、作業セキュリティーマップ、admin オブジェクト、リソースアダプタの構成 などが指定できます。

add-resources サブコマンド

add-resources は以下の書式で利用します

add-resources [--help] [--target target] [--upload={false|true}] xml-file-name

asadmin コマンドのヘルプ見た方が早いですね。

asadmin> help add-resources
ADD-RESOURCES(1)                                              ADD-RESOURCES(1)

名前
       add-resources - XMLファイル内に指定されたリソースを作成します

概要
           add-resources [--help] [--target target]
           [--upload={false|true}] xml-file-name

説明
       add-resourcesサブコマンドは、指定されたXMLファイル内に名前付きのリソースを作成します。このサブコマンドで作成できるリソースのリストについては、このヘルプ・ページの「関連項目」を参照してください。

       --targetオプションは、リソースを作成するターゲットを指定します。このオプションでドメインが指定された場合、リソースはドメイン管理サーバー(DAS)の構成にのみ追加されます。このオプションでその他のターゲットが指定された場合、リソースはDASの構成に追加され、指定されたターゲットからリソースに参照が追加されます。

       xml-file-nameオペランドは、作成されたリソースを格納するXMLファイルへのパスです。DOCTYPEは、resources.xmlファイルにhttp://glassfish.org/dtds/glassfish-resources_1_5.dtdとして指定する必要があります。

       このサブコマンドは、リモート・モードでのみサポートされています。

オプション
       --help, -?
           サブコマンドに関するヘルプ・テキストが表示されます。

       --target
           リソースを作成するターゲットを指定します。

           有効な値は次のとおりです:

           server
               デフォルトのサーバー・インスタンスserverのリソースを作成します。これはデフォルト値です。

           domain
               ドメインにリソースを作成します。

           cluster-name
               クラスタ内のすべてのサーバー・インスタンスにリソースを作成します。

           instance-name
               特定のGlassFish Serverインスタンスにリソースを作成します。

       --upload
           サブコマンドでファイルをDASにアップロードするかを指定します。ほとんどの場合、このオプションは省略できます。

           有効な値は次のとおりです:

           false
               サブコマンドは、ファイルのアップロードを行わず、指定されたファイル名を使用してファイルへのアクセスが試行されます。DASがファイルにアクセスできない場合、このサブコマンドは失敗します。

               たとえば、DASが管理ユーザーとは異なるユーザーとして稼働している可能性があり、DASにファイルに対する読取りアクセス権がない場合があります。この状況では、--uploadオプションをfalseに設定すると、サブコマンドは失敗します。

           true
               サブコマンドは、ネットワーク接続経由でファイルをDASにアップロードします。

           デフォルト値は、サブコマンドを実行するホスト上のDASであるかリモート・ホスト上のDASであるかによって異なります。

           ·   サブコマンドを実行するホスト上のDASの場合、デフォルトはfalseです。

           ·   リモート・ホスト上のDASの場合、デフォルトはtrueです。

オペランド
       xml-file-name
           作成されるリソースを格納するXMLファイルへのパスです。絶対パス、ファイル名のみ、または相対パスを指定できます。

           ·   絶対パスを指定する場合、XMLファイルはどこに配置してもかまいません。

           ·   ファイル名のみを指定する場合、XMLファイルはDASホストのdomain-dir/configディレクトリにある必要があります。別のホストからサブコマンドを実行する場合でもこの要件を満たす必要があります。

           ·   相対パスを指定する場合、XMLファイルは相対ディレクトリ内に配置してください。

           次にXMLファイルの例を示します。

               
               
               
                
                 
                 
                 
                 
                 
                
                
               

例
       例 1, リソースの追加
           この例では、XMLファイル
           resource.xmlの内容を使用してリソースを作成します。

               asadmin> add-resources resource.xml

               Command : Connector connection pool jms/testQFactoryPool created.
               Command : Administered object jms/testQ created.
               Command : Connector resource jms/testQFactory created.
               Command : Resource adapter config myResAdapterConfig created successfully
               Command : JDBC connection pool DerbyPoolA created successfully.
               Command : JDBC resource jdbc/__defaultA created successfully.
               Command add-resources executed successfully.

終了ステータス
       0
           サブコマンドは正常に実行されました

       1
           サブコマンドの実行時にエラーが発生しました

関連項目
       create-jdbc-connection-pool(1),create-jdbc-resource(1),
       create-jms-resource(1), create-jndi-resource(1),
       create-javamail-resource(1), create-custom-resource(1),
       create-connector-resource(1), create-connector-work-security-map(1),
       create-admin-object(1), create-resource-adapter-config(1)

       asadmin(1M)

                                2010年12月23日                ADD-RESOURCES(1)


・・っと、きちっとローカライズされてヘルプが整備されているので、書くことがなくなってしまいました。
ので実行例でも、、

glassfish-resources.xml の例として、デフォルトの derby でコネクションプールとJDBCリソースを作成する例

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE resources PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Resource Definitions//EN" "http://glassfish.org/dtds/glassfish-resources_1_5.dtd">
<resources>
  <jdbc-connection-pool
      name="TestPool"
      res-type="javax.sql.DataSource"
      datasource-classname="org.apache.derby.jdbc.ClientDataSource"
      pool-resize-quantity="2"
      max-pool-size="32"
      steady-pool-size="2"
      statement-timeout-in-seconds="60" >
   <property name="serverName" value="localhost" />
   <property name="portNumber" value="1527" />
   <property name="dataBaseName" value="sun-appserv-samples" />
   <property name="User" value="APP" />
   <property name="Password" value="APP" />
   <property name="connectionAttributes" value=";create=true" />
   <property name="driverType" value="4" />
 </jdbc-connection-pool>
 
 <jdbc-resource jndi-name="jdbc/TestDS" pool-name="TestPool" />
</resources>

add-resources の実行

適当なディレクトリに置いた glassfish-resources.xml を指定

asadmin> add-resources /・・・/glassfish-resources.xml
Command : JDBC接続プールTestPoolは正常に作成されました。
Command : JDBCリソースjdbc/TestDSは正常に作成されました。
コマンドadd-resourcesは正常に実行されました。

確認

list 系のコマンドで作成を確認できます。

asadmin> list-jdbc-resources
jdbc/TestDS
コマンドlist-jdbc-resourcesは正常に実行されました。
asadmin> list-jdbc-connection-pools
TestPool
コマンドlist-jdbc-connection-poolsは正常に実行されました。

削除

削除はコネクションプールの削除をカスケード指定すると楽

asadmin> delete-jdbc-connection-pool --cascade true TestPool
JDBC Connection pool jdbc/TestPool deleted successfully
コマンドdelete-jdbc-connection-poolは正常に実行されました。

おまけ

asadmin のサブコマンド一覧はこちらが見やすいです。

追記

よさそうなサンプルあったので貼付け。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE resources PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Resource Definitions//EN" "http://glassfish.org/dtds/glassfish-resources_1_5.dtd">
<resources>
   
  <!-- JDBC -->
  <jdbc-connection-pool
      name="auth-Pool"
      allow-non-component-callers="false"
      associate-with-thread="false"
      connection-creation-retry-attempts="0"
      connection-creation-retry-interval-in-seconds="10"
      connection-leak-reclaim="false"
      connection-leak-timeout-in-seconds="0"
      connection-validation-method="auto-commit"
      datasource-classname="org.postgresql.ds.PGSimpleDataSource"
      fail-all-connections="false"
      idle-timeout-in-seconds="300"
      is-connection-validation-required="false"
      is-isolation-level-guaranteed="true"
      lazy-connection-association="false"
      lazy-connection-enlistment="false"
      match-connections="false"
      max-connection-usage-count="0"
      max-pool-size="32"
      max-wait-time-in-millis="60000"
      non-transactional-connections="false"
      pool-resize-quantity="2"
      res-type="javax.sql.DataSource"
      statement-timeout-in-seconds="-1"
      steady-pool-size="8"
      validate-atmost-once-period-in-seconds="0"
      wrap-jdbc-objects="false">
    <property name="serverName" value="localhost"/>
    <property name="portNumber" value="5432"/>
    <property name="databaseName" value="db_auth"/>
    <property name="User" value="myUser"/>
    <property name="Password" value="mySecretPassword"/>
    <property name="URL" value="jdbc:postgresql://localhost:5432/db_auth"/>
    <property name="driverClass" value="org.postgresql.Driver"/>
  </jdbc-connection-pool>
  <jdbc-resource enabled="true" jndi-name="jdbc/auth" object-type="user" pool-name="auth-Pool"/>
   
  <!-- other resources, i.e. Mail -->
  <!-- ... -->
   
</resources>