[英]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.