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