`
lu2002lulu
  • 浏览: 97296 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

atomikos jndi spring

阅读更多

spring :
1. 先配置JTA事务:
Java代码
<!-- 配置了JTA事务管理器 -->

<bean id="transactionManager"  
      class="org.springframework.transaction.jta.JtaTransactionManager">   
    <property name="transactionManager">   
        <ref bean="atomikosTransactionManager" />   
    </property>   
    <property name="userTransaction">   
        <ref bean="atomikosUserTransaction" />   
    </property>   
</bean>   
<bean id="atomikosTransactionManager"  
      class="com.atomikos.icatch.jta.UserTransactionManager"  
    init-method="init" destroy-method="close">   
    <property name="forceShutdown">   
        <value>true</value>   
    </property>   
</bean>   
<bean id="atomikosUserTransaction"  
    class="com.atomikos.icatch.jta.UserTransactionImp">   
    <property name="transactionTimeout" value="0" />   
</bean>  



<!-- 配置了JTA事务管理器 -->

<bean id="transactionManager"
      class="org.springframework.transaction.jta.JtaTransactionManager">
	<property name="transactionManager">
		<ref bean="atomikosTransactionManager" />
	</property>
	<property name="userTransaction">
		<ref bean="atomikosUserTransaction" />
	</property>
</bean>
<bean id="atomikosTransactionManager"
      class="com.atomikos.icatch.jta.UserTransactionManager"
	init-method="init" destroy-method="close">
	<property name="forceShutdown">
		<value>true</value>
	</property>
</bean>
<bean id="atomikosUserTransaction"
	class="com.atomikos.icatch.jta.UserTransactionImp">
	<property name="transactionTimeout" value="0" />
</bean>



2. 通过JNDI获取数据源:
Java代码

<bean id="sqlServerDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">   
        <property name="jndiName" value="${jdbc.sqlserver.datasource}" />   
</bean>   
<bean id="oracleDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">   
        <property name="jndiName" value="${jdbc.oracle.datasource}" />   
</bean>  



3. 创建 TransactionProxyFactoryBean:
Java代码

<bean id="transactionProxy"  
        class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"    
         abstract="true">   
        <property name="transactionManager" ref="transactionManager" />   
        <property name="transactionAttributes">   
            <props>   
                <prop key="*">PROPAGATION_REQUIRED,ISOLATION_DEFAULT,timeout_3000</prop>   
                <prop key="insert*">PROPAGATION_REQUIRED</prop>   
                <prop key="save*">PROPAGATION_REQUIRED</prop>   
                <prop key="update*">PROPAGATION_REQUIRED</prop>   
                <prop key="create*">PROPAGATION_REQUIRED</prop>   
                <prop key="remove*">PROPAGATION_REQUIRED</prop>   
                <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>   
                <prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>   
                <prop key="list*">PROPAGATION_REQUIRED,readOnly</prop>   
                <prop key="execute*">PROPAGATION_REQUIRED</prop>   
                <prop key="unique*">PROPAGATION_REQUIRED,readOnly</prop>   
            </props>   
        </property>   
</bean>  

<bean id="transactionProxy"
		class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" 
         abstract="true">
		<property name="transactionManager" ref="transactionManager" />
		<property name="transactionAttributes">
			<props>
				<prop key="*">PROPAGATION_REQUIRED,ISOLATION_DEFAULT,timeout_3000</prop>
				<prop key="insert*">PROPAGATION_REQUIRED</prop>
				<prop key="save*">PROPAGATION_REQUIRED</prop>
				<prop key="update*">PROPAGATION_REQUIRED</prop>
				<prop key="create*">PROPAGATION_REQUIRED</prop>
				<prop key="remove*">PROPAGATION_REQUIRED</prop>
				<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
				<prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>
				<prop key="list*">PROPAGATION_REQUIRED,readOnly</prop>
				<prop key="execute*">PROPAGATION_REQUIRED</prop>
				<prop key="unique*">PROPAGATION_REQUIRED,readOnly</prop>
			</props>
		</property>
</bean>



JBOSS:
配置连接池mssql-xa-ds.xml:
Java代码

<datasources>   
 <xa-datasource>   
  <jndi-name>interfaceSqlServer</jndi-name>   
    <track-connection-by-tx/>   
    <!--<track-connection-by-tx>true</track-connection-by-tx>-->   
  <!--<isSameRM-override-value>false</isSameRM-override-value>-->   
    <!--<new-connection-sql>set autocommit=1</new-connection-sql>-->   
    <!--<no-tx-separate-pools>true</no-tx-separate-pools>-->   
    <xa-datasource-class>net.sourceforge.jtds.jdbcx.JtdsDataSource</xa-datasource-class>   
  <xa-datasource-property name="ServerName">192.168.**.**</xa-datasource-property>   
  <xa-datasource-property name="DatabaseName">wsinterface</xa-datasource-property>   
    <use-java-context>false</use-java-context>   
    <!--<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>-->   
  <user-name>**</user-name>   
  <password>**</password>   
  <metadata>   
    <type-mapping>MSSQLSERVER2000</type-mapping>   
  </metadata>   
    <min-pool-size>1</min-pool-size>   
    <max-pool-size>50</max-pool-size>   
    <blocking-timeout-millis>5000</blocking-timeout-millis>   
    <idle-timeout-minutes>15</idle-timeout-minutes>   
 </xa-datasource>   
</datasources>  

<datasources>
 <xa-datasource>
  <jndi-name>interfaceSqlServer</jndi-name>
	<track-connection-by-tx/>
	<!--<track-connection-by-tx>true</track-connection-by-tx>-->
  <!--<isSameRM-override-value>false</isSameRM-override-value>-->
	<!--<new-connection-sql>set autocommit=1</new-connection-sql>-->
	<!--<no-tx-separate-pools>true</no-tx-separate-pools>-->
 	<xa-datasource-class>net.sourceforge.jtds.jdbcx.JtdsDataSource</xa-datasource-class>
  <xa-datasource-property name="ServerName">192.168.**.**</xa-datasource-property>
  <xa-datasource-property name="DatabaseName">wsinterface</xa-datasource-property>
	<use-java-context>false</use-java-context>
	<!--<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>-->
  <user-name>**</user-name>
  <password>**</password>
  <metadata>
    <type-mapping>MSSQLSERVER2000</type-mapping>
  </metadata>
	<min-pool-size>1</min-pool-size>
	<max-pool-size>50</max-pool-size>
	<blocking-timeout-millis>5000</blocking-timeout-millis>
	<idle-timeout-minutes>15</idle-timeout-minutes>
 </xa-datasource>
</datasources>



oracle-xa-ds.xml:
Java代码

<datasources>   
  <xa-datasource>   
    <jndi-name>interfaceOracle</jndi-name>   
    <track-connection-by-tx/>   
    <!--<track-connection-by-tx>true</track-connection-by-tx>   
  <isSameRM-override-value>false</isSameRM-override-value>   
    <new-connection-sql>set autocommit=1</new-connection-sql>   
    <no-tx-separate-pools>true</no-tx-separate-pools>-->   
    <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>   
    <xa-datasource-property name="URL">jdbc:oracle:thin:@192.168.**.**:1521:****</xa-datasource-property>   
    <xa-datasource-property name="User">***</xa-datasource-property>   
    <xa-datasource-property name="Password">***</xa-datasource-property>   
    <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>   
    <use-java-context>false</use-java-context>   
    <metadata>   
        <type-mapping>Oracle9i</type-mapping>   
    </metadata>   
    <!--<mbean code="org.jboss.resource.adapter.jdbc.vendor.OracleXAExceptionFormatter"  
        name="jboss.jca:service=OracleXAExceptionFormatter">   
        <depends optional-attribute-name="TransactionManagerService">jboss:service=TransactionManager</depends>   
    </mbean>-->   
    <min-pool-size>1</min-pool-size>   
    <max-pool-size>50</max-pool-size>   
    <blocking-timeout-millis>5000</blocking-timeout-millis>   
    <idle-timeout-minutes>15</idle-timeout-minutes>   
  </xa-datasource>   


</datasources>

 

分享到:
评论

相关推荐

    spring+druid+AtomikosDataSource实现多数据源切换及分布式事务控制

    下面我们将详细探讨如何利用Spring、Druid和AtomikosDataSource来实现这些功能。 1. **Spring框架与数据源** Spring提供了对多种数据源的支持,包括JDBC DataSources和Transaction Managers。通过Spring的配置,...

    atomikos数据源包

    Atomikos 数据源包是专为分布式事务处理设计的一个开源框架,尤其在Spring框架中被广泛应用。这个包包含了实现高可用、可扩展性以及容错性的关键组件,以确保在多数据库环境下的数据一致性。Atomikos 提供了一个强大...

    atomikos分布式事务提交框架

    6. **易于集成**:Atomikos与Spring框架深度集成,提供了一套简单的API和配置选项,使得开发者能够在Spring应用中快速启用分布式事务支持。例如,通过使用`AtomikosDataSourceBean`,可以方便地配置Atomikos数据源并...

    Atomikos jar包下载

    3. **配置数据源**:使用Atomikos提供的JNDI数据源,将数据库连接配置为参与事务管理。 4. **启用事务管理**:在需要进行分布式事务控制的Service或DAO层,使用`@Transactional`注解来标记方法,Spring会自动调用...

    springboot-atomikos 多数据源统一事物管理demo

    本项目"springboot-atomikos 多数据源统一事物管理demo"主要展示了如何在Spring Boot应用中集成Atomikos来实现多数据源的统一事务管理。 首先,我们来详细解释一下Spring Boot和Atomikos: 1. **Spring Boot**:...

    spring JTA集成JOTM或Atomikos配置分布式事务(Tomcat应用服务器)

    3. **Spring配置**:在Spring的配置文件中,使用`jee:jta-data-source`或`jee:resource-ref`元素来引用之前创建的JNDI数据源,并配置`PlatformTransactionManager`为`org.objectweb.jotm.CurrentJOTM`。 **Atomikos...

    Spring多数据源分布式事务管理

    这些文件通常包含了Atomikos的配置信息,如数据源的JNDI名称、事务超时设置等。在项目中,我们需要根据实际需求调整这些配置,确保Atomikos能够正确地管理和协调分布在不同数据源上的事务。 总的来说,Spring多数据...

    在Spring中使用JTA事务管理

    在Spring配置文件中,你可以使用`jee:jndi-lookup`标签引用上述配置好的JNDI数据源,如之前1.4节所示。 ### 3. 小结 通过以上步骤,你已经在Spring中成功配置了JTA事务管理。无论是集成JOTM还是引用Tomcat内置的JTA...

    Spring配置JTA事务管理

    2. 配置JTA Manager:在Spring的配置文件(如`applicationContext-jta.xml`)中,你需要声明JTATransactionManager,并提供相应的JNDI名,以便Spring能从应用服务器中查找并使用它。例如: ```xml ...

    spring-boot-reference.pdf

    37.1. Using an Atomikos Transaction Manager 37.2. Using a Bitronix Transaction Manager 37.3. Using a Narayana Transaction Manager 37.4. Using a Java EE Managed Transaction Manager 37.5. Mixing XA and ...

    spring jpa

    Spring JTA 提供了与 JNDI 配合的事务管理,以及 Atomikos、Bitronix 等第三方事务管理器的集成,以支持 XA 事务。 总的来说,Spring JPA 是一个强大的 ORM 解决方案,它结合了 Spring 的便利性和 JPA 的规范,为...

    Springboot 动态多数据源 jta分布式事务

    3. 配置资源:设置JNDI名称,让Atomikos或Bitronix能够找到你的数据源和消息队列等资源。 4. 使用`@Transactional`注解:在需要进行分布式事务的方法上添加此注解,Spring Boot会自动处理事务的提交和回滚。 最后,...

    分包数据源(全局分布式事务).rar

    例如,可以配置数据源的JNDI名称,以便Atomikos能够找到并管理它们。 3. **定义数据源 bean**:在Spring配置类中,通过`AtomikosDataSourceBean`创建数据源bean,每个数据源对应一个bean,以便在运行时动态选择和...

    springboot参考指南

    使用一个Atomikos事务管理器 ii. 32.2. 使用一个Bitronix事务管理器 iii. 32.3. 使用一个J2EE管理的事务管理器 iv. 32.4. 混合XA和non-XA的JMS连接 v. 32.5. 支持可替代的内嵌事务管理器 xii. 33. Spring集成 xiii....

    Jetty中文手册

    Atomikos Transaction Manager Java Open Transaction Manager (JOTM) Bitronix Transaction Manager ActiveMQ Binding JAX-WS 2.x Endpoints to Jetty Contexts Java Management Extensions (JMX) 配置JMX教程 ...

Global site tag (gtag.js) - Google Analytics