Java Votary

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

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

          數據庫的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>

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

          }
          posted on 2005-12-13 23:49 Dion 閱讀(1391) 評論(0)  編輯  收藏 所屬分類: Springframework
          主站蜘蛛池模板: 翼城县| 长岛县| 临安市| 开原市| 黑水县| 台东县| 大同县| 正宁县| 仲巴县| 德昌县| 德阳市| 祁阳县| 五大连池市| 寿宁县| 呼伦贝尔市| 屯门区| 石泉县| 大丰市| 达日县| 临夏县| 丽水市| 宾阳县| 获嘉县| 康平县| 汕尾市| 合阳县| 临汾市| 丰城市| 邵阳县| 合江县| 萨迦县| 若羌县| 古交市| 东乌珠穆沁旗| 八宿县| 雅江县| 瑞金市| 永嘉县| 门头沟区| 庆城县| 黄石市|