EJB Удаленная обработка исключений - PullRequest
1 голос
/ 07 февраля 2012

У меня есть Remote SLSB, который развернут в OC4J.

Этот сессионный компонент использует TopLink, который в некоторых случаях выдает oracle.toplink.essentials.exceptions.QueryException исключение.

Я обрабатываю это исключение следующим образом:

public void slsbMethod()
{
   try
   {
      // oracle.toplink.essentials.exceptions.QueryException throws here 
   }catch(Exception ex)
   {
      // do nothing
   }
}

И я вызываю этот SLSB от клиента так:

try
{
    fooBarService.slsbMethod()
}catch(Exception ex)
{
    System.out.println("Exception calling the EJB server");
}

Как бы то ни было, я обрабатываю это исключение в EJB, но я все равно получил сообщение Exception calling the EJB server!

Как это происходит ??

1 Ответ

0 голосов
/ 08 февраля 2012

Если исключение исходит из кода транзакции, управляемой контейнером, то я бы предложил использовать транзакции, управляемые бином.При этом вы можете поместить обработку исключений в bean-компонент вокруг вызова UserTransaction.commit.В качестве альтернативы вы можете написать перехватчик для начала транзакции, вызвать InvocationContext.proceed (), а затем зафиксировать транзакцию и обработать исключения, как вам нравится.Это в основном то, что контейнер делает для вас, но вы можете обрабатывать исключение коммитов так, как вам нравится, и вы можете повторно использовать логику в других bean-компонентах / методах.

...