当前位置: 首页 > 知识库问答 >
问题:

使用Atomikos在Tomcat服务器中正确设置JTA事务管理器

戚研
2023-03-14
<bean id="AtomikosTransactionManager"  
      class="com.atomikos.icatch.jta.UserTransactionManager"  
    init-method="init" destroy-method="close"> 
   <!--  when close is called, should we force  
         transactions to terminate or not?  --> 
   <property name="forceShutdown" value="false" /> 
</bean> 

<bean id="AtomikosUserTransaction"  
   class="com.atomikos.icatch.jta.UserTransactionImp">      
   <property name="transactionTimeout" value="300" /> 
</bean>

<jee:jndi-lookup expected-type="javax.sql.DataSource" id="dataSource" jndi-name="jdbc/EDITSOLUTIONS"/>

<bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="mappingResources"/>
    <list>
        <value>../../src/editsolutions.hibernate.cfg.xml</value>
    </list>
    <property name="hibernateProperties">
        <value>
            hibernate.dialect=${hibernate.dialect}
        </value>
    </property>
</bean>

<bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
    <property name="connectionFactory">
        <bean class="org.apache.activemq.ActiveMQConnectionFactory">
            <property name="brokerURL" value="failover://tcp://localhost:61616"/>
        </bean>
    </property>
</bean>

<bean id="jmsConnectionFactory"class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL" value="failover://tcp://localhost:61616"/>
</bean>

<bean name="txManager" class="org.springframework.transaction.jta.JtaTransactionManager">
    <property name="transactionManager" ref="AtomikosTransactionManager" /> 
    <property name="userTransaction" ref="AtomikosUserTransaction" />
</bean>
  1. 我不确定Atomikos是否正确集成?
  2. 可以从 获取数据源吗?
  3. Hiberante配置与JtatransactionManager是否正确?
  4. 由于它嵌入在JVM中,不由容器管理,JTATransactionManager能够识别ActimeMQ吗?

共有1个答案

公冶和豫
2023-03-14

尝试这个非常有用的链接:http://www.atomikos.com/documentation/springintegration

请记住以这种方式配置数据源:

<bean id="dataSourceA" class="com.atomikos.jdbc.AtomikosDataSourceBean"  init-method="init" destroy-method="close">
    <qualifier value="jmsRecoveryDatabaseSchema"/> 
    <property name="uniqueResourceName"><value>XADS1</value></property> 
    <property name="xaDataSourceClassName"> 
        <value>oracle.jdbc.xa.client.OracleXADataSource</value> 
    </property> 
    <property name="xaProperties"> 
        <props> 
            <prop key="URL">${jdbc.url}</prop> 
            <prop key="user">${jdbc.username}</prop> 
           <prop key="password">${jdbc.password}</prop> 
        </props> 
    </property> 
    <property name="poolSize"><value>1</value></property>
    <property name="testQuery" value="SELECT 1 FROM DUAL"/>
</bean>

希望有帮助!

 类似资料:
  • 我使用Atomikos事务管理器管理Spring-Boot独立应用程序中的分布式事务,使用Apache Camel集成ActiveMQ队列和postgresql DB(JPA via Hibernate5)。我的问题是在我的日志中打印了很多类似下面这样的消息。 为什么一直打印这些日志? 我认为超时(ActiveMQ组件、Datasource或Atomikos)配置不佳,但我不知道如何开始研究它。

  • 并用@Transactional注释了具体类。 我们使用Jboss应用服务器支持通过JNDI与MQ集成。这里的问题是,如果监听器中的任何层有任何异常,则整个事务不会回滚,消息也不会移动到退出队列。很明显,当我们使用Hibernate事务管理器时,它不知道其他资源,如JMS事务。 我可以安全地用JTA事务替换它吗,因为Jboss将处理整个事务管理?这样做是否有任何可预见的风险?

  • 我有一个带有JPA/Hibernate的Spring Boot2.x应用程序和两个单独的事务管理器:每个租户1个,应用程序范围1个。所有实体、存储库和服务都被分离在不同的包中。 有没有一种方法可以在包级别上设置事务管理器,这样我就不必在每次使用时都显式地设置它? 基于使用@transactional注释的多个事务管理器中给出的答案,我创建了和元注释,但这不允许我设置标志,这是每个方法所必需的。

  • Apache ShardingSphere 默认的 XA 事务管理器为 Atomikos。 数据恢复 在项目的 logs 目录中会生成xa_tx.log, 这是 XA 崩溃恢复时所需的日志,请勿删除。 修改配置 可以通过在项目的 classpath 中添加 jta.properties 来定制化 Atomikos 配置项。 详情请参见Atomikos官方文档。

  • 本文向大家介绍使用nginx设置代理服务器,包括了使用nginx设置代理服务器的使用技巧和注意事项,需要的朋友参考一下 nginx可以利用其反向代理的功能来进行负载均衡的实现,同时也可以使用其正向代理的功能设置代理服务器,比如在内网的环境中,在可以连接外网的机器上运行nginx作为代理服务器,其他机器通过设定此台机器的IP和port即可通过其连接上网,本文使用nginx官方镜像,通过如下步骤即可简