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

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

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

    本站不再更新,歡迎光臨 java開發(fā)技術(shù)網(wǎng)
    隨筆-230  評論-230  文章-8  trackbacks-0
    看完了經(jīng)乾的《TUXEDO系統(tǒng)經(jīng)典》后,覺得tuxedo的事務(wù)處理功能是無比強大,當(dāng)時心里就想如果能用JAVA來實現(xiàn)Tuxedo所有功能,那將是一個無比強大的分布式事務(wù)處理系統(tǒng)。當(dāng)我看到atomikos時,我知我找到自己一心要尋找的事務(wù)處理工具。atomikos目前中文文檔還很少,更沒有完整的中文文檔,本人讀書甚少。沒有能力能她的E文文檔翻譯成中文。今天是學(xué)習(xí)atomikos的第一天,終于把一個簡單的例子做完,現(xiàn)在貼出來與大家共享,接下來俺要好好看她的E文文檔了。applicationContext.xml配置
        <!--Atomikos  JTA 事務(wù) 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 事務(wù) 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學(xué)習(xí)");
            jdbcBookDAO.addBook(book);
            
            System.out.println(
    "結(jié)束.");
            
    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)的!!  回復(fù)  更多評論
      
    # re: spring+atomikos+JTA完整例子 2008-11-22 16:58 | pdw2009
    @xnang
    是的,因為沒時間,現(xiàn)在也用不到,所以就不去研究它了  回復(fù)  更多評論
      
    # re: spring+atomikos+JTA完整例子[未登錄] 2009-12-04 14:51 | L
    atomikos 需要些什么包?  回復(fù)  更多評論
      
    # re: spring+atomikos+JTA完整例子 2013-03-22 17:28 | zhaoshijie
    jar包呢 截個圖放上去,跑不起來啊 謝謝了  回復(fù)  更多評論
      
    本站不再更新,歡迎光臨 java開發(fā)技術(shù)網(wǎng)
    主站蜘蛛池模板: 亚洲精品免费在线观看| 亚洲国产精品人人做人人爽| 亚洲爆乳无码专区| jizz在线免费观看| 亚洲午夜福利精品久久 | 国产老女人精品免费视频| 国产成人精品亚洲2020| 91嫩草国产在线观看免费| 在线aⅴ亚洲中文字幕| 热久久精品免费视频| 国产av无码专区亚洲av毛片搜| 免费人妻av无码专区| 亚洲免费无码在线| 亚洲成人午夜在线| 国产免费AV片在线播放唯爱网| 亚洲中文字幕久久精品无码2021| 久久久久久99av无码免费网站| 国产精品亚洲天堂| 亚洲国产成人片在线观看无码 | 美女羞羞喷液视频免费| 国内精品99亚洲免费高清| 波多野结衣免费一区视频 | 在线亚洲v日韩v| 久久精品国产精品亚洲| 小草在线看片免费人成视久网| 亚洲精品美女在线观看| 日韩成人免费aa在线看| 一个人晚上在线观看的免费视频| 亚洲国产精品无码久久一区二区| 精品无码国产污污污免费网站| 亚洲综合成人婷婷五月网址| 亚洲欧洲中文日韩av乱码| 免费无码中文字幕A级毛片| 亚洲最大的成人网| 亚洲色大成网站WWW久久九九| 6080午夜一级毛片免费看 | 亚洲视频免费在线观看| 久久久久久99av无码免费网站| 色爽黄1000部免费软件下载| 老色鬼久久亚洲AV综合| 免费一级国产生活片|