如何配置tomcat支持JTA?

首先需要[安装可以使用JTA的组件,可使用的组件包括atomikos、JBossTS、openEJB

  以atomikos,采用Sybase数据库进行说明:
(1).atomikos配置
    jta.properties,配置方式请查阅atomikos的文档
 
(2).spring配置
     <tx:jta-transaction-manager />
     <tx:annotation-driven />
    
     <!-- db -->
     <bean id= "atii.dataSource" class= "org.springframework.jndi.JndiObjectFactoryBean" >
         <property name= "jndiName" value= "jdbc/atii" />
         <property name= "resourceRef" value= "${isResourceRef}" />
     </bean>
    
     <!-- jms sender -->
     <bean id= "atii.jmsConnFactory" class= "org.springframework.jndi.JndiObjectFactoryBean" >
         <property name= "jndiName" value= "jms/topicConnFactory" />
         <property name= "resourceRef" value= "${isResourceRef}" />
     </bean>
    <bean
id= "atii.jmsTopic" class= "org.springframework.jndi.JndiObjectFactoryBean" >
         <property name= "jndiName" value= "jms/topic" />
        <property
name= "resourceRef" value= "${isResourceRef}" />
    </bean>
    <bean
id= "atii.jmsTemplate" class= "org.springframework.jms.core.JmsTemplate" >
        <property
name= "connectionFactory" ref= "atii.jmsConnFactory" />
        <property
name= "defaultDestination" ref= "atii.jmsTopic" />
        <property
name= "sessionTransacted" value= "true" />
    </bean>


     <!-- jms receiver -->
     <bean id= "atii.messageListener" class= "org.springframework.jms.listener.adapter.MessageListenerAdapter" >
        <property
name= "delegate" ref= "atii.systemInfoService" />
        <property
name= "defaultListenerMethod" value= "receive" />
    </bean>
    <bean
id= "atii.messageListenerContainer" class= "org.springframework.jms.listener.DefaultMessageListenerContainer" >
        <property
name= "connectionFactory" ref= "atii.jmsConnFactory" />
        <property
name= "destination" ref= "atii.jmsTopic" />
        <property
name= "messageListener" ref= "atii.messageListener" />
        <property
name= "autoStartup" value= "true" />
        <property
name= "transactionManager" ref= "transactionManager" />
        <property
name= "sessionTransacted" value= "true" />
    </bean>

    
(3).TOMCAT配置
    contex.xml配置
     <Transaction factory="com.atomikos.icatch.jta.UserTransactionFactory" />
    
     <!-- 数据库配置 要使用实现了XADataSource的JDBC驱动-->
  <Resource name= "jdbc/atii" auth= "Container" type= "com.atomikos.jdbc.AtomikosDataSourceBean"
            factory= "com.atomikos.tomcat.BeanFactory" uniqueResourceName= "jdbc/atii"
            xaDataSourceClassName= "com.sybase.jdbc3.jdbc.SybXADataSource"
            testQuery= "select 1"
            minPoolSize= "1"
            maxPoolSize= "2"
            xaProperties.databaseName= "atii"
            xaProperties.serverName= "10.233.7.186"
            xaProperties.portNumber= "5000"
            xaProperties.user= "login_name"
            xaProperties.password= "password"
            xaProperties.JCONNECT_VERSION= "6.05"
            xaProperties.CHARSET= "cp936"
            xaProperties.DYNAMIC_PREPARE= "true" />
 
  <!-- 消息队列配置 需要使用实现了XAConnectionFactory"的连接工厂-->
  <Resource name= "jms/topicConnFactory" auth= "Container" type= "com.atomikos.jms.AtomikosConnectionFactoryBean"
               factory= "com.atomikos.tomcat.EnhancedTomcatAtomikosBeanFactory" uniqueResourceName= "jms/topicConnFactory"
               xaConnectionFactoryClassName= "org.apache.activemq.ActiveMQXAConnectionFactory"
              xaProperties.brokerURL= "tcp://localhost:61616"
               maxPoolSize= "3"
               minPoolSize= "1" />

  <Resource name= "jms/topic" auth= "Container" type= "org.apache.activemq.command.ActiveMQTopic"
            factory= "org.apache.naming.factory.BeanFactory"
            physicalName= "testTopic"  />
 
  在catalina.properties的common.loader中加入atomikos-lifecycle-listener.jar,atomikos-tomcat-beanfactory.jar,atomikos-transactions-3.7.0.jar,以及其他相关jar文件;
  加入jta.properties所在路径
 
  server.xml配置
  <Listener className= "com.atomikos.tomcat.AtomikosLifecycleListener" />

(4).sybase相关配置
  sp_role "grant",dtm_tm_role,login_name
 
  sp_configure 'enable DTM',1
  sp_configure 'enable xact coordination',1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值