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