soap service : List<String> als returnd value

zhaming

Grünschnabel
Hi,
mein ws soll eine Liste von Typ String als Rückgabewert an Client zurückliefern.
Mein mini Testprogramm sieht so aus:
Code:
public List<String> sendMessage(String input0,String input1){
 List<String> list=new ArrayList<String>();
 list.add(0,input0);
 list.add(1,input1);
 return list;	
}
Code:
Teil der generierte wsdl Datei, sieht so aus:  
<wsdl:types>
 <schema elementFormDefault="qualified" targetNamespace="http://meinpackage">
<import namespace="http://localhost:8080/AXIS/services/MessagesService"/>
 <element name="sendMessage">
 <complexType>
 <sequence>
<element name="input0" type="xsd:string"/>
<element name="input1" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="sendMessageResponse">
<complexType>
 <sequence>
<element name="sendMessageReturn" type="impl:ArrayOf_xsd_anyType"/>
</sequence>
</complexType>
</element>
</schema>
<schema elementFormDefault="qualified" targetNamespace="http://localhost:8080/AXIS/services/MessagesService">
<complexType name="ArrayOf_xsd_anyType">
<sequence>
<element maxOccurs="unbounded" minOccurs="0" name="item" type="xsd:anyType"/>
</sequence>
</complexType>
</schema>
</wsdl:types>
Frage1: wieso ist der Typ von item anyType? nicht String?
Frage2: laut Definition von wsdl hätte ich erwartet, dass der Response so aussieht:
Code:
<sendMessageReturn>
 <item xsi:type="xsd:string">anyInput</item>
 <item xsi:type="xsd:string">anyInput</item>
</sendMessageReturn>
Aber was ich bekomme habe ist
Code:
<sendMessageReturn>
 <sendMessageReturn xsi:type="xsd:string">anyInput</sendMessageReturn>
 <sendMessageReturn xsi:type="xsd:string">anyInput</sendMessageReturn>
</sendMessageReturn>
Ich suche eine Lösung zu diesem Problem.

Vielen Dank voraus.

Ming
 
Hallo,

wahrscheinlich analysiert dein WSDL Generator die Klassen / Methoden per Reflection und ignoriert generische Typ-Parameter... dein Tool sieht nun List statt List<String> und somit denkt es nun, dass die Liste gewöhnliche Objekte enthält... deshalb anyType.

Gruß Tom
 
Zurück