2010-04-14 2 views
3

Я хотел бы реализовать транзакцию по запросу в сочетании с ресурсами Джерси. Под этим я просто означает, что я хочу одно место для управления транзакциями, что-то вроде:Сделка за запрос и Джерси

try { 
    chain.doFilter(request, response); 
    commitSession(); 
} finally { 
    rollbackSession(); // no-op if already committed 
    closeSession(); 
}  

В прошлом, я сделал подобные вещи с Servlet Filters, но это не будет работать в Джерси. В Джерси исключение перехватывается и преобразуется в 500 длиннее, чем веб-контейнер. Фильтры восстанавливают контроль. Полагаю, я мог бы придерживаться подхода Filter и проверять коды ответов, но это не очень привлекательно. Я видел coupleconversations об этом, но мне не удалось найти надежный подход с использованием ResourceFilter, CloseableService или ServletContainer и т. Д. Моим ужасным решением было реализовать пользовательский ExceptionMapper и выполнить откат там. Кто-нибудь решил это чисто?

Отказ от ответственности - этот проект в настоящее время не использует Spring, поэтому я бы предпочел избежать его для этого небольшого варианта использования.

ответ

1

Никакой Джерси не любит, а?

http://markmail.org/thread/orcctyu7hczx3d5w

+0

Я прочитал почтовый разговор. Как и в 2010 году, он не охватывает Джерси 2, но я думал, что должен просто спросить здесь, если вы все еще используете ту же логику для сделок с транзакциями? Мне также интересно, что происходит в ContainerResponseFilter, если вызывается исключение (например, если transaction.commit() не работает)? – joscarsson

+0

Извините ... Я не работал в Джерси или этот проект с 2010 года :( –