JBossAS7にDerbyのDataSource設定を行う

JBossAS7(7.1.1)にDerbyのDataSourceを設定したときの手順です。以前MySQLのDataSourceを設定する手順を紹介しましたがそれと同じです。(Derby用の記述などが異なるため忘れないためのメモ。)

modulesディレクトリ配下にorg/apache/derby/jdbc/mainというディレクトリを作成しderbyのjdbcドライバの配置とmodule.xmlの作成を行います。


cd ${JBOSS_HOME}/modules
mkdir -p org/apache/derby/jdbc/main
cp -p ${DERBY_HOME}/lib/derbyclient.jar ${JBOSS_HOME}/modules/org/apache/derby/jdbc/main/
cd ${JBOSS_HOME}/modules/org/apache/derby/jdbc/main/
vi module.xml

module.xmlの内容は以下の通り。

【module.xml

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="org.apache.derby.jdbc">
  <resources>
    <resource-root path="derbyclient.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
  </dependencies>
</module>

次にスタンドアロンモードで動作させている場合は${JBOSS_HOME}/standalone/configurationに移動し、standalone.xmlファイルにDerby用のDataSourceの設定を記述します。

【standalone.xml記載内容抜粋】

        <subsystem xmlns="urn:jboss:domain:datasources:1.0">
            <datasources>
                ...
                <datasource jndi-name="java:jboss/datasources/DerbyDS" pool-name="DerbyDS" enabled="true" use-java-context="true">
                    <connection-url>jdbc:derby://[host]:[port]/[database]</connection-url>
                    <driver>derby</driver>
                    <pool>
                        <min-pool-size>[min-pool-size]</min-pool-size>
                        <max-pool-size>[max-pool-size]</max-pool-size>
                    </pool>
                </datasource>
                <drivers>
                   ...
                    <driver name="derby" module="org.apache.derby.jdbc">
                        <xa-datasource-class>org.apache.derby.jdbc.ClientXADataSource</xa-datasource-class>
                    </driver>
                </drivers>
            </datasources>
        </subsystem>

MySQLの設定を紹介したときと比べるとシンプルです。Derbyは何も設定しないとDBにアクセスする際にユーザ認証の必要がありません。

MySQLの設定ではstandalone.xmlファイルのDataSourceに下記に示すようにユーザとパスワードの設定を行ったかと思います。

【設定例】

<security>
    <user-name>[user-name]</user-name>
    <password>[password]</password>
</security>

今回は、Derbyをインストールしたままの状態でDataSourceの設定を行ったので認証系の設定を行っていません。Derby側で認証の設定を行った場合は上記項目を適切に追記する必要があります。実際はきちんと認証の設定を行った方がいいと思いますが、今回はサンプルなので。

Derbyをサーバモードで起動し、さらにJBossを起動を行った後、管理画面からDataSourceの接続テストを行うボタンを押下して正常に接続が行えることが確認できれば問題ないと思います。
(設定しただけで、アプリケーションから利用してはいないのですが。)

ちなみにpersistence.xmlはこんな感じかと思います。

【persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://java.sun.com/xml/ns/persistence
        http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="defaultPersistenceUnit">
        <jta-data-source>java:jboss/datasources/DerbyDS</jta-data-source>
        <properties>
            <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
            <property name="hibernate.show_sql" value="true"/>
        </properties>
    </persistence-unit>
</persistence>