Как предотвратить откат вложенного сервисного вызова в Java EE, когда внешняя транзакция (конечная точка) возвращает ошиJAVA

Программисты JAVA общаются здесь
Anonymous
Как предотвратить откат вложенного сервисного вызова в Java EE, когда внешняя транзакция (конечная точка) возвращает оши

Сообщение Anonymous »

В нашем приложении Java EE у нас есть настройка, где Service A является конечной точкой. В некоторых действительных бизнес -случаях эта конечная точка бросает исключение и возвращает код ошибки клиенту - это ожидаемое поведение и не может быть изменено. Служба B выполняет обновление (данные о работе с активностью), которое мы хотим сохранить , даже когда обслуживание A -ожидаемой ошибки. Class = "Lang-Java PrettyPrint-Override">

Код: Выделить всё

// Service A (has maven dep on ServiceB)
@POST
@Path("/{id}/book")
public Response bookXXXX(..) {
try {
serviceB.doSmth(); // should persist even if error follows
...
} catch (SpecificServiceBException e) {
throw Response.error(Status.CONFLICT, someInfo); // expected and cannot be changed
}
}
< /code>
// Service B
@ApplicationScoped
public class ServiceB {

@Inject
private IRepository repository;

public void deleteActivity(Long key) {
ActivityEntity activity = find...;

activity.updateLastDate(null);

repository.update(activity);
}
}
мы пробовали использовать @transactional (tress_new) , но это приводит к тупикам в базе данных (Oracle). Поскольку база данных теперь имеет две одновременные транзакции и ожидает первого («Внешний») для совершения и наоборот. При обслуживании бросает исключение (как часть нормального потока)?
ps: мы используем Java EE, но не пружина.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... ransaction

Вернуться в «JAVA»