У меня есть Http-сервер в Джерси, и я хочу оптимизировать свой код.Одна из проблем, с которыми я сталкиваюсь, заключается в том, что у меня практически одинаковая ручная обработка транзакций в каждом методе.Вот как выглядит типичный метод:
@POST
@Path("/create")
public Response create(String taskJson) {
Connection connection = null;
try (MySqlConnection mySqlConnection = new MySqlConnection()) {
connection = mySqlConnection.getDbConnection();
connection.setAutoCommit(false);
// Add some data to the database with SQL-Statements...
connection.commit();
return result;
} catch (Exception e) {
connection.rollback();
Logger.getInstance().logError(LOG_TAG, "Unexpected Error", e);
return error;
}
}
Таким образом, обработка транзакций базы данных очень раздражает и ее дублированный код в каждом методе.Я хочу, чтобы мои методы выглядели так:
@POST
@Path("/create")
public Response create(String taskJson, @AddedPerJerseyMagicToMyMethod Connection connection) {
// Add some data to the database with SQL-Statements...
return result;
}
Поэтому я хочу, чтобы фильтр добавил параметр Connection для каждого метода и чтобы этот фильтр автоматически обрабатывал транзакции (например, принятие, откат при исключении и т. Д.)..)
Я уже сейчас знаю, как добавить фильтры на мой Http-сервер в Джерси, а также знаю, кто должен обрабатывать необработанные исключения.Но я понятия не имею, как я могу добавить пользовательские параметры для каждого метода и получить доступ к этим параметрам в обработчике исключений.