Каков правильный шаблон для обработки 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();
}
}
В любое время, когда вы видите сон в коде, есть вероятность, что это неверно. есть ли лучший способ справиться с этим?
другой подход заключался бы в немедленной отправке отказа клиенту, но я бы предпочел не беспокоиться об этом. правильная вещь, кажется, делает все, что требуется, чтобы сделать запрос успешным на сервере, даже если это занимает некоторое время.
спасибо.