2014-11-28 2 views
4

Я написал следующий код для обработки исключений EJB.Как исключения обрабатываются в EJB?

1) Module.java

`@WebService(serviceName = "Module") 
@Stateless() 
public class Module { 
    /** 
    * This is a sample web service operation 
    */ 
    @WebMethod(operationName = "hello") 
    public int hello(@WebParam(name = "name") String txt) throws Exception { 
     int re=0; 
     try{ 
      re=(6/0);  
     }catch(Exception e){ 
      throw (EJBException) new EJBException(se).initCause(e); 
     } 
     return re;; 
     } 
    } 
}` 

2) Client.jsp

`<% 
try{ 
    selec.Module_Service service = new selec.Module_Service(); 
    selec.Module port = service.getModulePort(); 
    java.lang.String name = ""; 
    int result = port.hello(name); 
    out.println("Result = "+result); 
}catch(EJBException e){ 
    Exception ee=(Exception)e.getCause(); 
    if(ee.getClass().getName().equals("Exception")){ 
     System.out.println("Database error: "+ e.getMessage()); 
    } 
} 
%>` 

Внутри поймать объект блок Exception эи получить меня нулевой. Что такое проблема, что она дает мне нулевое значение

ответ

2

Вы не используете рекомендуемый метод для извлечения исключений для основной причины из EJB. EJBException#getCausedBy() - рекомендуемый метод получения корневого исключения в EJB.

В соответствии с API, однако, это даже лучше, если вы получите причину от Throwable#getCause. Так что вы должны иметь это

Exception ee= ((Throwable)e).getCause(); 
+0

бросок к Throwable является излишним –

+0

я тоже так думаю, но по какой-то причине, док считает предпочтительным каким-то образом. Я добавил эту опцию только для полноты @SteveC – kolossus

Смежные вопросы