ダウンロード
Magazine
開発
アカウント
ダウンロード
Magazine
開発
ログイン
アカウント/パスワードを忘れた
アカウント作成
言語
ヘルプ
言語
ヘルプ
×
ログイン
ログイン名
パスワード
×
アカウント/パスワードを忘れた
日本語の翻訳状況
カテゴリ:
ソフトウェア
人物
PersonalForge
Magazine
Wiki
検索
OSDN
>
ソフトウェアを探す
>
システム
>
TERASOLUNA Framework
>
フォーラム
>
公開討議
>
【バッチFW】データソース複数定義について
TERASOLUNA Framework
概要
プロジェクト概要
開発ダッシュボード
Webページ
開発メンバー
画像ギャラリー
公開フィード一覧
活動
統計情報
活動履歴
ダウンロード
リリース一覧
統計
ソースコード
コードリポジトリリスト
Subversion
リポジトリ閲覧
チケット
チケット一覧
マイルストーン一覧
チケットの種類一覧
コンポーネント一覧
よく使われるチケット一覧のリスト/RSS
新規チケット登録
文書
Wiki
FrontPageの表示
ページ一覧
最近の更新
文書マネージャ
文書一覧
コミュニケーション
フォーラム
フォーラム一覧
公開討議 (1277)
メーリングリスト
MLの一覧
terasoluna-information
ニュース
フォーラム:
公開討議
(スレッド #21895)
話題(スレッド)一覧に戻る
RSS
【バッチFW】データソース複数定義について (2009-03-03 19:38 by
匿名
#42287)
返信
チケットに引用
お世話になります。
以前、データソースの複数使用に際しての各種ファイルの設定等アドバイスいただいた者です。
その際には参照・更新用と参照専用のデータベースを前提にしたご説明でしたが、
両データベースともに「参照・更新用」として使用したい場合に、具体的に設定が必要なファイルとその内容をお教え願えないでしょうか?
素のフレームワークでは分散トランザクションに対応していない為、フレームワークの拡張になるかとは思いますが・・・。
以上、よろしくお願いします。
メッセージ #42287 への返信
×
題名
本文
メッセージ #42287 への返信 > お世話になります。 > 以前、データソースの複数使用に際しての各種ファイルの設定等アドバイスいただいた者です。 > その際には参照・更新用と参照専用のデータベースを前提にしたご説明でしたが、 > 両データベースともに「参照・更新用」として使用したい場合に、具体的に設定が必要なファイルとその内容をお教え願えないでしょうか? > 素のフレームワークでは分散トランザクションに対応していない為、フレームワークの拡張になるかとは思いますが・・・。 > > 以上、よろしくお願いします。 >
Wiki文法は使えません
ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。
ログインする
ニックネーム
プレビュー
投稿
キャンセル
RE: 【バッチFW】データソース複数定義について (2009-03-11 16:57 by
kuramotoki
#42496)
返信
チケットに引用
分散トランザクションについてですが、当方にて簡単な検証を行い、動作することを確認しましたので
ご参考にしていただければと思います。
(正常系、ERROR_ENDや例外発生といったAP異常をいくつか試しました。)
# JTA実装はJOTM<
http://jotm.objectweb.org/>
を利用しています。
なお、動作を保証できるわけではないのでその点をご了承ください。
設定はdataAccessContext-batch.xmlに以下のように設定しました。
=== dataAccessContext-batch.xmlの設定例 ===
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="
http://www.springframework.org/schema/beans"
xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="
http://www.springframework.org/schema/util"
xsi:schemaLocation=
"
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-2.0.xsd">
<!-- プレースホルダ -->
<import resource="classpath:common/PlaceHolderConfig.xml" />
<!-- xapoolのXADataSource DB:Oracle-->
<bean id="xaDataSource" class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown">
<property name="transactionManager"><ref bean="jotm"/></property>
<property name="driverName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!-- xapoolのXADataSource DB:PostgreSQL-->
<bean id="xaDataSource2" class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown">
<property name="transactionManager"><ref bean="jotm"/></property>
<property name="driverName" value="${jdbc.driverClassName2}" />
<property name="url" value="${jdbc.url2}" />
<property name="user" value="${jdbc.username2}" />
<property name="password" value="${jdbc.password2}" />
</bean>
<!-- JOTM(UserTransaction AND TransactionManager)Create FactoryBean -->
<bean id="jotm" class="org.springframework.transaction.jta.JotmFactoryBean">
<property name="defaultTimeout" value="86400"/>
</bean>
<!-- xapoolのコネクションプーリング DB:Oracle -->
<bean id="dataSourceSample" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown">
<property name="dataSource"><ref local="xaDataSource"/></property>
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!-- xapoolのコネクションプーリング DB:PostgreSQL -->
<bean id="dataSourceSample2" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown">
<property name="dataSource"><ref local="xaDataSource2"/></property>
<property name="user" value="${jdbc.username2}" />
<property name="password" value="${jdbc.password2}" />
</bean>
<!-- iBATIS データベース層のためのSQlMapの設定 DB:Oracle -->
<bean id="sqlMapClientSample" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="dataSource" ref="dataSourceSample" />
<property name="configLocation" ref="sqlMapConfigFileName" />
</bean>
<!-- iBATIS データベース層のためのSQlMapの設定 DB:PostgreSQL -->
<bean id="sqlMapClientSample2" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="dataSource" ref="dataSourceSample2" />
<property name="configLocation" ref="sqlMapConfigFileName" />
</bean>
<!-- SpringのTransactionManager -->
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="userTransaction"><ref local="jotm"/></property>
<property name="defaultTimeout" value="86400"/>
</bean>
<!-- ===================== DAO定義: IBATIS実装 DB:Oracle ===================== -->
<!-- 照会系のDAO -->
<bean id="xqueryDAO" class="jp.terasoluna.fw.dao.ibatis.QueryDAOiBatisImpl">
<property name="sqlMapClient" ref="sqlMapClientSample" />
</bean>
<!-- 更新系のDAO -->
<bean id="xupdateDAO" class="jp.terasoluna.fw.dao.ibatis.UpdateDAOiBatisImpl">
<property name="sqlMapClient" ref="sqlMapClientSample" />
</bean>
<!-- ストアドプロシジャ用のDAO -->
<bean id="xspDAO" class="jp.terasoluna.fw.dao.ibatis.StoredProcedureDAOiBatisImpl">
<property name="sqlMapClient" ref="sqlMapClientSample" />
</bean>
<!-- ===================== DAO定義: IBATIS実装 DB:PostgreSQL ===================== -->
<!-- 照会系のDAO -->
<bean id="queryDAO" class="jp.terasoluna.fw.dao.ibatis.QueryDAOiBatisImpl">
<property name="sqlMapClient" ref="sqlMapClientSample2" />
</bean>
<!-- 更新系のDAO -->
<bean id="updateDAO" class="jp.terasoluna.fw.dao.ibatis.UpdateDAOiBatisImpl">
<property name="sqlMapClient" ref="sqlMapClientSample2" />
</bean>
<!-- ストアドプロシジャ用のDAO -->
<bean id="xspDAO2" class="jp.terasoluna.fw.dao.ibatis.StoredProcedureDAOiBatisImpl">
<property name="sqlMapClient" ref="sqlMapClientSample2" />
</bean>
</beans>
===
上記の設定を行ったうえで、それぞれのDAOをビジネスロジックにDIして参照/更新を行います。
業務要件を考慮したうえで、利用しているの環境にて検証をお願いします。
また、DB異常が発生した場合は確認を行っていないので、環境面の異常発生時の検証をする必要はあると思います。
仮にFWに手を加える必要が生じた際には、jp.terasoluna.fw.batch.springsupport.transactionパッケージ配下の
クラスを拡張していただくことになるかと思います。
以上、よろしくお願いいたします。
#42287
への返信
メッセージ #42496 への返信
×
題名
本文
メッセージ #42496 への返信 > 分散トランザクションについてですが、当方にて簡単な検証を行い、動作することを確認しましたので > ご参考にしていただければと思います。 > (正常系、ERROR_ENDや例外発生といったAP異常をいくつか試しました。) > # JTA実装はJOTM<http://jotm.objectweb.org/>を利用しています。 > > なお、動作を保証できるわけではないのでその点をご了承ください。 > > 設定はdataAccessContext-batch.xmlに以下のように設定しました。 > === dataAccessContext-batch.xmlの設定例 === > <?xml version="1.0" encoding="UTF-8"?> > > <beans xmlns="http://www.springframework.org/schema/beans" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xmlns:util="http://www.springframework.org/schema/util" > xsi:schemaLocation= > "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd > http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd"> > > <!-- プレースホルダ --> > <import resource="classpath:common/PlaceHolderConfig.xml" /> > > <!-- xapoolのXADataSource DB:Oracle--> > <bean id="xaDataSource" class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown"> > <property name="transactionManager"><ref bean="jotm"/></property> > <property name="driverName" value="${jdbc.driverClassName}" /> > <property name="url" value="${jdbc.url}" /> > <property name="user" value="${jdbc.username}" /> > <property name="password" value="${jdbc.password}" /> > </bean> > > <!-- xapoolのXADataSource DB:PostgreSQL--> > <bean id="xaDataSource2" class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown"> > <property name="transactionManager"><ref bean="jotm"/></property> > <property name="driverName" value="${jdbc.driverClassName2}" /> > <property name="url" value="${jdbc.url2}" /> > <property name="user" value="${jdbc.username2}" /> > <property name="password" value="${jdbc.password2}" /> > </bean> > > <!-- JOTM(UserTransaction AND TransactionManager)Create FactoryBean --> > <bean id="jotm" class="org.springframework.transaction.jta.JotmFactoryBean"> > <property name="defaultTimeout" value="86400"/> > </bean> > > <!-- xapoolのコネクションプーリング DB:Oracle --> > <bean id="dataSourceSample" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown"> > <property name="dataSource"><ref local="xaDataSource"/></property> > <property name="user" value="${jdbc.username}" /> > <property name="password" value="${jdbc.password}" /> > </bean> > > <!-- xapoolのコネクションプーリング DB:PostgreSQL --> > <bean id="dataSourceSample2" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown"> > <property name="dataSource"><ref local="xaDataSource2"/></property> > <property name="user" value="${jdbc.username2}" /> > <property name="password" value="${jdbc.password2}" /> > </bean> > > <!-- iBATIS データベース層のためのSQlMapの設定 DB:Oracle --> > <bean id="sqlMapClientSample" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> > <property name="dataSource" ref="dataSourceSample" /> > <property name="configLocation" ref="sqlMapConfigFileName" /> > </bean> > > <!-- iBATIS データベース層のためのSQlMapの設定 DB:PostgreSQL --> > <bean id="sqlMapClientSample2" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> > <property name="dataSource" ref="dataSourceSample2" /> > <property name="configLocation" ref="sqlMapConfigFileName" /> > </bean> > > <!-- SpringのTransactionManager --> > <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"> > <property name="userTransaction"><ref local="jotm"/></property> > <property name="defaultTimeout" value="86400"/> > </bean> > > <!-- ===================== DAO定義: IBATIS実装 DB:Oracle ===================== --> > <!-- 照会系のDAO --> > <bean id="xqueryDAO" class="jp.terasoluna.fw.dao.ibatis.QueryDAOiBatisImpl"> > <property name="sqlMapClient" ref="sqlMapClientSample" /> > </bean> > > <!-- 更新系のDAO --> > <bean id="xupdateDAO" class="jp.terasoluna.fw.dao.ibatis.UpdateDAOiBatisImpl"> > <property name="sqlMapClient" ref="sqlMapClientSample" /> > </bean> > > <!-- ストアドプロシジャ用のDAO --> > <bean id="xspDAO" class="jp.terasoluna.fw.dao.ibatis.StoredProcedureDAOiBatisImpl"> > <property name="sqlMapClient" ref="sqlMapClientSample" /> > </bean> > > <!-- ===================== DAO定義: IBATIS実装 DB:PostgreSQL ===================== --> > <!-- 照会系のDAO --> > <bean id="queryDAO" class="jp.terasoluna.fw.dao.ibatis.QueryDAOiBatisImpl"> > <property name="sqlMapClient" ref="sqlMapClientSample2" /> > </bean> > > <!-- 更新系のDAO --> > <bean id="updateDAO" class="jp.terasoluna.fw.dao.ibatis.UpdateDAOiBatisImpl"> > <property name="sqlMapClient" ref="sqlMapClientSample2" /> > </bean> > > <!-- ストアドプロシジャ用のDAO --> > <bean id="xspDAO2" class="jp.terasoluna.fw.dao.ibatis.StoredProcedureDAOiBatisImpl"> > <property name="sqlMapClient" ref="sqlMapClientSample2" /> > </bean> > > > </beans> > === > > 上記の設定を行ったうえで、それぞれのDAOをビジネスロジックにDIして参照/更新を行います。 > > 業務要件を考慮したうえで、利用しているの環境にて検証をお願いします。 > また、DB異常が発生した場合は確認を行っていないので、環境面の異常発生時の検証をする必要はあると思います。 > > 仮にFWに手を加える必要が生じた際には、jp.terasoluna.fw.batch.springsupport.transactionパッケージ配下の > クラスを拡張していただくことになるかと思います。 > > 以上、よろしくお願いいたします。
Wiki文法は使えません
ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。
ログインする
ニックネーム
プレビュー
投稿
キャンセル