2016-06-16 6 views
0

Die Architektur meiner Anwendung ist wie folgt:Fangen Ausnahme von DAO in der ersten Klasse Rufmethode,

Haupt classe -> ServiceBean -> Manager -> DAO.

ich eine Ausnahme in meinem DAO bin werfen:

catch (HibernateException he) { 
     throw new RemuRuntimeLoggableException(he, RuntimeLoggableException.HIBERNATE_UNKNOWN); 
    } 

Dann in Managern fange ich die, wie unten Ausnahme:

catch (RuntimeLoggableException e) { 
          log.info(e.getMessage()); 
          e.printStackTrace(); 
          throw new RuntimeLoggableException(e, RuntimeLoggableException.HIBERNATE_UNKNOWN); 

Und in meinem ServiceBean, ich habe diese:

catch (RuntimeLoggableException e) { 
     log.info(e.getMessage()); 
     e.printStackTrace(); 
     throw new RemoteException(); 

In meiner Hauptklasse habe ich die Ausnahme wie gefangen dies:

catch (RemoteException e) { 
     log.info(prefixeLog + " Error"); 
     log.info(e.getMessage()); 

Ich habe auch eine Schnittstelle Service.java. ServiceBean implementiert diese Schnittstelle und das Verfahren hier betroffen ist, wie unten in der Schnittstelle, Service.java erklärt:

public void calculate(boolean flag) 
    throws java.rmi.RemoteException; 

Das Problem, das ich bekommen habe ist, dass die Ausnahme Remote vom ServiceBean, nicht in der Hauptklasse gefangen wird. Und ich kann die Schnittstelle Service.java nicht ändern, da sie automatisch von XDoclet generiert wird. Irgendeine Idee, wie man das bitte macht?

public void calculate(boolean flag) 
    throws java.rmi.RemoteException; 

Und in meiner Klasse ist es, wie unten erklärt:

In meinem Service.java wird das Verfahren wie folgt erklärt

public static void main(String[] args) throws RuntimeLoggableException { 
try { 
     log.info("Start" + prefixeLog); 
     serviceBean.calculate(true); 
     log.info("End" + prefixeLog); 
    } catch (RemoteException e) { 
     log.info(prefixeLog + " Error"); 
     log.info(e.getMessage()); 
    } 
    finally { 
     InitFramework.stopFramework(FrameworkFacade.BATCH); 
     System.exit(retour); 
    } 
} 

Und in meinem serviceBean:

public void calculate(boolean flagExclurePlansPerimes) throws RemoteException { 
+0

Ist es möglich, dass "RemoteException" mehrere Implementierungen in mehreren Bibliotheken hat? versuchen Sie im Wesentlichen zu haben: 'catch (java.rmi.RemoteException ex) {...}' –

+0

@AvihooMamka: Ihre Lösung funktioniert auch nicht. Die Hauptklasse und die anderen Klassen befinden sich in verschiedenen Projekten. Ich habe einige weitere Erklärungen in meiner Frage hinzugefügt. Kannst du es bitte überprüfen? – tabby

+0

Wenn dies immer noch ein Problem ist, können Sie bitte die Protokollmeldungen hinzufügen, die Sie erhalten? –

Antwort

0

Sie protokollieren die Nachricht der RemoteException, aber Sie sind eine RemoteException geworfen das ist ohne Nachricht aufgebaut.

+0

Ich habe meinen Code so geändert, dass eine RemoteException mit einer Nachricht ausgelöst wird. Dies funktioniert jedoch nicht. Die Hauptklasse und die anderen Klassen sind in zwei verschiedenen Projekten. – tabby