Я хотел бы реализовать транзакцию по запросу в сочетании с ресурсами Джерси. Под этим я подразумеваю, что мне нужно одно место для управления транзакциями, что-то вроде:
try {
chain.doFilter(request, response);
commitSession();
} finally {
rollbackSession(); // no-op if already committed
closeSession();
}
В прошлом я делал подобные вещи с сервлет-фильтрами, но в Джерси это не сработает. В Джерси исключение перехватывается и преобразуется в 500 задолго до того, как фильтры веб-контейнера восстановят контроль. Полагаю, я мог бы придерживаться подхода «Фильтр» и проверять коды ответов, но это не очень привлекательно. Я видел пару разговоров об этом, но я не смог придумать надежный подход с использованием ResourceFilter, CloseableService или ServletContainer и т. Д. Мое ужасное решение до сих пор должен был реализовать пользовательский ExceptionMapper и выполнить откат там. Кто-нибудь решил это чисто?
Отказ от ответственности - этот проект в настоящее время не использует Spring, поэтому я бы предпочел избежать его для этого небольшого варианта использования.