Spring JTA事務(WebLogic)配置
4042 ワード
回転:
http://www.blogjava.net/luoqx/articles/16447.html
プロジェクトグループ開発サーバはweblogicを使って、アプリケーションサーバにデータソースを配置しています.一人一人のデバッグプログラムは本機を使っています.ですから、デバッグに使うサービスはeclipseのtomcatプラグインです.データソースはtomcatの配置とweblogicの同名のデータソースが使えますが、JTA tomcatはサポートしていません.
全体のプロジェクトグループは統一した配置管理を使用していますので、springのaplicationContaction Contactext.xmlはみんな同じです.毎日毎日構築しています.サーバーに配置するのも配置管理上のファイルと同じです.データソースとJTAmanagerをリモートに配置してもいいですか?
spring公式文書を探していますが、あまり簡単ではありません.インターネットgoogleは長い間見つけられませんでした.(おかしいと思いますが、後で考えてもおかしくないです.みんなは現地のデータソースを使ったり、アプリケーションサービスのデータソースを使ったりするのも同じアプリケーションサービスで、遠隔で使うのではありません.).だから、ソースを見てみましょう.
以下の構成では、同じアプリケーションサーバのjndiデータソースにアクセスできることが知られています.
でもweblogic.jarを自分の応用のlibの下に置くことを覚えていますか?weblogic.jndi.WLInitialContect Factory種類が探し出せません.
データソースができました.テストは本当に役に立ちましたが、jtaの対象は長距離訪問があまりうまくいっていないようです.org.springframe ebook.tranactions.jta.Jta.Jta Transation Manager類を見ましたが、これらの方法は発見されませんでした.
そして、トレーサビリティManagerを配置します.以下の通りです.
http://www.blogjava.net/luoqx/articles/16447.html
プロジェクトグループ開発サーバはweblogicを使って、アプリケーションサーバにデータソースを配置しています.一人一人のデバッグプログラムは本機を使っています.ですから、デバッグに使うサービスはeclipseのtomcatプラグインです.データソースはtomcatの配置とweblogicの同名のデータソースが使えますが、JTA tomcatはサポートしていません.
全体のプロジェクトグループは統一した配置管理を使用していますので、springのaplicationContaction Contactext.xmlはみんな同じです.毎日毎日構築しています.サーバーに配置するのも配置管理上のファイルと同じです.データソースとJTAmanagerをリモートに配置してもいいですか?
spring公式文書を探していますが、あまり簡単ではありません.インターネットgoogleは長い間見つけられませんでした.(おかしいと思いますが、後で考えてもおかしくないです.みんなは現地のデータソースを使ったり、アプリケーションサービスのデータソースを使ったりするのも同じアプリケーションサービスで、遠隔で使うのではありません.).だから、ソースを見てみましょう.
以下の構成では、同じアプリケーションサーバのjndiデータソースにアクセスできることが知られています.
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>jdbc/cqccms</value>
</property>
</bean>
jndiを使っている時にclientプログラムをリモートで訪問して書いたことがあります.主にjndi名を知っている以外に、jndi環境を設定しているので、Jndi Object FactoryBenのソースコードを調べてみてください.jndi環境を設定する方法があるかどうか見てください.やはりsetJndi Enviromentメソッドパラメータはpropertiesです.いいです.以下の配置でリモートソースにアクセスできます.<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>jdbc/cqccms</value>
</property>
<property name="jndiEnvironment">
<props>
<prop key="java.naming.factory.initial">
weblogic.jndi.WLInitialContextFactory
</prop>
<prop key="java.naming.provider.url">t3://172.16.101.42:7001</prop>
<prop key="java.naming.security.principal">weblogic</prop>
<prop key="java.naming.security.credentials">weblogic</prop>
</props>
</property>
</bean>
でもweblogic.jarを自分の応用のlibの下に置くことを覚えていますか?weblogic.jndi.WLInitialContect Factory種類が探し出せません.
データソースができました.テストは本当に役に立ちましたが、jtaの対象は長距離訪問があまりうまくいっていないようです.org.springframe ebook.tranactions.jta.Jta.Jta Transation Manager類を見ましたが、これらの方法は発見されませんでした.
<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate" singleton="true"
lazy-init="default" autowire="default" dependency-check="default">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">
weblogic.jndi.WLInitialContextFactory
</prop>
<prop key="java.naming.provider.url">t3://172.16.101.42:7001</prop>
<prop key="java.naming.security.principal">weblogic</prop>
<prop key="java.naming.security.credentials">weblogic</prop>
</props>
</property>
</bean>
そして、トレーサビリティManagerを配置します.以下の通りです.
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager" singleton="true"
lazy-init="default" autowire="default" dependency-check="default">
<property name="jndiTemplate">
<ref local="jndiTemplate" />
</property>
<property name="userTransactionName">
<value>weblogic/transaction/UserTransaction</value>
</property>
</bean>
でもJtaTransaction Managerはデフォルトでjndi nameをUserTransactionのjta対象として探しています.同じアプリケーションサーバでも大丈夫です.長距離は訪問できません.後でweblogicのjndi樹を直接見て、このjndi名weblogic/tranction/UserTransationを見つけて、配置テストに成功しました.