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 閱讀(1397) 評論(0)  編輯  收藏 所屬分類: Springframework
          主站蜘蛛池模板: 龙海市| 临高县| 调兵山市| 铅山县| 女性| 宜春市| 黄大仙区| 阆中市| 察雅县| 吉木萨尔县| 东辽县| 长宁区| 平顺县| 德清县| 遂溪县| 临武县| 阳新县| 安徽省| 襄汾县| 当雄县| 华蓥市| 临朐县| 安新县| 健康| 蓝山县| 萝北县| 长顺县| 金湖县| 皋兰县| 汉寿县| 高台县| 梅河口市| 武安市| 新泰市| 石嘴山市| 鄂托克前旗| 夏邑县| 郴州市| 沙洋县| 高雄县| 关岭|