Wie kann ich den JSON-Provider für RestEasy unter JBoss 7.1.1 einstellen?
RestEasy-Dokumentation sagt:
Mit RESTEasy können Sie mit JAXB kommentierte POJOs zu und von JSON marshallen. Dieser Provider schließt die Jettison JSON-Bibliothek ein, um dies zu erreichen.
Aber ich habe festgestellt, dass es scheint, dass auf JBoss 7.1.1 Resteasy Jackson Provider verwendet, weil @ XmlTransient auf meinem Klassenfeld wurde ignoriert, aber @JsonIgnore wurde verarbeitet.
Wie kann ich Resteasy sagen, Jettison anstelle von Jackson zu benutzen?
Auf Jboss habe ich beide Anbieter gefunden.
Wenn Sie nur ein anderes Modul als den Standard abrufen möchten, können Sie dies in einem jboss-spezifischen Deployment-Deskriptor angeben.
Lesen Sie Ссылка , um die Details zu erfahren, und lesen Sie Ссылка , um zu erfahren, welche Module JBoss standardmäßig verwendet.
Um die beiden Anbieter auszutauschen, geben Sie einen META-INF/jboss-deployment-structure.xml
mit dem folgenden Inhalt ein.
Dies hat den Anbieter für mich gewechselt.
Br Alexander.
%Vor% Als Antwort auf die Antwort von ahus1 : Wenn Sie über ein mehrstufiges Deployment-Archiv verfügen (dh eine EAR-Datei auf oberster Ebene, die ein EJB-Jar und eine WAR-Datei enthält), werden Sie dies tun Sie müssen den Ausschluss von org.jboss.resteasy.resteasy-jackson-provider
für jede Sub-Implementierung konfigurieren, die die RESTEasy / JAX-RS-Komponenten enthält.
In meiner Implementierung wurden beispielsweise meine REST-Endpunkte in der EJB-JAR-Datei über EJBs annotiert, während meine @ApplicationPath
-annotated javax.ws.rs.core.Application
-Unterklasse, die RESTEasy aktiviert, in meiner WAR-Datei enthalten war. Ich fand, dass die Ansätze, die Ausschlüsse nur auf die Top-Level (EAR) Deployment (wie im Beispiel) oder auf die EJB-Jar-Level-Bereitstellung zu setzen, wirkungslos waren, aber ich habe RESTEasy endlich Jettison anstelle von Jackson eingesetzt die Ausschlüsse auf allen 3 Ebenen (EAR, EJB, Web):
Es ist sehr wahrscheinlich, dass ich nur die Ausschlüsse für die Sub-Deployments benötigt habe und es überflüssig macht, sie auf die EAR-Hauptbereitstellung zu setzen. Ich habe es nicht auf diese Weise versucht, da es jetzt ganz gut funktioniert, wenn man es auf alle drei aufträgt.
Nach dem, was ich gerade beobachtet habe, ist Jackson der Standard in JBoss AS 7.1.2.
Zuerst sind die RestEasy-Module aus dem Classloader der App versteckt, was IMO nicht sein sollte. Also habe ich gerade Ссылка eingereicht.
Zweiter , zu Ihrer Frage: Um den bestimmten Anbieter festzulegen, müssen Sie ihn aus dem Bereich des Classloaders in AS entfernen - also noch einmal, um module.xml
's zu gehen und die Anbieter, die Sie angeben, zu kommentieren möchte nicht verwenden - wenn Jackson verfügbar ist, verwendet RestEasy es; Andernfalls wird Jettison verwendet.
Fügen Sie auch Ihr Projekt als eine Kompilierzeitabhängigkeit hinzu, damit Sie ihre spezifischen Anmerkungen verwenden können. Beispiel:
%Vor%Hinweis: Bis AS7-5605 fertig ist, müssen Sie die Versionen manuell einstellen. Nach (in späteren Versionen von AS) müssen Sie diese Versionen entfernen und die in JBoss BOM definierten Versionen verwenden. Sehen Sie sich zum Beispiel JBoss ASQuckStarts an.
Fühlen Sie sich frei, einen QuickStart von RestEasy mit einem alternativen Anbieter zu erstellen und beizutragen.