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



## fenerli23 (21. Januar 2008)

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

```
resp = stub.Transaction(request);
```



```
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)
```


----------



## Thomas Darimont (21. Januar 2008)

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


----------



## fenerli23 (21. Januar 2008)

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...?!


----------



## Thomas Darimont (21. Januar 2008)

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


----------



## fenerli23 (21. Januar 2008)

mmh okay habe den ersten catch so realisert:
	
	
	



```
catch (RuntimeException e) {
			// TODO Auto-generated catch block
			e.getCause();
		}
```
nur wie kann ich denn rest implementieren, denn du aufgeschrieben hast...?


----------



## Thomas Darimont (21. Januar 2008)

Hallo,

schau mal hier:

```
/**
 * 
 */
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


----------



## fenerli23 (21. Januar 2008)

ich habe das mal soeben versucht so zu realisieren doch eine genauere Fehlermeldung kriege ich jetzt nicht ausgegeben...


----------



## fenerli23 (21. Januar 2008)

Ich wollte mal nun als Datentyp "VARCHAR2", "NUMBER" und "DATE" ausgeben lassen doch nun habe ich festgestellt, dass wenn ich diese Methode

```
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?


----------



## procurve (21. Januar 2008)

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:


```
return Klassenname.DATEFORMAT.format(gebDatum);
```


----------



## Thomas Darimont (21. Januar 2008)

Hallo,

das hier nützt nichts... zeig mal den kompletten Stacktrace mit Ausgabe der TargetException der ITE.

Gruß Tom


----------



## fenerli23 (21. Januar 2008)

das klappt nicht habe das soeben ausprobiert...



procurve hat gesagt.:


> 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:
> 
> ...


----------

