いっぽんの猟銃のむこうに (DAIZOじいさんとGun)

ヌルめの技術メモとか。フリーランスやってます (http://acez.jp/)

JBoss AS での DB接続設定(データソース)

■/src/META-INF/persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.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_1_0.xsd">
   <persistence-unit name="test" 
        transaction-type="JTA">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <jta-data-source>java:/testDatasource</jta-data-source>
        <class>org.domain.test.entity.ProtoItem</class>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="true" />
            <property name="hibernate.transaction.manager_lookup_class" 
                value="org.hibernate.transaction.JBossTransactionManagerLookup" />
        </properties>

    </persistence-unit>
</persistence>
  • java:/testDatasource の部分を以下で指定する *-ds.xml の内容とあわせる
  • Entityを作成した場合はに定義を追加する

■/resource/*-ds.xml

<?xml version="1.0" encoding="UTF-8"?>
<datasources>

   <local-tx-datasource>
      <jndi-name>testDatasource</jndi-name>
      <use-java-context>true</use-java-context>
      <connection-url>jdbc:oracle:thin:@localhost:1521:orcl</connection-url>
      <driver-class>oracle.jdbc.OracleDriver</driver-class>
      <user-name>cxp</user-name>
      <password>cxp</password>
   </local-tx-datasource>

</datasources>
  • このデータソースファイルはAPサーバ起動前に \jboss-as\server\defaul\deploy 下に配置しておく必要がある

■/WebContent/WEB-INF/components.xml

(略)
   <persistence:managed-persistence-context name="entityManager" 
                                     auto-create="true" 
                          entity-manager-factory="#{testEntityManagerFactory}"/>

   <persistence:entity-manager-factory name="testEntityManagerFactory" 
                      persistence-unit-name="test"/>
(略)
  • persistence-unit-nameを /src/META-INF/persistence.xml で設定したものと合わせる。
  • また、 で指定した文字列が@InでインジェクションするEntityManagerの名前解決に使われるので、プロジェクトで統一すること。

参考までに、EntityManagerの利用方法は以下のとおり。

    @In
    private EntityManager entityManager;

JDBCライブラリの設置

\jboss-as\server\default\libにOracleJDBCライブラリ(ojdbc6.jar)を設置しておく