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

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

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

    kingpub

    海內存知己,博客若比鄰

     

    使用Spring+Hibernate+JOTM+Oracle9i集成解決方案的遭遇

    因為在項目中要用到多數據源,所以這次必須采用JTA這種分布式事務管理方案,后來決定選JOTM這個JTA的開源實現,網上關于JOTM的文章很多了,就不贅述了,貼下我的配置吧(carol.properties就免了吧):

    <bean id="jotm" class="org.springframework.transaction.jta.JotmFactoryBean"/>
    ?<!--JOTM-->
    ?<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
    ??? <property name="userTransaction">
    ??????? <ref local="jotm"/>
    ??? </property>
    ?</bean>
    ??
    ?<bean id="abstractTransactionProxy" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    ??<property name="transactionManager">
    ???<ref bean="transactionManager"/>
    ??</property>
    ??<property name="transactionAttributeSource">
    ???<bean class="org.springframework.transaction.annotation.AnnotationTransactionAttributeSource"/>
    ??</property>
    ?</bean>

    ?<bean id="abstractTmsSessionProxy" abstract="true">
    ??<property name="sessionFactory" ref="tmsSessionFactory"/>
    ?</bean>
    ?
    ?<bean id="abstractWmsSessionProxy" abstract="true">
    ??<property name="sessionFactory" ref="wmsSessionFactory"/>
    ?</bean>
    ?
    ?<bean id="abstractFmsSessionProxy" abstract="true">
    ??<property name="sessionFactory" ref="fmsSessionFactory"/>
    ?</bean>
    ?


    ?<!-- WMS data source -->
    ?<bean id="innerDataSourceWms" class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown">
    ??<property name="transactionManager">
    ???<ref local="jotm"/>
    ??</property>
    ??<property name="driverName">
    ???<value>oracle.jdbc.OracleDriver</value>
    ??</property>
    ??<property name="url">
    ???<value>jdbc:oracle:thin:@10.4.1.110:1521:testdb</value>
    ??</property>
    ??<property name="user">
    ???<value>t_wms</value>
    ??</property>
    ??<property name="password">
    ???<value>111</value>
    ??</property>
    ?</bean>

    ?<bean id="dataSourceWms" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown">
    ??<property name="dataSource">
    ???<ref local="innerDataSourceWms"/>
    ??</property>
    ??<property name="transactionManager">
    ???<ref local="jotm"/>
    ??</property>
    ??<property name="maxSize">
    ???<value>10</value>
    ??</property>
    ??<property name="user">
    ???<value>t_wms</value>
    ??</property>
    ??<property name="password">
    ???<value>111</value>
    ??</property>
    ?</bean>
    ?
    ??? <bean id="wmsSessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
    ??????? <property name="dataSource" ref="dataSourceWms"/>
    ????????<property name="lobHandler" ref="lobHandler"/>
    ??????? <property name="mappingResources">
    ??????????? <list>
    ??????????????????? ........

    ??????????? </list>
    ??????? </property>
    ??????? <property name="hibernateProperties">
    ??????????? <props>
    ??????????????? <prop key="hibernate.dialect">net.sf.hibernate.dialect.Oracle9Dialect</prop>
    ??????????????? <prop key="hibernate.hbm2ddl.auto">update</prop>
    ??????????? </props>
    ??????? </property>
    ??<property name="jtaTransactionManager">
    ???<ref bean="jotm"/>
    ??</property>
    ??? </bean>
    ?
    ?<!--TMS data source-->
    ?<bean id="innerDataSourceTms" class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown">
    ??<property name="transactionManager">
    ???<ref local="jotm"/>
    ??</property>
    ??<property name="driverName">
    ???<value>oracle.jdbc.OracleDriver</value>
    ??</property>
    ??<property name="url">
    ???<value>jdbc:oracle:thin:@10.4.1.110:1521:testdb</value>
    ??</property>
    ??<property name="user">
    ???<value>t_tms</value>
    ??</property>
    ??<property name="password">
    ???<value>111</value>
    ??</property>
    ?</bean>

    ?<bean id="dataSourceTms" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown">
    ??<property name="dataSource">
    ???<ref local="innerDataSourceTms"/>
    ??</property>
    ??<property name="transactionManager">
    ???<ref local="jotm"/>
    ??</property>
    ??<property name="maxSize">
    ???<value>10</value>
    ??</property>
    ??<property name="user">
    ???<value>t_tms</value>
    ??</property>
    ??<property name="password">
    ???<value>111</value>
    ??</property>
    ?</bean>


    ??? <bean id="tmsSessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
    ??????? <property name="dataSource" ref="dataSourceTms"/>
    ????????<property name="lobHandler" ref="lobHandler"/>
    ??????? <property name="mappingResources">
    ??????????? <list>
    ??????????????????....
    ??????????? </list>
    ??????? </property>
    ??????? <property name="hibernateProperties">
    ??????????? <props>
    ??????????????? <prop key="hibernate.dialect">net.sf.hibernate.dialect.Oracle9Dialect</prop>
    ????????????????<prop key="hibernate.hbm2ddl.auto">update</prop>
    ??????????? </props>
    ??????? </property>
    ??<property name="jtaTransactionManager">
    ???<ref bean="jotm"/>
    ??</property>
    ??? </bean>
    ?
    ?
    ?<!--FMS data source-->
    ?<bean id="innerDataSourceFms" class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown">
    ??<property name="transactionManager">
    ???<ref local="jotm"/>
    ??</property>
    ??<property name="driverName">
    ???<value>oracle.jdbc.OracleDriver</value>
    ??</property>
    ??<property name="url">
    ???<value>jdbc:oracle:thin:@10.4.1.110:1521:testdb</value>
    ??</property>
    ??<property name="user">
    ???<value>t_fms</value>
    ??</property>
    ??<property name="password">
    ???<value>111</value>
    ??</property>
    ?</bean>

    ?<bean id="dataSourceFms" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown">
    ??<property name="dataSource">
    ???<ref local="innerDataSourceFms"/>
    ??</property>
    ??<property name="transactionManager">
    ???<ref local="jotm"/>
    ??</property>
    ??<property name="maxSize">
    ???<value>10</value>
    ??</property>
    ??<property name="user">
    ???<value>t_fms</value>
    ??</property>
    ??<property name="password">
    ???<value>111</value>
    ??</property>
    ?</bean>

    ??? <bean id="fmsSessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
    ??????? <property name="dataSource" ref="dataSourceFms"/>
    ??<property name="lobHandler" ref="lobHandler"/>
    ??????? <property name="mappingResources">
    ??????????? <list>
    ??????????????????.....
    ??????????? </list>
    ??????? </property>
    ??????? <property name="hibernateProperties">
    ??????????? <props>
    ??????????????? <prop key="hibernate.dialect">net.sf.hibernate.dialect.Oracle9Dialect</prop>
    ????<prop key="hibernate.hbm2ddl.auto">update</prop>
    ??????????? </props>
    ??????? </property>
    ??<property name="jtaTransactionManager">
    ???<ref bean="jotm"/>
    ??</property>
    ??? </bean>

    由于前期使用中的發現XAPool這個包里面有類老是報連接方面的錯誤,于是在參考了一篇網上的文章后把xapool和包裝連接的配置都去掉了,結果導致的是多數據源的事務根本無法實現,后來仔細想想,覺得很詭異,xapool就是jotm實現多數據源事務的關鍵所在,怎么能不用?

    于是仔細研究了下,發現很多問題,首先,JOTM需要的依賴--CAROL包沒有JDK1.5的版本,需要自己下載源碼并編譯成新的ow_carol-all.jar
    Xapool倒是有JDK1.5的版本xapool-1.5.0,但是跑起來老是報錯,于是去下了xapool的源文件,發現居然源碼都不能編譯通過,還有JDK1.5的保留字在里面,真不知道作者是怎么發布出1.5.0的.于是自己改掉關鍵字,并修補了一些檢查不太嚴格的檢測,并重新打了個版本.結果跑起來還是會報錯,不過是oracle報游標用盡的錯誤.

    搜了一把就發現原來是Oracle9i有名的內存溢出bug導致:Xapool對PreparedStatement進行了Cache,同時Oracle有一個出名的內存漏洞,PreparedStatement使用之后必須關閉,如果不關閉連續進行SQL查詢會造成前面SQL的游標不能釋放;

    參考了網上的修改方案(xapool1.4的),又自己研究了半天,最后終于成功了,Xapool1.5的修改如下:
    修改StandardConnectionPoolDataSource類的public static final int DEFAULT_PREPAREDSTMTCACHESIZE = 0,(當然也可以用配置的方式來注入)
    這樣就關閉了PreparedStatement的Cache,而且也不會造成什么1.4中關閉連接時的異常等等.

    最后根據實際情況,設置好dataSourceXXX這幾個bean的lifeTime,sleepTime,maxSize,checkLevelObject屬性(具體意義和設置方法可以參考網上的說明)
    就終于可以正式使用了,測試了下,情況還不錯:)

    posted on 2006-08-15 09:44 xiaofeng 閱讀(363) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    常用鏈接

    留言簿(2)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    收藏夾

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 无码精品国产一区二区三区免费| 久久久亚洲精华液精华液精华液| 国产免费一区二区三区免费视频 | 色偷偷亚洲第一综合| 男人的好免费观看在线视频| 亚洲成a人片在线网站| 五月婷婷综合免费| 久久精品国产亚洲AV久| 女人被男人躁的女爽免费视频| 亚洲乱人伦中文字幕无码| 日本成人免费在线| 羞羞视频免费网站日本| 丁香五月亚洲综合深深爱| 在线观看免费视频网站色| 亚洲AV综合色区无码二区偷拍 | 免费国产高清视频| gogo免费在线观看| 亚洲AV日韩AV永久无码久久| 69视频在线观看高清免费| 亚洲色欲色欲www| 国产又粗又长又硬免费视频| 4hu四虎免费影院www| 亚洲AV日韩精品久久久久久| 在线观看AV片永久免费| 黄网站色成年片大免费高清| 亚洲乱码国产一区三区| 亚洲成人免费电影| 在线观看国产一区亚洲bd| 亚洲一区二区三区香蕉| 青草草色A免费观看在线| 国产精品亚洲五月天高清| 精品亚洲永久免费精品| 野花高清在线观看免费完整版中文| 国产亚洲精品精品精品| 久久精品国产亚洲av成人| 女人被免费视频网站| a级毛片毛片免费观看久潮喷| 亚洲国产美女精品久久久久| 亚洲国产一级在线观看| 91精品成人免费国产片| 免费播放美女一级毛片|