// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents

**まずは設定から [#w19f7769]
*** JDBCドライバをJBossに配置 [#t265cb92]
-[[MySQLのサイト:http://dev.mysql.com/downloads/connector/j/3.1.html]]よりJDBCドライバを取得

今回は mysql-connector-java-3.1.11-bin.jar にしました。
-${INSTALL_ROOT}/server/default/lib/ に配置


*** データソースの設定を配置 [#b267ef0e]
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名((実JNDI名?))でMySQLへのデータソースがコンテナに登録されます。

**実際のコーディング [#p4b85eec]
実際のコーディングは以下の通り

-クラスコメント(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と連携する [#tdae5279]
これで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>



----
この記事は
#vote(おもしろかった[4],そうでもない[1])

#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS