Download
Magazine
Develop
Account
Download
Magazine
Develop
Login
Forgot Account/Password
Create Account
Language
Help
Language
Help
×
Login
Login Name
Password
×
Forgot Account/Password
Category:
Software
People
PersonalForge
Magazine
Wiki
Search
OSDN
>
Find Software
>
System
>
TERASOLUNA Framework
>
Forums
>
Open Discussion
>
【バッチFW】データソース複数定義について
TERASOLUNA Framework
Description
Project Summary
Developer Dashboard
Web Page
Developers
Image Gallery
List of RSS Feeds
Activity
Statistics
History
Downloads
List of Releases
Stats
Source Code
Code Repository list
Subversion
View Repository
Ticket
Ticket List
Milestone List
Type List
Component List
List of frequently used tickets/RSS
Submit New Ticket
Documents
Wiki
FrontPage
Title index
Recent changes
Doc Mgr
List Docs
Communication
Forums
List of Forums
Open Discussion (1277)
Mailing Lists
list of ML
terasoluna-information
News
Forums:
Open Discussion
(Thread #21895)
Return to Thread list
RSS
【バッチFW】データソース複数定義について (2009-03-03 19:38 by
Anonymous
#42287)
Reply
Create ticket
お世話になります。
以前、データソースの複数使用に際しての各種ファイルの設定等アドバイスいただいた者です。
その際には参照・更新用と参照専用のデータベースを前提にしたご説明でしたが、
両データベースともに「参照・更新用」として使用したい場合に、具体的に設定が必要なファイルとその内容をお教え願えないでしょうか?
素のフレームワークでは分散トランザクションに対応していない為、フレームワークの拡張になるかとは思いますが・・・。
以上、よろしくお願いします。
Reply to #42287
×
Subject
Body
Reply To Message #42287 > お世話になります。 > 以前、データソースの複数使用に際しての各種ファイルの設定等アドバイスいただいた者です。 > その際には参照・更新用と参照専用のデータベースを前提にしたご説明でしたが、 > 両データベースともに「参照・更新用」として使用したい場合に、具体的に設定が必要なファイルとその内容をお教え願えないでしょうか? > 素のフレームワークでは分散トランザクションに対応していない為、フレームワークの拡張になるかとは思いますが・・・。 > > 以上、よろしくお願いします。 >
You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.)
Login
Nickname
Preview
Post
Cancel
RE: 【バッチFW】データソース複数定義について (2009-03-11 16:57 by
kuramotoki
#42496)
Reply
Create ticket
分散トランザクションについてですが、当方にて簡単な検証を行い、動作することを確認しましたので
ご参考にしていただければと思います。
(正常系、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パッケージ配下の
クラスを拡張していただくことになるかと思います。
以上、よろしくお願いいたします。
Reply to
#42287
Reply to #42496
×
Subject
Body
Reply To Message #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パッケージ配下の > クラスを拡張していただくことになるかと思います。 > > 以上、よろしくお願いいたします。
You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.)
Login
Nickname
Preview
Post
Cancel