項(xiàng)目組開發(fā)服務(wù)器使用weblogic,應(yīng)用服務(wù)器上配置了數(shù)據(jù)源,每個(gè)人開發(fā)使用eclipse,每人調(diào)試程序都使用本機(jī),所以調(diào)試使用的服務(wù)是跟eclipse的tomcat插件,數(shù)據(jù)源可以使用tomcat的配置的和weblogic同名的數(shù)據(jù)源,可是JTA tomcat不支持。
                  因?yàn)檎麄€(gè)項(xiàng)目組使用統(tǒng)一的配置管理,spring的applicationContext.xml大家都相同,每天還要做每日構(gòu)建,部署到服務(wù)器上也與配置管理上的文件相同,所以想是否可以將數(shù)據(jù)源和JTAmanager配置成遠(yuǎn)程的。
                 查找spring官方文檔,太簡(jiǎn)單沒有這方面描述,上網(wǎng)google了半天,沒找到(奇怪?其實(shí)后來想想也不奇怪,大家要么使用本地?cái)?shù)據(jù)源(開發(fā)調(diào)試),要么使用應(yīng)用服務(wù)的數(shù)據(jù)源也是在同一應(yīng)用服務(wù)器上,而不是在遠(yuǎn)程使用(部署的生產(chǎn)環(huán)境)。),所以干脆看看源碼算了。
                 已知如下配置可以訪問到同一應(yīng)用服務(wù)器的jndi數(shù)據(jù)源
          <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
              <property name="jndiName">
                  <value>jdbc/cqccms</value>
              </property>
           </bean>
                  記得當(dāng)初使用jndi時(shí)可以遠(yuǎn)程訪問寫過client程序,主要除了要知道jndi名,還要設(shè)置jndi環(huán)境(Environment),所以查找一下JndiObjectFactoryBean的源代碼,看看有沒有設(shè)置jndi環(huán)境的方法,果然有setJndiEnvironment方法參數(shù)為properties,可以了,如下配置就能訪問遠(yuǎn)程數(shù)據(jù)源了
          <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放到自己應(yīng)用的lib下,要不找不到weblogic.jndi.WLInitialContextFactory類。
                數(shù)據(jù)源搞定了,測(cè)試一下果真好用,不過jta對(duì)象遠(yuǎn)程訪問好像沒那么順利,同理查看org.springframework.transaction.jta.JtaTransactionManager類,沒有發(fā)現(xiàn)上述方法,不過看到了setJndiTemplate()方法,也不錯(cuò)現(xiàn)配置一個(gè)jndiTemplate,如下:
           <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>
                然后在配置一下transactionManager,如下
           <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>
                不過JtaTransactionManager默認(rèn)找jndi name為UserTransaction的jta對(duì)象,在同一應(yīng)用服務(wù)器上可以,遠(yuǎn)程訪問不到,后直接查看weblogic的jndi樹找到這個(gè)jndi名weblogic/transaction/UserTransaction,配置上測(cè)試果然成功。

          Feedback

          # re: Spring遠(yuǎn)程數(shù)據(jù)源JTA事務(wù)連接配置  回復(fù)  更多評(píng)論   

          2013-12-25 15:36 by Ayange
          你好,我想問下這樣配置之后,本地可以用tomcat來啟動(dòng)服務(wù)么?

          posts - 9, comments - 27, trackbacks - 0, articles - 19

          Copyright © publisher luo

          主站蜘蛛池模板: 石城县| 晋江市| 克拉玛依市| 和顺县| 喀喇| 南丹县| 藁城市| 琼中| 渝北区| 饶平县| 兴安盟| 湄潭县| 昌黎县| 拜泉县| 烟台市| 周口市| 崇阳县| 韶山市| 仁化县| 新田县| 鹤山市| 文成县| 瑞金市| 武邑县| 金平| 涟源市| 伊金霍洛旗| 南平市| 和平区| 施秉县| 修文县| 岳西县| 抚松县| 富锦市| 达拉特旗| 广昌县| 铜鼓县| 泊头市| 毕节市| 康马县| 永康市|