Wie bekomme ich CXF zu verstehen, eine Map<String <Liste<MyBean>>?
Meine restful-Methode gibt eine Map<String,List<MyBean>>
aber ich kann nicht herausfinden, wie man die CXF und JAXB zu serialise diese als XML.
Ich soll es so Aussehen (obwohl ich bin nicht gestört, wie es ist serialisierte so lange, wie es funktioniert auf beiden Seiten);
<response>
<items key="a">
<item>
....
</item>
<item>
....
</item>
</items>
<items key="b">
<item>
....
</item>
</items>
</response>
Wenn ich nur zurückgeben Map
ich bekommen;
[org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor]
Kein message-body-writer wurde gefunden
für die Reaktion der Klasse HashMap.
Wenn ich versuchen und verwenden Sie ein wrapper-Objekt bekomme ich;
[org.apache.cxf.jaxrs.Anbieter.AbstractJAXBProvider]
java.util.List ist ein interface, und
JAXB kann nicht mit Schnittstellen.
Irgendwelche Vorschläge? Ist das nur ein CXF-Problem (ich bin mit version 2.3.2)? Ich bin sicher, ich habe eine ähnliche Sache arbeiten im Trikot.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es gibt nichts wie einige Zeit Weg von dem Bildschirm, um klaren Verstand. Ich dachte mir, diese über Mittag und die Antwort ist nicht mit einem
Map
", sondern einList
vonList
Wrapper.trat der Fehler denn CXF nicht wissen, was sind die Schlüssel und was sind die Objekte.
Sie wird verwenden müssen, die Federführung zu geben Sie die java-Map-XML-bindings.
finden Sie im Abschnitt "Umgang mit Karten" in diesem link: xfire-mapping und Sammlungen.
(ich konnte nicht finden, dass die aegis-Karte/Sammlung-Dokumentation für CXF so, hier ist die Dokumentation von xfire statt. die aegis-Konfiguration sollte ähnlich sein, da xfire, CXF 2.0 ist)
alternativ, stecken Sie nur für Sammlungen und Listen.
Warum nicht versuchen, einige konkrete Umsetzung der Liste? Oder erstellen Sie Ihre eigenen marshaller, die versuchen zu verstehen, welche Art von Liste, die Sie zu tun haben.
http://fusesource.com/docs/esb/4.3.1/cxf_interceptors/CXFInterceptorIntro.html
http://cxf.apache.org/custom-cxf-transport.html
Können Sie die Konfiguration für die msg-Handler/Anbieter wie folgt vor, wenn Sie mit CXF 2.3.2 mit Feder:
Wird der handler finden Sie in der JAXB-Annotationen und generiert die gewünschte Ausgabe.