"serializer not found" - Axis-Fehler

BugsBastard

Erfahrenes Mitglied
Hallo zusammen,

ich habe ne Frage (wer hätte das gedacht) zu einem Webserviceaufruf:

Ich soll einen Webservice mit 2 Argumenten aufrufen, einem "userBean" mit verschiedenen Angaben zu einem Benutzer und einen "Passwort"-String der das Passwort übermittelt. Den Bean habe ich ganz normal erstellt, definiere die Variablen und habe einen get-Methode wie eine set-Methode für jeden Wert.

Jetzt bekomme ich immer eine Fehlermeldung:
java.io.IOException: No serializer found for class packagename.userBean in registry org.apache.axis.encoding.TypeMappingImpl@110b640. Woran kann das liegen? Arbeite zum ersten Mal mit Beans, daher hab ich keine Ahnung was die Fehlermeldung bedeuten soll :-(.

Danke im voraus,

Thomas
 
serializer not found

Hi,

danke für die schnelle (superschnelle) Antwort. Ich habe nun einen serializer eingebaut, aber es klappt immer noch nicht. Vielleicht habe ich auch was mit den Beans durcheinander bekommen da ich nicht genau verstehe was die tun sollen. Für mich sind das einfach nur Klassen die Objekte darstellen :-(

Was macht dieses serializable eigentlich?

Hier mal meine Klasse, fehlen noch ein paar Einträge (ist nicht nur einer, wollte ich aber nicht alle hier eintippen ;-))

package webserviceDefinition;

import java.io.Serializable;

public class userBean implements Serializable{
private String firstName;

public userBean(){
}

public userBean (String firstName){
  this.firstName = firstName;
}

public void setfirstName(String firstName){
  this.firstName = firstName;
}

public String getfirstName(){
  return firstName;
}
}

Vielleicht kann ja jemand den Fehler daraus ersinnen,

Gruss,

Thomas
 
java.io.IOException: No serializer found for class packagename.userBean in registry org.apache.axis.encoding.TypeMappingImpl@110b640. Woran

Da steht packagename.userBean

in deinem Quellcode:

package webserviceDefinition;

hast du du das packagename.userBean da hingeschrieben?
Wenn nein, dann solltest du deine xml Konfigurationsdateien nochmal durchgehen ;)
 
Hallo,

um dem Fehler auf die Spur zu kommen sollte man sich vor Augen halten was denn beim Aufruf eines WebServices mit den Daten in dem Bean passiert: sie müssen in einen SOAP-konformen XML-String umgewandelt, sprich serialisiert werden.

Das das Bean von sich aus nicht weiss wie das passiert, muss man in Axis für diesen Vorgang De-/Serializerklassen schreiben in denen die Umwandlungsregeln von/in einen XML-String ausprogrammiert werden.

Gottseidank gibt es für Standardfälle (wie eben JavaBeans) schon vordefinierte Klassen für De-/Serialisierung. Allerdings muss im ClientCode auch noch angegeben werden welcher De-/Serialisierer zu verwenden ist. und Das funktioniert so:

Service service = new Service();
Call call = (Call) service.createCall();

QName qnAntrag = new QName( "urn:BeanService", "[Name Deiner Bean]" );


call.registerTypeMapping([Name Deiner Bean].class, qnAntrag,
new org.apache.axis.encoding.ser.BeanSerializerFactory([Name Deiner Bean].class, qnAntrag),
new org.apache.axis.encoding.ser.BeanDeserializerFactory([Name Deiner Bean], qnAntrag));


Damit wird für Deine Bean im Client ein De-/Serializer registriert und Axis weiss wie es die Daten in einen XML-String umwandeln kann.

Ich hoffe damit ist Dein Problem behoben.
 

Neue Beiträge

Zurück