Humanity

Edit the world by your favorite way

GlassFish に asadmin で H2 DataSource 登録

GlassFish なら管理コンソール(http://localhost:4848/)で操作もできるけど、4.1 や 4.1.1 だと JDBC に H2 の DataSource を登録する時に RuntimeError が出て登録できなかった… ので仕方なくコマンドのやり方を調べた。

コマンド

asadmin create-jdbc-connection-pool --datasourceclassname org.h2.jdbcx.JdbcDataSource --restype javax.sql.DataSource --property user=sa:password=password:url="jdbc\:h2\:mem\:test" H2Pool
asadmin create-jdbc-resource --connectionpoolid H2Pool jdbc/h2ds

失敗例

失敗例 その1

asadmin create-jdbc-connection-pool --datasourceclassname org.h2.jdbcx.JdbcDataSource --restype javax.sql.DataSource --property user=sa:password=password:url="jdbc\\:h2\\:mem\\:test" H2Pool

Windows だとバックスラッシュは1個。 cmd.exe から叩いた場合。 asadmin を実行して対話シェルから実行した場合は確認してない。

On Solaris, escape colon characters (:) within property values with double backslashes (\). On Windows, escape colon characters (:) with single backslashes ( ).

Configuring the JDBC Connection Pool (Sun GlassFish Enterprise Server v2.1.1 High Availability Administration Guide)

失敗例 その1

asadmin create-jdbc-resource --connectionpoolid H2Pool java:app/env/h2

JNDI 名は java: はつけず jdbc/h2ds のように指定する。 (先程と同じコロンの文字の制約だったかもしれない)

To Create a JDBC Connection Pool (Oracle GlassFish Server 3.0.1 Administration Guide)

すると java:app/jdbc/h2ds という JNDI 名になる。

ちなみに

GlassFish 4 系でいろいろ頑張ってみたものの、エラーが出たりバグが多いから 3 に戻したよ!って言ってるページがあって、 3 に戻したら Java SE 7 + Java EE 6 を強要されてどうせなら新しい技術触ってみたいし実際に Java SE 8 + Java EE 7 で書いてしまってたので WildFly にした。