Set JSON-Anbieter bei RESTEasy auf JBoss 7.1.1
Wie könnte ich JSON-Anbieter für RestEasy bei JBoss 7.1.1?
RestEasy-Dokumentation sagt:
RESTEasy ermöglicht marshall JAXB annotierte POJOs zu und von JSON.
Dieser Anbieter wickelt die Jettison-JSON-Bibliothek, dies zu erreichen.
Aber ich fand, dass es scheint, dass auf JBoss 7.1.1 Resteasy verwendet Jackson-Anbieter, da @XmlTransient auf meine Klasse war das Feld ignoriert, aber @JsonIgnore verarbeitet wurde.
Wie kann ich sagen Resteasy zu verwenden, über Bord werfen, anstatt Jackson?
Auf Jboss fand ich beide Anbieter.
- ich fand neben der in der Dokumentation:
If you have the resteasy-jackson-provider-xxx.jar in your classpath, the Jackson JSON provider will be triggered. This will screw up code that is dependent on the Jettison JAXB/JSon provider. If you had been using the Jettison JAXB/Json providers, you must either remove Jackson from your WEB-INF/lib or classpath, or use the @NoJackson annotation on your JAXB classes.
ich kenn meine Klasse mit @NoJackson Anmerkung, aber nach, dass mein Dienst begann um mich zurückbringen XML-String Antwort anstelle des erwarteten JSON. Also @NoJackson hilft mir nicht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
wenn Sie wollen einfach nur ein anderes Modul gezogen, als der standard, können Sie diese in einen jboss-spezifischen deployment-Deskriptor.
Lesen https://docs.jboss.org/author/display/AS71/Class+Laden+in+AS7 zu lernen, die details und Lesen Sie https://docs.jboss.org/author/display/AS7/Implicit+ - Modul+Abhängigkeiten+für+Bereitstellungen um zu erfahren, welche Module von JBoss wird standardmäßig verwendet.
Austausch der beiden Anbieter, bieten ein
META-INF/jboss-deployment-structure.xml
mit dem folgenden Inhalt weiter unten.Dieser Wechsel der Anbieter für mich.
Br Alexander.
Als ein follow-on zu ahus1's Antwort: wenn Sie ein multi-level-deployment-Archiv (d.h. eine top-level-EAR-Datei, die ein EJB-jar-und war-Datei), die Sie konfigurieren müssen, ist der Ausschluss von
org.jboss.resteasy.resteasy-jackson-provider
auf welche sub-Bereitstellung enthält die RESTEasy/JAX-RS components.In meinem deployment, zum Beispiel, meine REST-Endpunkte wurden die Anmerkungen auf der Oberseite von EJBs in meinem EJB-jar-Datei, während meine
@ApplicationPath
-kommentiertejavax.ws.rs.core.Application
Unterklasse aktiviert, RESTEasy war in meinem Krieg-Datei. Ich fand, dass die Ansätze der Umsetzung der Ausschluss ausschließlich auf die top-level - (OHR) - Implementierung (wie in ahus1 Beispiel) oder auf der EJB-jar-level-Bereitstellung unwirksam waren, aber ich habe endlich RESTEasy zu verwenden, über Bord werfen eher als Jackson, indem Sie die AUSSCHLÜSSE auf allen 3 Ebenen (HALS -, EJB -, Web -):Es ist sehr wahrscheinlich, dass ich brauchte nur die AUSSCHLÜSSE auf die subdeployments, und legt es auf die Haupt-EAR-Bereitstellung ist überflüssig; ich habe nicht versucht, es auf diese Weise, da für jetzt setzen Sie auf alle drei scheint perfekt funktionieren gut.
Von dem, was ich beobachtet jetzt, Jackson ist standardmäßig im JBoss AS 7.1.2.
Ersten, das RestEasy-Module sind versteckte app-classloader, was IMO nicht sein sollte.
So habe ich gerade eingereicht https://issues.jboss.org/browse/AS7-5605 .
Zweiten, zu deiner Frage: Zum einstellen des bestimmten Anbieters zu löschen, müssen Sie es vom classloader, der die Stelle ALS - also noch einmal, gehen
module.xml
's und kommentieren Sie jene Anbieter, die Sie nicht verwenden möchten - ob Jackson ist verfügbar, RestEasy verwendet; andernfalls verwendet es über Bord werfen.Außerdem fügen Sie Ihrem Projekt als compile-time-Abhängigkeit, so können Sie Ihre spezifischen Anmerkungen. Beispiel:
Hinweis: Bis AS7-5605 erledigt ist, müssen Sie die Versionen manuell.
Nach dem (in späteren Versionen SO), müssen Sie diese Versionen und jene definiert, die in der JBoss-Stückliste. Sehen JBoss AS QuckStarts zum Beispiel.
Fühlen Sie sich frei, um erstellen und dazu beitragen, einen QuickStart von RestEasy mit alternative Anbieter.
Fügte ich diese Zeile zu eigenständigen.conf.bat/sh und es löste mein problem.
set "JAVA_OPTS=%JAVA_OPTS% -Dcom.Sonne.jersey.server.impl.cdi.lookupExtensionInBeanManager=true"