<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Spring遠程數據源JTA事務連接配置

    Posted on 2005-10-22 22:09 publisher luo 閱讀(4210) 評論(1)  編輯  收藏 所屬分類: 項目問題解決
            項目組開發服務器使用weblogic,應用服務器上配置了數據源,每個人開發使用eclipse,每人調試程序都使用本機,所以調試使用的服務是跟eclipse的tomcat插件,數據源可以使用tomcat的配置的和weblogic同名的數據源,可是JTA tomcat不支持。
            因為整個項目組使用統一的配置管理,spring的applicationContext.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環境(Environment),所以查找一下JndiObjectFactoryBean的源代碼,看看有沒有設置jndi環境的方法,果然有setJndiEnvironment方法參數為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.WLInitialContextFactory類。
          數據源搞定了,測試一下果真好用,不過jta對象遠程訪問好像沒那么順利,同理查看org.springframework.transaction.jta.JtaTransactionManager類,沒有發現上述方法,不過看到了setJndiTemplate()方法,也不錯現配置一個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默認找jndi name為UserTransaction的jta對象,在同一應用服務器上可以,遠程訪問不到,后直接查看weblogic的jndi樹找到這個jndi名weblogic/transaction/UserTransaction,配置上測試果然成功。

    Feedback

    # re: Spring遠程數據源JTA事務連接配置  回復  更多評論   

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

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

    Copyright © publisher luo

    主站蜘蛛池模板: 亚洲av无码专区青青草原| 亚洲乱码日产精品a级毛片久久| 久久亚洲精品国产精品黑人| a视频在线观看免费| 亚洲av日韩av高潮潮喷无码| 大地资源在线资源免费观看| 久久亚洲精品无码| 6080午夜一级毛片免费看 | 国产黄在线观看免费观看不卡| 国产一级理论免费版| 一区二区免费在线观看| 中文字幕亚洲综合久久男男| 久久一区二区三区免费| 亚洲av永久无码精品网站 | 亚洲精品无码久久久久久| 特级淫片国产免费高清视频| 国产亚洲综合一区二区三区| 狠狠色婷婷狠狠狠亚洲综合| 野花香高清在线观看视频播放免费 | 三年片免费观看大全国语| 国产日韩亚洲大尺度高清| 久久久免费的精品| 精品久久久久久亚洲精品| 国产精品国产午夜免费福利看| 日韩免费在线中文字幕| 亚洲AV无码一区二区三区DV| 四虎永久在线精品免费观看视频| 亚洲av永久无码| 亚洲综合国产一区二区三区| 5g影院5g天天爽永久免费影院| 亚洲国产精品成人午夜在线观看 | 最近免费中文字幕大全高清大全1| ww亚洲ww在线观看国产| 免费无码一区二区三区蜜桃大| 高清永久免费观看| 亚洲免费中文字幕| 亚洲日韩人妻第一页| 最近免费中文字幕mv在线电影 | 狼人大香伊蕉国产WWW亚洲| 亚洲精品美女久久777777| 成年丰满熟妇午夜免费视频|