Каков правильный шаблон для обработки OLE в (REST) веб-сервисе? это то, что я делаю сейчас, например,
protected void doDelete(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
...
...
...
try {
try {
em.getTransaction().begin();
// ... remove the entity
em.getTransaction().commit();
} catch (RollbackException e) {
if (e.getCause() instanceof OptimisticLockException) {
try {
CLog.e("optimistic lock exception, waiting to retry ...");
Thread.sleep(1000);
} catch (InterruptedException ex) {
}
doDelete(request, response);
return;
}
}
// ... write response
} catch (NoResultException e) {
response.sendError(HttpServletResponse.SC_NOT_FOUND, e.getMessage());
return;
} finally {
em.close();
}
}
всякий раз, когда вы видите сон в коде, есть большая вероятность, что это неправильно. Есть ли лучший способ справиться с этим?
другой подход состоит в том, чтобы немедленно отправить ошибку клиенту, но я бы не хотел, чтобы они беспокоились об этом. правильная вещь, кажется, делает все, что требуется для успешного выполнения запроса на сервере, даже если это занимает некоторое время.
спасибо.