ログ日記

作業ログと日記とメモ

JBOSSでH2

H2ってJavaSqliteみたいなもんじゃないの?手軽に使えるのがメリットじゃないの?と思いつつ苦労した。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の動きとか、分からないこと色々。どこから手を付けたらいいんだろう。