glassfish-resources.xml ファイルで Glassfish にリソース設定
Glassfish でリソースを設定するには以下の3つの方法があります。
- GlassFish Server 管理コンソール の画面から設定
- asadmin コマンドラインツールから create-jdbc-connection-pool や create-jdbc-resource で設定
- 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>