Java Votary

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            48 隨筆 :: 1 文章 :: 80 評論 :: 0 Trackbacks

          對spring 了解的不夠精通,這兩天在解決jms異常的過程中發(fā)現(xiàn),spring中提供了jmsTrasactionManager,同樣實現(xiàn)了事務(wù)管理接口。這樣用 自動的攔截器,就可以象數(shù)據(jù)庫一樣自動控制事務(wù)。在同時配置了JMS和數(shù)據(jù)庫事務(wù)的時候,兩者同時有效。這樣系統(tǒng)的消息和數(shù)據(jù)庫事務(wù)就輕量級的一致了!

          數(shù)據(jù)庫的spring配置參見:http://steeven.cnblogs.com/archive/2005/06/14/174410.html
          jms部分如下:

              <bean id="remoteJmsConnectionFactory"
                  class
          ="org.activemq.ActiveMQConnectionFactory">
                  
          <property name="useEmbeddedBroker">
                      
          <value>true</value>
                  
          </property>
                  
          <property name="brokerURL">
                      
          <value>tcp://localhost:61616</value>
                  
          </property>
              
          </bean>

              
          <bean id="jmsTM"
                  class
          ="org.springframework.jms.connection.JmsTransactionManager">
                  
          <property name="connectionFactory">
                      
          <ref bean="remoteJmsConnectionFactory" />
                  
          </property>
              
          </bean>

              
          <bean id="jmsTransactionInterceptor"
                  class
          ="org.springframework.transaction.interceptor.TransactionInterceptor">
                  
          <property name="transactionManager">
                      
          <ref bean="jmsTM" />
                  
          </property>
                  
          <property name="transactionAttributeSource">
                      
          <bean
                          
          class="org.springframework.transaction.annotation.AnnotationTransactionAttributeSource" />
                  
          </property>
              
          </bean>

              
          <bean
                  
          class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
                  
          <property name="transactionInterceptor">
                      
          <ref bean="jmsTransactionInterceptor" />
                  
          </property>
              
          </bean>

              
          <bean id="destResolver"
                  class
          ="test.message.EnumDestinationResolver" />

              
          <!-- for send jms to remote server -->
              
          <bean id="remoteJmsTemplate"
                  class
          ="org.springframework.jms.core.JmsTemplate">
                  
          <property name="connectionFactory">
                      
          <ref bean="remoteJmsConnectionFactory" />
                  
          </property>
                  
          <property name="destinationResolver">
                      
          <ref local="destResolver" />
                  
          </property>
              
          </bean>

          應(yīng)用程序很簡單
          @Transactional
          public class TestServiceImpl implements TestService {
              
          public void someMethod() {
                  getJmsTemplate().send(someMessage);
              }

          }
          posted on 2005-12-13 23:49 Dion 閱讀(1397) 評論(0)  編輯  收藏 所屬分類: Springframework
          主站蜘蛛池模板: 博客| 黄山市| 宕昌县| 平潭县| 全南县| 辽中县| 韶山市| 阜城县| 奉节县| 徐州市| 祁阳县| 峨边| 依兰县| 嘉禾县| 儋州市| 漠河县| 大丰市| 齐河县| 扎鲁特旗| 招远市| 大冶市| 宁远县| 辉县市| 辽中县| 平塘县| 合水县| 河池市| 诸暨市| 加查县| 安庆市| 万全县| 广州市| 黎城县| 牟定县| 平利县| 万载县| 疏勒县| 晋城| 大石桥市| 新郑市| 玉环县|