[ERROR]: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException

fenerli23

Erfahrenes Mitglied
hi,

wenn ich meinen Client ausführe und eine Ausgabe darstellen will, kriege ich hier einen Fehler: Warum kann so ein Fehler hier auftreten..? Kennt jemand das Problem und könnte eventuell helfen...? DANKE
Java:
resp = stub.Transaction(request);


Code:
org.apache.axis2.AxisFault: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
	at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:486)
	at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:343)
	at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:389)
	at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:211)
	at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
	at meinpackage.ServiceStub.Transaction(ServiceStub.java:2072)
	at meinpackage.Client.main(Client.java:30)
 
Hallo,

catch doch mal die RuntimeException, besorg dir mit getCause() die InvocationTargetException und schau dann dort mit getTargetException() nach, was eigentlich passiert ist...

Gruß Tom
 
das komische bei dem ganzen ist, wenn ich Datentypen nur von "VARCHAR2" und "NUMBER" zurückgebe als Antwort an den Client, ist alles okay, d.h. eine Ausgabe wird vollzogen.

Jedoch muss als Datentyp eine Rückgabe von "DATE" sowie "TIMESTAMP" mit hinein implementiert werden und wenn das der Fall ist, wird keine Ausgabe erzeugt sondern diese Fehlermeldung ausgegeben.
Haben diese beiden Datentypen etwas speziell an sich, dass eine Rückgabe mit Problemen nicht so leicht realisierbar ist..?

Tom erstmal danke für die Hilfe, aber wo sollte den die catch hinzugefügt werden im Service...?!
 
Hallo,

das komische bei dem ganzen ist, wenn ich Datentypen nur von "VARCHAR2" und "NUMBER" zurückgebe als Antwort an den Client, ist alles okay, d.h. eine Ausgabe wird vollzogen.
Jedoch muss als Datentyp eine Rückgabe von "DATE" sowie "TIMESTAMP" mit hinein implementiert werden und wenn das der Fall ist, wird keine Ausgabe erzeugt sondern diese Fehlermeldung ausgegeben.
Haben diese beiden Datentypen etwas speziell an sich, dass eine Rückgabe mit Problemen nicht so leicht realisierbar ist..?
Vollkommen ohne Kontext hilft diese Info herzlich wenig...

ich hab nicht gesagt das du das im Service machen sollst... die RuntimeException bzw. InvocationTargetException bekommst du doch auf dem Client (dem Stacktrace nach zu schließen) und da in der dortigen TargetException wohl eine genauere Fehlermeldung steht hilft die ungemein bei der Fehlersuche...

Gruß Tom
 
mmh okay habe den ersten catch so realisert:
Code:
catch (RuntimeException e) {
			// TODO Auto-generated catch block
			e.getCause();
		}
nur wie kann ich denn rest implementieren, denn du aufgeschrieben hast...?
 
Hallo,

schau mal hier:
Java:
/**
 * 
 */
package de.tutorials;

import java.io.IOException;
import java.lang.reflect.InvocationTargetException;

/**
 * @author Thomas.Darimont
 * 
 */
public class ExceptionExtractionExample {
    public static void main(String[] args) {
        try{
            someBusinessOperation();
        }catch(RuntimeException runtimeException){
            Throwable cause = runtimeException.getCause();
            if(cause instanceof InvocationTargetException){
                Throwable targetException = ((InvocationTargetException)cause).getTargetException();
                targetException.printStackTrace();
            }
        }
        
    }

    private static void someBusinessOperation() {
        throw new RuntimeException(new InvocationTargetException(new IOException("Bubu")));
    }
}

Gruß Tom
 
ich habe das mal soeben versucht so zu realisieren doch eine genauere Fehlermeldung kriege ich jetzt nicht ausgegeben...
 
Ich wollte mal nun als Datentyp "VARCHAR2", "NUMBER" und "DATE" ausgeben lassen doch nun habe ich festgestellt, dass wenn ich diese Methode
Java:
    private Date gebDatum = null;
private static final SimpleDateFormat DATEFORMAT = new SimpleDateFormat("dd.MM.yyyy");

	public Date getGebDatum() {
		return gebDatum;
	}
	public void setGebDatum(Date gebDatum) {

		this.gebDatum = gebDatum;
	}
	
// wenn das eingefügt wird kommt die Fehlermeldung
	public String getGebDatumAsString(){ 
	    return DATEFORMAT.format(gebDatum); 
    }


in meine Java Bean Klasse einfüge kommt diese oben beschriebene Fehlermeldung, was ist der Grund dafür...?! Ist die Methode falsch implementiert wurden?
 
Zuletzt bearbeitet:
DATEFORMAT ist eine static Variable innerhalb deiner Klasse.

Entweder machst du sie non-static oder du machst sie public static und setzt beim Aufruf vor DATEFORMAT noch den Klassennamen:

Java:
return Klassenname.DATEFORMAT.format(gebDatum);
 
Zurück