У меня есть к вам вопрос.У меня есть компонент, который имеет 2 метода.Первый метод должен быть присоединен к внешней транзакции, запущенной из другого компонента, присутствующего в цепочке (я использую Spring Integration), а второй должен быть присоединен (для моего приложения) к другой транзакции.Мне нужно поведение, когда второй метод генерирует исключение, первый метод запускается и сам присоединяется к внешней транзакции, чтобы выполнить свою работу.Я пытаюсь использовать распространение «NESTED» Spring Framework для этого, но безуспешно.
Это пример:
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 ............
}
}
Цель состоит в том, чтобы найти решение, которое позволило бы мне не переписывать и не переосмысливать поток приложения и поддерживать классы, как описано.
С уважением,
Дамиано