# XML Fehler! Warum?



## Grayson12 (3. Dez 2006)

Hallo,

wir versuchen gerade aus einer Java-Klasse eine XML-Kommunikation zu bauen. Nur funktioniert das irgendwie so gar nicht.

Unsere Vorgehensweise ist wie folgt:

Erstmal haben wir uns eine Test-Klasse geschrieben.

```
public class POI {

	private String name;
	private String street;
	private String number;
	private String district;
	private String postcode;
	private String city;
	private String phone;
	private String fax;
	private String category;
	private String subcategory;

	public POI(String name) {
		this.name=name;
		this.street="Elbchaussee";
		this.number="33";
		this.district="Blankenese";
		this.postcode="21356";
		this.city="Hamburg";
		this.phone="040/54789854";
		this.fax="040/6554654654";
		this.category="Unterkunft";
		this.subcategory="Hotel";
	}
	
	public POI lookup(String name){
		POI poi = new POI(name);
		return poi;
	}

}
```

Diese speichern wir unter *[Tomcat-Dir]/webapps/axis/POI.jws* ab.

Dann rufen wir das mit *http://localhost:8080/axis/POI.jws?method=lookup&name=Pacific* auf.

Und kriegen folgenden Fehler: 


```
-<soapenv:Envelope>
  −<soapenv:Body>
     −<soapenv:Fault>
         <faultcode>soapenv:Server.userException</faultcode>
         <faultstring>java.lang.InstantiationException: POI</faultstring>
       −<detail>
             <ns1:hostname>pct</ns1:hostname>
           </detail>
        </soapenv:Fault>
     </soapenv:Body>
  </soapenv:Envelope>
```

Warum ist das so? Modifizieren wir den Code so, dass er nur einen String zurückgibt(z.B. den Namen) und lassen den Konstruktor raus läuft das.

Wir wollen einfach nur ne Kommunikation durchführen die uns als XML Datei die o.g. Werte zurückgibt. Wie wir die dann da rausextrahieren kommt dann später. Hauptsache wir kriegen ne Antwort in der die ganzen Variablen drinstehen.

Wir sitzen hier jetzt schon ewig dabei und versuchen rauszukriegen wie das geht.

Gibt es da eine Lösung für oder geht das überhaupt nicht oder ist die Ausführung totaler Mist.

Vielen Dank für jede Hilfe die ihr uns geben könnt.

Gruß
Grayson


----------



## SlaterB (3. Dez 2006)

InstantiationException heißt meist das was da steht: Objekt kann nicht erzeugt werden,
ein ganz häufiger Fehler ist dafür, dass der Default-Konstruktor fehlt,
hier anscheinend ja auch POI() { .. } nicht da

wie soll dann ein Objekt erstellt werden? bei dem anderen Konstruktor muss ein String angegeben werden,
ist irgendwo konfiguriert was für ein String das sein soll?
ich weiß nicht ob das in deinem/ euren Kontext möglich/ üblich ist,

allgemein fährt man mit POI() und danach setName(name) besser,

---------

ach, das wird ja gar nicht automatisch gemacht sondern in der Operation lookup,
hmm, dann passen meine Tipps vielleicht weniger, 

wie wärs damit, 
mit try/catch die Exception abzufangen und genauer anzuschauen?

auch hier erstmal mit Default-Konstrutor versuchen,
oder diesen zumindest bereitstellen, 
vielleicht wird er ja intern irgendwo benötigt,
z.B. beim Erzeugen des Objektes nach der Übertragung beim Client!

überhaupt erstmal ganz simple mit einer Klasse mit EINEM Attribut anfangen, nicht gleich so viele..


----------



## Guest (4. Dez 2006)

Das haben wir alles schon versucht. Wie gesagt einen einfachen Datentypen wie String,Integer etc. läuft. Aber sobald wir ein Objekt zurückgeben wollen läuft es nicht mehr und wir kriegen den o.g. Fehler. Egal ob das Objekt eine Variable oder mehrere enthält oder ob wir den Default Konstruktor. Immer dasselbe Problem.


----------



## SlaterB (5. Dez 2006)

keine Tutorials die man abarbeiten kann?
ich kann ansonsten leider nix produktives mehr beitragen,

nur meine extreme Verwunderung zur Schau stellen,
darüber, dass eine komplexe mindestens 30-zeilige Testklasse angeben wurde,
obwohl mit

```
public class MyContainer {
}
```
(ZWEI Zeilen!) der gleiche Fehler auftritt und dies anscheinend von dir/ euch bereits getestet wurde..


----------

