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

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

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

    本站不再更新,歡迎光臨 java開發(fā)技術網(wǎng)
    隨筆-230  評論-230  文章-8  trackbacks-0
    看完了經(jīng)乾的《TUXEDO系統(tǒng)經(jīng)典》后,覺得tuxedo的事務處理功能是無比強大,當時心里就想如果能用JAVA來實現(xiàn)Tuxedo所有功能,那將是一個無比強大的分布式事務處理系統(tǒng)。當我看到atomikos時,我知我找到自己一心要尋找的事務處理工具。atomikos目前中文文檔還很少,更沒有完整的中文文檔,本人讀書甚少。沒有能力能她的E文文檔翻譯成中文。今天是學習atomikos的第一天,終于把一個簡單的例子做完,現(xiàn)在貼出來與大家共享,接下來俺要好好看她的E文文檔了。applicationContext.xml配置
        <!--Atomikos  JTA 事務 begin-->   
        
    <bean id="dataSource1" class="com.atomikos.jdbc.SimpleDataSourceBean" init-method="init" destroy-method="close">   
            
    <property name="uniqueResourceName">   
                
    <value>mysql/main</value>   
            
    </property>   
            
    <property name="xaDataSourceClassName">   
                
    <!-- 使用Mysql XADataSource(mysql>=5.0, Connector/J>=5.0才可以支持XADatasource)-->   
                
    <value>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</value>   
            
    </property>   
            
    <property name="xaDataSourceProperties">   
                
    <value>URL=jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf-8;user=root;password=123456</value>   
            
    </property>   
            
    <property name="exclusiveConnectionMode">   
                
    <value>true</value>   
            
    </property>   
            
    <property name="connectionPoolSize">   
                
    <value>3</value>   
            
    </property>   
            
    <property name="validatingQuery">   
                
    <value>SELECT 1</value>   
            
    </property>   
        
    </bean>       
        
        
    <bean id="dataSource2" class="com.atomikos.jdbc.SimpleDataSourceBean" init-method="init" destroy-method="close">   
            
    <property name="uniqueResourceName">   
                
    <value>mysql/secondary</value>   
            
    </property>   
            
    <property name="xaDataSourceClassName">   
                
    <!-- 使用Mysql XADataSource(mysql>=5.0, Connector/J>=5.0才可以支持XADatasource)-->   
                
    <value>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</value>   
            
    </property>
            
    <property name="xaDataSourceProperties">   
                
    <value>URL=jdbc:mysql://localhost:3306/aotsf?useUnicode=true&amp;characterEncoding=utf-8;user=root;password=123456</value>   
            
    </property>
            
    <property name="exclusiveConnectionMode">   
                
    <value>true</value>   
            
    </property>
            
    <property name="connectionPoolSize">   
                
    <value>3</value>   
            
    </property>
            
    <property name="validatingQuery">
                
    <value>SELECT 1</value>   
            
    </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="300"/>    
        
    </bean>
        
    <bean id="springTransactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">   
            
    <property name="transactionManager">
                
    <ref bean="atomikosTransactionManager"/>
            
    </property>
            
    <property name="userTransaction">
                
    <ref bean="atomikosUserTransaction"/>
            
    </property>
        
    </bean>
        
         
    <bean id="atomikosTransactionProxy"
              class
    ="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
              abstract
    ="true">
              
    <property name="transactionManager">
                   
    <ref bean="springTransactionManager" />
              
    </property>
              
    <property name="transactionAttributes">
                   
    <props>
                    
    <prop key="*">PROPAGATION_REQUIRED,-Exception</prop>
                   
    </props>
              
    </property>
         
    </bean>
        
        
        
    <bean id="jdbcBookDAO" class="dao.jdbc.BookDAO">
            
    <property name="dataSource">
                
    <ref bean="dataSource1"/>
            
    </property>
        
    </bean>
        
        
    <bean id="jdbcTestDAO" class="dao.jdbc.TestDAO">
            
    <property name="dataSource">
                
    <ref bean="dataSource2"/>
            
    </property>
        
    </bean>
        
        
    <bean id="atomikosJTAServiceDemo" parent="atomikosTransactionProxy">
            
    <property name="target">
                
    <bean class="service.AtomikosJTAServiceDemo">
                    
    <property name="jdbcBookDAO">
                        
    <ref bean="jdbcBookDAO"/>
                    
    </property>
                    
    <property name="jdbcTestDAO">
                        
    <ref bean="jdbcTestDAO"/>
                    
    </property>                
                
    </bean>
            
    </property>
        
    </bean>
        
        
        
    <!--Atomikos  JTA 事務 end  -->

    DAO層代碼
    package dao.jdbc;

    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.jdbc.core.support.JdbcDaoSupport;

    import domain.Book;

    public class BookDAO extends JdbcDaoSupport{
        
    public void addBook(Book book){
            
    try{
                JdbcTemplate jt
    =getJdbcTemplate();
                String str_sql
    ="insert into Book(isbn,bookname,author,note)VALUES(?,?,?,?)";
                String[] args
    ={book.getIsbn(),book.getBookname(),book.getAuthor(),book.getNote()};
                jt.update(str_sql, args);
            }
    catch(RuntimeException e){
                System.out.println(
    "添加Book失敗");
                e.printStackTrace();
                
    throw e;
            }
        }
    }

    package dao.jdbc;

    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.jdbc.core.support.JdbcDaoSupport;


    public class TestDAO extends JdbcDaoSupport{
        
        
    public void addBook(Integer id, String email){
            
    try{
                JdbcTemplate jt
    =getJdbcTemplate();
                String str_sql
    ="insert into test(id,email)VALUES(?,?)";
                Object[] args
    ={id,email};
                jt.update(str_sql, args);
            }
    catch(RuntimeException e){
                System.out.println(
    "添加Test失敗");
                e.printStackTrace();
                
    throw e;
            }
        }
    }

    事層代碼
    package service;

    import dao.jdbc.BookDAO;
    import dao.jdbc.TestDAO;
    import domain.Book;

    public class AtomikosJTAServiceDemo {
        
    private BookDAO jdbcBookDAO;
        
    private TestDAO jdbcTestDAO;
        
        
    public String ok(){
            System.out.println(
    "開始.");
            jdbcTestDAO.addBook(Integer.valueOf(
    "2"), "pdw2009  tom.com");
            
            Book book
    =new Book();
            book.setIsbn(
    "ccdada66");
            book.setAuthor(
    "小東");
            book.setNote(
    "JTA測試");
            book.setBookname(
    "Atomikos學習");
            jdbcBookDAO.addBook(book);
            
            System.out.println(
    "結束.");
            
    return "ok";
        }

        
    public BookDAO getJdbcBookDAO() {
            
    return jdbcBookDAO;
        }

        
    public void setJdbcBookDAO(BookDAO jdbcBookDAO) {
            
    this.jdbcBookDAO = jdbcBookDAO;
        }

        
    public TestDAO getJdbcTestDAO() {
            
    return jdbcTestDAO;
        }

        
    public void setJdbcTestDAO(TestDAO jdbcTestDAO) {
            
    this.jdbcTestDAO = jdbcTestDAO;
        }
        
        
    }
    測試用例
    package services;


    import static org.junit.Assert.*;

    import org.junit.After;
    import org.junit.AfterClass;
    import org.junit.Before;
    import org.junit.BeforeClass;
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;

    import service.AtomikosJTAServiceDemo;

    public class AtomikosJTAServiceDemoTest {
        ApplicationContext acx
    =null;
        AtomikosJTAServiceDemo atomikosJTAServiceDemo
    =null;
        @BeforeClass
        
    public static void setUpBeforeClass() throws Exception {
        }

        @AfterClass
        
    public static void tearDownAfterClass() throws Exception {
        }

        @Before
        
    public void setUp() throws Exception {
            acx
    =new ClassPathXmlApplicationContext("applicationContext.xml");
            atomikosJTAServiceDemo
    =(AtomikosJTAServiceDemo) acx.getBean("atomikosJTAServiceDemo");
        }

        @After
        
    public void tearDown() throws Exception {
        }
        
        @Test
        
    public void notnullTest()throws Exception{
            assertNotNull(atomikosJTAServiceDemo);
        }
        @Test
        
    public void okTest()throws Exception{
            assertEquals(atomikosJTAServiceDemo.ok(),
    "ok");
            
        }
    }

    posted on 2008-05-25 15:19 有貓相伴的日子 閱讀(12719) 評論(4)  編輯  收藏 所屬分類: spring

    評論:
    # re: spring+atomikos+JTA完整例子 2008-11-14 11:40 | xnang
    只知道用spring卻不知道底層是如何實現(xiàn)的!!  回復  更多評論
      
    # re: spring+atomikos+JTA完整例子 2008-11-22 16:58 | pdw2009
    @xnang
    是的,因為沒時間,現(xiàn)在也用不到,所以就不去研究它了  回復  更多評論
      
    # re: spring+atomikos+JTA完整例子[未登錄] 2009-12-04 14:51 | L
    atomikos 需要些什么包?  回復  更多評論
      
    # re: spring+atomikos+JTA完整例子 2013-03-22 17:28 | zhaoshijie
    jar包呢 截個圖放上去,跑不起來啊 謝謝了  回復  更多評論
      
    本站不再更新,歡迎光臨 java開發(fā)技術網(wǎng)
    主站蜘蛛池模板: 国产乱子伦精品免费女| 亚洲国产精品一区| 在线观看片免费人成视频无码| 亚洲美女自拍视频| 亚洲国产成人片在线观看| 最近免费中文字幕大全高清大全1 最近免费中文字幕mv在线电影 | 亚洲av无码乱码国产精品| 日韩不卡免费视频| 国产无限免费观看黄网站| 亚洲国产美女精品久久| 无码国产精品一区二区免费vr | 亚洲精品成人av在线| 女性自慰aⅴ片高清免费| 中文字幕无线码中文字幕免费| 亚洲男人的天堂一区二区| 猫咪免费人成网站在线观看入口| 亚洲成a人片77777老司机| 国产免费拔擦拔擦8x| 1000部国产成人免费视频| 亚洲国产综合在线| 久久久无码精品亚洲日韩软件| 无码免费午夜福利片在线 | 国产情侣久久久久aⅴ免费 | 亚洲午夜未满十八勿入| 无码欧精品亚洲日韩一区夜夜嗨 | 中文文字幕文字幕亚洲色| 国产精品亚洲片在线观看不卡| 嫩草影院在线播放www免费观看| 亚洲AV成人无码网天堂| 亚洲精品偷拍视频免费观看| 99久久久精品免费观看国产| 亚洲精品精华液一区二区| 亚洲系列国产精品制服丝袜第| 亚洲AV无码一区二区二三区软件 | 亚洲视频在线观看免费| 亚洲国产精品毛片av不卡在线 | 51视频精品全部免费最新| 香蕉大伊亚洲人在线观看| 亚洲视频在线观看一区| 亚洲大成色www永久网站| 精品国产人成亚洲区|