簡體   English   中英

Spring Bea Weblogic 10.3 上的嵌套事務支持

[英]Spring Nested Transaction support on Bea Weblogic 10.3

我有一個問題問你。 我有一個有 2 種方法的組件。 第一種方法需要附加到從存在於鏈中的另一個組件開始的外部事務(我使用 Spring 集成),而第二種方法必須附加(對於我的應用程序設計)到另一個事務。 我想要的行為是,當第二個方法拋出異常時,第一個方法啟動並重新附加到外部事務以完成他的工作。 我嘗試使用 Spring 框架的“嵌套”傳播來做到這一點,但沒有成功。

這是一個例子:

public ComponentClassInterface{
         @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor=Exception.class) /*but i have used NESTED without success and I don't want use the same transaction */
         public ObjectMessage activate(ObjectMessage message);

}

public ComponentAbstractClass implements ComponentClassInterface{

       public void updateObjectMessage(ObjectMessage message){
              /*To obtain an attached instance of previously persisted message*/
              ObjectMessage message = daoMessage.getMessageByID(message.getID);/*Here i can't retreive the message...the transaction isn't yet attached*/
              message.setSomeProperty("ChangedPropertyValue");
              daoMessage.updateItem(message);
              }
       @Override
       public abstract ObjectMessage activate(ObjectMessage message);

}

public ComponentConcreteClass extends ComponentAbstractClass{
       @Override
       public ObjectMessage activate(ObjectMessage message){
              ............ doSomeStuff ............
       }

}

目標是找到一個解決方案,允許我不重寫/重新考慮應用程序流程並維護類。

問候

達米亞諾

通過 AOP 和代理支持 Spring 中的事務。 這意味着如果 class 實例的方法調用同一實例的另一個方法,它不會通過 Spring 代理調用該方法,並且 Spring 無法攔截調用並啟動新事務。 您需要將具有REQUIRES_NEW傳播的方法放在另一個 Spring 組件中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM