weblogic与spring事务集成过程

转贴地址:http://hi.baidu.com/balance9/blog/item/8c30f33662ef44390a55a992.html

 

项目进展过程中,我们的框架中事务处理从最开始的仓促搭建,到后期一直在不断的改善。

    经历的过程如下:

    1. 使用DBCP的数据源配置

     2. 使用JTOM配置JTA事务控制

    3. 使用ATOMIKOS配置JTA事务控制

         注意:

                a 使用ORACLE的XA驱动

                b 对用户按照如下授权。

                  grant select on sys.dba_pending_transactions to <user name>;
                  grant select on sys.pending_trans$ to <user name>;
                  grant select on sys.dba_2pc_pending to <user name>;
                  grant execute on sys.dbms_system to <user name>;

     4. 使用容器的数据源配置和spring的weblogic的事务控制类。

          网上的例子很多,可是我不得不在这里发句牢骚,国内的网站上的文章,有七八成是转载,转载不可怕,就怕转载不转全,要不然就是不管好不好用就转载,结果坑坏了后来的这帮到处找解决方案的虾米们,可咋整呢?

         这里先描述一下环境:

          spring 2.0.8

          struts 2.0.11

          weblogic 10

          oracle 10g rac

          关键条件:

          1. 在weblogic的当前域下配置数据源,配置的时候要选择oracle thin XA的驱动,否则会报异常。

         2. 在spring中配置的时候需要注意jndi的写法。会在下面示例中写明。

<!-- weblogic datasource -->
<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
   <property name="environment">
    <props>
     <prop key="java.naming.factory.initial">
      weblogic.jndi.WLInitialContextFactory
     </prop>
     <prop key="java.naming.provider.url">t3://127.0.0.1:7777</prop>
     <prop key="java.naming.security.principal">weblogic</prop>
     <prop key="java.naming.security.credentials">weblogic</prop>
    </props>
   </property>
</bean>
<bean id="platformDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
   <property name="jndiName"><value>test_rac</value></property>
   <property name="jndiTemplate"><ref local="jndiTemplate"/></property>
</bean>
<bean id="businessDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
   <property name="jndiName"><value>scott_rac</value></property>
   <property name="jndiTemplate"><ref local="jndiTemplate"/></property>
</bean>

<!-- DAO template -->
<bean id="defaultLobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler" lazy-init="true"></bean>
<bean id="platformDAOProxy" lazy-init="true" class="com.neusoft.ess.dao.ESSDAO" abstract="true">
   <property name="dataSource">
    <ref bean="platformDataSource" />
   </property>
   <property name="lobHandler">
    <ref bean="defaultLobHandler" />
   </property>
</bean>

 

<!-- Weblogic jta Transaction Manage -->
<bean id="txManager" class="org.springframework.transaction.jta.WebLogicJtaTransactionManager">
   <property name="jndiTemplate" ref="jndiTemplate"></property>
   <property name="userTransactionName">
    <value>weblogic/transaction/UserTransaction</value>
   </property>
</bean>
<bean id="baseTxProxy" abstract="true"
   class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
   <property name="transactionManager">
    <ref bean="txManager" />
   </property>
   <property name="transactionAttributes">
    <props>
     <prop key="*">PROPAGATION_REQUIRED,-Exception</prop>
    </props>
   </property>
</bean>

 

    在这个过程中,看到网上有文章说可以搭建远程的数据源,可以建立一个公共的数据源,开发人员连接公共的数据源,这样连接数和数据源等参数可以通过统一设置了。可是按照那种方式没有成功。不知是否有哪里操作错误了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值