JBOSSでH2
H2ってJavaのSqliteみたいなもんじゃないの?手軽に使えるのがメリットじゃないの?と思いつつ苦労した。Java歴数日なのでこんなもんか…。
hsqldb-ds.xml は元々あるので、それを元に h2myapp-ds.xmlを作った。
http://lists.jboss.org/pipermail/jboss-svn-commits/2008-June/016421.html
ここに書いてあるように *-ds.xml ファイルを作って deploy ディレクトリに入れて編集。
<?xml version="1.0" encoding="UTF-8"?> <datasources> <local-tx-datasource> <jndi-name>H2MyDB</jndi-name> <connection-url>jdbc:h2:${jboss.server.home.dir}${/}deploy${/}Myapp.war${/}WEB-INF${/}classes${/}data${/}myapp;MVCC=TRUE</connection-url> <driver-class>org.h2.jdbcDriver</driver-class> <!-- The login and password --> <user-name>xxx</user-name> <password>zzz</password> <min-pool-size>5</min-pool-size> <max-pool-size>20</max-pool-size> <idle-timeout-minutes>0</idle-timeout-minutes> <track-statements/> <prepared-statement-cache-size>32</prepared-statement-cache-size> </local-tx-datasource> </datasources>
mbeanとかdependsとかはよく分かってないしエラーが出るので消した。
というかこんな書き方してアプリの中をデータファイルに指定しない方がいいよね。
この場合の jdbc.dicon
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" "http://www.seasar.org/dtd/components24.dtd"> <components namespace="jdbc"> <include path="jta.dicon" /> <component name="xaDataSource" class="org.seasar.extension.dbcp.impl.DataSourceXADataSource"> <property name="dataSourceName">"java:H2MyaDB"</property> <destroyMethod> @org.seasar.framework.util.DriverManagerUtil@deregisterAllDrivers() </destroyMethod> </component> <component name="connectionPool" class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl"> <property name="timeout">600</property> <property name="maxPoolSize">0</property> <property name="allowLocalTx">true</property> <destroyMethod name="close"/> </component> <component name="dataSource" class="org.seasar.extension.dbcp.impl.DataSourceImpl"/> </components>
destroyMethodが必要でmaxPoolSizeは0じゃないとエラーが出た。
設定項目とか概念が多すぎてキツい。まぁでも最初に JBOSS + Seasar + GWT をクリアしとけば後が楽だよねと思ってやっている。
なんか久しぶりに、よく分からないものをペタペタコピペして動けばOKというやり方をしている。
<property name="URL"> "jdbc:h2:file:" + @org.seasar.framework.util.ResourceUtil@getBuildDir('app.dicon').getCanonicalPath() + "/data/demo" </property>H2 Database を相対パス指定で使うには - 集中力なら売り切れたよ
この方式はダメだった。フルパスで指定してもダメだった。セキュリティ的なアレで制限されてるんだろうか。
そもそも分からない単語が多すぎる…。
略語が多い…。
あとJavaのAPサーバのセオリーとかデプロイのセオリーとかAOPの動きとか、分からないこと色々。どこから手を付けたらいいんだろう。