JAXB bzw. JAX-WS WSDL-Generierung

  • Themenstarter Themenstarter reNur
  • Beginndatum Beginndatum
R

reNur

Gast
Hallo,

ich will einfach einen kleinen Webservice schreiben, der z.B. die Funktion

public someObject setStrings( String[] s ) anbietet.
Diese Methode wird entsprechend annotiert,
also

Java:
@WebMethod
public someObject setStrings(
@WebParam(name = "lds_id") String[] s
);

und in JBoss AS 6 deployed. Mein Problem:
Die Methoden-Argumente des Typs String[] werden nicht auf eine Liste des Typs String gemappt, sondern als neue klasse StringArray im targetNamespace="http://jaxb.dev.java.net/array".
Das passiert mit allen Arrays, also auch mit double[], int[] usw.

D.h. wenn ich mir mit wsimport die Java-Files auf Clientseite erzeuge, werden auch die "StringArray" Klassen erzeugt (die intern wiederum eine Liste von Strings enthalten).

Das komische: Wenn ich - wie z.B. in der obigen Methode - ein komplexes Object (someObject) habe, das als Attribute Arrays hat, dann werden diese richtig gemappt, d.h. auf Clientseite als Listen von Strings.

Wie oder wo kann ich das default mapping einstellen? Bin sehr verwirrt, so weit ich das in den Dokus von Jaxb gelesen habe, muss man erst ein complex object erstellen, wenn man Arrays mit mehr als 2 Dimensionen verschicken will. Hat jemand einen Tipp?
 
Sorry für die späte Antwort.

Auch mit dem List-Interface werden mir diese "blöden" *Array Klassen erzeugt.

Beispiel:

Java:
@WebMethod
	public void testMethod( @WebParam List<String> stringList )
	{
		LOG.info( "in test method..." );
	}

wsimport generiert mir für diese Methode eigene Klassen, die ich dann benutzen muss. Auf Clientseite kann ich die Methode über den Webservice nur über folgende Signatur aufrufen:

Java:
testMethod( net.java.dev.jaxb.array.StringArray stringArray )
ist dieses Verhalten normal?
 

Neue Themen


Zurück
Oben