Stack-Trace interpretieren

Unabhängig davon, ob der ORB Teil einer Middlewareanwendung ist oder Sie eine eigenständige Java™ -Anwendung (oder sogar ein Applet) verwenden, müssen Sie den Stack-Trace abrufen, der zum Zeitpunkt des Fehlers generiert wird. Er könnte sich in einer Protokolldatei oder in Ihrem Terminal- oder Browserfenster befinden und aus mehreren Stack-Trace-Blöcken bestehen.

Das folgende Beispiel beschreibt einen Stack-Trace, der von einem Server-ORB generiert wurde, der in WebSphere® Application Serverausgeführt wird:
org.omg.CORBA.MARSHAL: com.ibm.ws.pmi.server.DataDescriptor; IllegalAccessException  minor code: 4942F23E  
completed: No 	
         at com.ibm.rmi.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:199)  
         at com.ibm.rmi.iiop.CDRInputStream.read_value(CDRInputStream.java:1429)  
         at com.ibm.rmi.io.ValueHandlerImpl.read_Array(ValueHandlerImpl.java:625)  
         at com.ibm.rmi.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:273) 	
         at com.ibm.rmi.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:189)  
         at com.ibm.rmi.iiop.CDRInputStream.read_value(CDRInputStream.java:1429) 	
         at com.ibm.ejs.sm.beans._EJSRemoteStatelessPmiService_Tie._invoke(_EJSRemoteStatelessPmiService_
Tie.java:613)  
         at com.ibm.CORBA.iiop.ExtendedServerDelegate.dispatch(ExtendedServerDelegate.java:515)  
         at com.ibm.CORBA.iiop.ORB.process(ORB.java:2377) 	
         at com.ibm.CORBA.iiop.OrbWorker.run(OrbWorker.java:186) 	
         at com.ibm.ejs.oa.pool.ThreadPool$PooledWorker.run(ThreadPool.java:104)  
         at com.ibm.ws.util.CachedThread.run(ThreadPool.java:137)

Im Beispiel hat der ORB eine Java-Ausnahme einer CORBA-Ausnahme zugeordnet. Diese Ausnahmebedingung wird später an den Client als Teil einer Antwortnachricht zurückgesendet. Der Client-ORB liest die Ausnahmebedingung aus der Antwort. Sie ordnet sie einer Java-Ausnahme zu (java.rmi.RemoteException gemäß CORBA-Spezifikation) und löst diese neue Ausnahmebedingung zurück an die Clientanwendung aus.

Entlang dieser Ereigniskette wird die ursprüngliche Ausnahmebedingung oft verdeckt oder sie geht verloren, wie auch der zugehörige Stack-Trace. Bei älteren Versionen des ORB (zum Beispiel 1.2.x, 1.3.0) bestand die einzige Möglichkeit, den Stack-Trace der ursprünglichen Ausnahmebedingung abzurufen, darin, bestimmte Eigenschaften für das ORB-Debugging festzulegen. Neuere Versionen verfügen über integrierte Mechanismen, mit denen alle verschachtelten Stack-Traces aufgezeichnet oder in eine Nachrichtenzeichenfolge kopiert werden. Wenn Sie es mit einer alten Version des ORB zu tun haben (1.3.0 und älter), ist es zu empfehlen, den Fehler auf neueren Versionen zu testen. Entweder ist der Fehler nicht reproduzierbar (bekannter bereits behobener Programmfehler) oder die Debugging-Informationen, die Sie erhalten, sind viel hilfreicher.