Service kennt Datentypen nicht mehr beim Empfangen von Nachrichten

Status
Nicht offen für weitere Antworten.

pocketom

Bekanntes Mitglied
Kleines Problem, mein Service spuckt beim Empfangen einer Nachricht erstmal ein Warning aus: WARNUNG: xsi:type absent, and no type available for .... Greift man dann per Getter auf den Wert zu, so ist dieser immer NULL.

Code:
ID: 1
Address: /service/MyService
Encoding: UTF-8
Content-Type: text/xml; charset=UTF-8
Headers: {cache-control=[no-cache], content-type=[text/xml; charset=UTF-8], connection=[keep-alive],
host=[x.x.x.x:8080], content-length=[286], SOAPAction=["urn:sendRequest"], user-agent=[Apache CXF 2.2.2],
Content-Type=[text/xml; charset=UTF-8], Accept=[*/*], pragma=[no-cache]}
Payload: 
   
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns2:TestElement xmlns:ns2="http://mycompany.com/service/MyService ">
         <objectID>XYZ123</objectID>
         <objectType>XYZ</ objectType >
      </ns2: TestElement >
   </soap:Body>
</soap:Envelope>
--------------------------------------
23.07.2009 14:11:32 org.apache.cxf.aegis.type.TypeUtil getReadType
WARNUNG: xsi:type absent, and no type available for objectID
23.07.2009 14:11:32 org.apache.cxf.aegis.type.TypeUtil getReadType
WARNUNG: xsi:type absent, and no type available for objectType

Woher rührt das? Der Standalone Service (generated by WSDL2JAVA) hat das Problem nicht. Nehme also an das mit meiner web.xml oder appContext.xml zusammenhängt (kann ich bei Bedarf posten die unterscheiden sich jedoch nur wenig von denen aus dem Wheeler Tutorial nach dem ich vorgegangen bin -> Web Services with Spring 2.5 and Apache CXF 2.0 - Wheeler Software)


Anmerkung: die Klasse TestElement ist von einer abstrakten Klasse AbstractElement (aus einem anderen Namespace) abgeleitet. Das in der Nachricht verpackte Objekt testelement vom Typ TestElement ist jedoch nicht NULL, nur seine Attribute objectID, objectType (Member der abstrakten Basisklasse) sind NULL. Ich vermute also das es evtl. irgendwas damit zu tun hat das der Namespace der abstrakten Basisklasse (z.B. ns3="http://mycompany.com/service/AbstractClasses") nicht in der Nachricht mit enthalten ist???


[EDIT] sorry, das liegt hier in dem Subforum wohl falsch. Bitte nach Allgemein oder SOA verschieben... THX!
 
Zuletzt bearbeitet:

pocketom

Bekanntes Mitglied
[EDIT]

Problem gelöst.

Es lage am Aegis Databinding. Ich arbeite nach dem "Contract-First" Prinzip, d.h. meine Klassen wurden aus einem WSDL File mit CXF's WSDL2Java erstellt (JAXB!). Im Spring Application Context hatte ich jedoch ein Aegis Databinding (aus Tutorial übernommen). Da JAXB das Default Binding ist, habe ich das Aegis Binding einfach aus der appContext.xml gelöscht. Schon klappts. :)
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben