Top / JBoss / MySQLと接続する

まずは設定から

JDBCドライバをJBossに配置

今回は mysql-connector-java-3.1.11-bin.jar にしました。

  • ${INSTALL_ROOT}/server/default/lib/ に配置

データソースの設定を配置

mysql-ds.xmlを${INSTALL_ROOT}/server/default/deploy に配置

mysql-ds.xml はこんな感じにしました。

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

<!-- $Id: mysql-ds.xml,v 1.3.2.1 2004/12/01 11:46:00 schrouf Exp $ -->
<!--  Datasource config for MySQL using 3.0.9 available from:
http://www.mysql.com/downloads/api-jdbc-stable.html
-->

<datasources>
  <local-tx-datasource>
    <jndi-name>MySqlDS</jndi-name>
    <connection-url>jdbc:mysql://[ノード名]:3306/webdb1?useUnicode=true&amp;
    characterEncoding=ujis</connection-url>
    <!-- <driver-class>org.gjt.mm.mysql.Driver</driver-class>  -->
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <user-name>[id]</user-name>
    <password>[pass]</password>
    <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.
     MySQLExceptionSorter</exception-sorter-class-name>
    <!-- sql to call when connection is created
    <new-connection-sql>some arbitrary sql</new-connection-sql>
      -->
    <!-- sql to call on an existing pooled connection when it is obtained from pool 
    <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
      -->

    <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
    <metadata>
       <type-mapping>mySQL</type-mapping>
    </metadata>
  </local-tx-datasource>
</datasources>

設定はこれだけです。これで、

java:/MySqlDS

というJNDI名*1でMySQLへのデータソースがコンテナに登録されます。

実際のコーディング

実際のコーディングは以下の通り

  • クラスコメント(web.xmlなどに反映)
    /**
     * @web.servlet name="DBServlet" display-name="DatabaseServlet"
     * @web.servlet-mapping url-pattern="/hello"
     * @web.resource-ref name="jdbc/MySqlDS" type="javax.sql.DataSource"
     *                   auth="Container" scope="Shareable"
     * @jboss.resource-ref jndi-name = "java:/MySqlDS" res-ref-name ="jdbc/MySqlDS"
     */                                 ↑実JNDI名はこれ。
  • コーディング
     DataSource datasource = (DataSource) initContext
      .lookup("java:comp/env/jdbc/MySqlDS");
     Connection connection = datasource.getConnection();

Hibernateと連携する

これでMySQLにデータソース経由で接続することができました。さて次はHibernateを使って接続してみます。といってもJBossだからといってHibernateの設定のやり方が変わるわけでもなく、通常のHibernateどおり hibernate.cfg.xmlで設定をします。ただ、Connectionを直接取得するのではなく、JBossのデータソースを使用したい場合は以下のように記述します。

<?xml version="1.0" ?>
<!DOCTYPE hibernate-configuration PUBLIC 
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd" >
<hibernate-configuration>
  <session-factory>
    <!-- Datasourceを使う場合はこちら -->
    <property name="connection.datasource">java:comp/env/jdbc/MySqlDS</property>
    <!--MySQL JDBC Driver connection -->
    <property name="connection.driver_class">org.gjt.mm.mysql.Driver</property>
    <!-- JDBC直接使用する場合はこちら -->
    <!--
      <property name="connection.url">jdbc:mysql://[ノード名]/[スキーマ名]?
       useUnicode=true&amp;characterEncoding=EUC_JP</property>
    -->
    <property name="connection.username">[id]</property>
    <property name="connection.password">[pass]</property>
    <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>
    <property name="show_sql">true</property>
    <property name="use_outer_join">true</property>
    <!-- Mapping files -->
    <mapping resource="nu/mine/kino/rss/hibernate/Rss.hbm.xml" />
  </session-factory>
  
</hibernate-configuration>

この記事は

選択肢 投票
おもしろかった 14  
そうでもない 2  

Top / JBoss / MySQLと接続する

現在のアクセス:25850


*1 実JNDI名?

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-12-06 (金) 18:47:22 (1592d)