Jersey 2 auf Jboss 7
Hat jemand hatte Erfolg bereitstellen Jersey 2.x mit JBoss 7.x? Ich habe versucht, Bereitstellung von Jersey 2.5 mit JBoss 7.1.1, aber Fehler wie:
"java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map;"
Ich glaube dieses Problem ist, weil JBoss kommt gebündelt mit RestEasy ist eine JAX-RS 1.0-Implementierung während der Jersey ist die JAX-RS 2.0 Implementierung. So nahm ich die folgenden Schritte zum deaktivieren des RestEasy:
1) Hinzugefügt, das folgende zu meinem web.xml:
<context-param>
<param-name>resteasy.scan</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan.providers</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan.resources</param-name>
<param-value>false</param-value>
</context-param>
2) Folgte die Diskussion hier, ich veränderte meinen JBoss' standalone.xml, module.xml und domain.xml entfernen Sie alle Verweise auf JAXRS1.1 /RestEasy.
3) Dies führte zu einem weiteren Fehler: "java.lang.NoClassDefFoundError: org/objectweb/asm/ClassVisitor", die ich gelöst, indem Sie das folgende zu meinem pom.xml:
<dependency>
<groupId>asm</groupId>
<artifactId>asm</artifactId>
<version>3.3.1</version>
</dependency>
So endlich ist meine app nutzt, ohne Fehler, aber jetzt kann ich nicht scheinen, um Zugang zu meinem Trikot Ressourcen. Jetty 8 funktioniert gut, jedoch. Ich war auch in der Lage zu laufen, Jersey 1.x, ohne dass Schritte #2 und #3, aber ich würde es vorziehen, zu verwenden, Trikot 2.x wenn möglich.
Zusätzlich habe ich auch versucht die Schaffung eines jboss-deployment-structure.xml Datei, aber dann habe ich noch die Begegnung mit der früheren Fehler, wie "java.lang.NoSuchMethodError: javax.ws.rs.core.- Anwendung.getProperties()Ljava/util/Karte;"
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<exclusions>
<module name="org.jboss.resteasy.resteasy-atom-provider"/>
<module name="org.jboss.resteasy.resteasy-cdi"/>
<module name="org.jboss.resteasy.resteasy-jackson-provider"/>
<module name="org.jboss.resteasy.resteasy-jaxb-provider"/>
<module name="org.jboss.resteasy.resteasy-jaxrs"/>
<module name="org.jboss.resteasy.resteasy-jettison-provider"/>
<module name="org.jboss.resteasy.resteasy-jsapi"/>
<module name="org.jboss.resteasy.resteasy-multipart-provider"/>
<module name="org.jboss.resteasy.resteasy-yaml-provider"/>
<module name="org.apache.log4j"/>
<module name="org.apache.commons.pool"/>
<module name="javax.ws.rs.api"/>
</exclusions>
</deployment>
</jboss-deployment-structure>
Hat jemand hatte kein Glück mit Jboss und Jersey 2.x? Jede Hilfe würde geschätzt werden.
- Dies sollte im Zusammenhang mit J2EE-Bibliotheken, die in Konflikt sind. sicher ist, dass die version von java ist die Verwendung von jersey 2, und die version von j2ee-Bibliotheken zur Verfügung gestellt, die durch Ihre Jboss-version. überprüfen Sie Sie
- Seit javax.ws.rs.core.Anwendung im Modul javax.ws.rs.api, ohne diese in jboss-deployment-structure.xml sollte entfernen Sie die Klasse. Verwenden Sie OHR-oder Kriegszeiten, wo haben Sie die jboss-deployment-structure.xml? Sie können die Protokollierung aktivieren, mit der Kategorie "jboss.- Module" auf eine SPUR oder ein Blick auf die MBean jboss.Module:type=ModuleLoader um mehr Informationen zu erhalten
- Ich bin mit einem KRIEG und habe versucht, hinzufügen jboss-deployment-structure.xml WEB-INF und META-INF und erhalten die gleichen Ergebnisse. Festlegen der Protokollierungsstufe für die Ablaufverfolgung zeigt, dass die jboss-deployment-structure.xml ist ja auch nicht ohne die JAXRS 1.x javax.ws.rs.core.Anwendung, ich bin auf der Suche, warum. Erhan, ich habe auch versucht zu kompilieren KRIEG meine durch Maven mit der Java7-compiler (JBoss verwendet Java7 aber ich kompilieren der KRIEG mit Java6), aber nichts änderte sich.
- Ich fürchte, ich weiß wirklich nicht, warum es nicht funktioniert in deinem Fall. Austausch von hibernate 4 mit 3 oder JSF 2 mit 1.2 hat bei mir ganz gut. Aber dann habe ich immer getauscht, ein Modul mit einem anderen (anderer slot) Vielleicht Java ee.api zieht in die javax.ws.rs.api-Ereignis aus, wenn die ausgeschlossen werden. Ich würde versuchen, vorübergehend zu entfernen und die Abhängigkeit javax.ws.rs.api in Java ee-Modul.api und/oder erstellen Sie ein Modul javax.ws.rs.api mit einem anderen Steckplatz und Ihre Jersey-Implementierung und umfassen im WEB-INF/jboss-deployment-structure.xml. Dann kann ich aber nicht garantieren, dass tritt hilft.
- Scheint, dass Java ee.api zieht javax.ws.rs.api-Modul transitiv. Siehe hier : community.jboss.org/thread/231153
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie Jersey 2 auf JBoss 7 wenn Sie die Konfiguration Ihres jboss-deployment-structure.xml ähnlich wie diese:
Weil JBoss 7 enthält die Abhängigkeiten der Module, es ist nicht ausreichend, um auszuschließen, das resteasy-Modul selbst, sondern müssen Sie ausschließen, dass der ganze Java ee.api-Modul. Auch stellen Sie sicher, dass Sie nicht ausschließen, zu viele Module. Dies kann auch brechen Ihre Anwendung - das Beispiel oben ist ausreichend, um zu deaktivieren resteasy.
Als Sie bereits entdeckt haben, müssen Sie noch die folgenden Zeilen in Ihrer web.xml
Dies ist ähnlich wie diese Frage
So ein bisschen copy/paste nur mit anderen subsystem zu spielen.
Sollten Sie ausschließen jaxrs-Teilsystem aktiviert wird, die für Ihre Bereitstellung
fügen Sie diese in META-INF/jboss-deployment-structure.xml
oder Sie können gehen standalone.xml und entfernen subsystem gibt.
Dies zu tun, müssen Sie entfernen
Teil der Konfiguration, extension-Teil oben bleiben können, es wird nicht weh oder so.
oder Sie können die Verbindung mit dem server mit der CLI und führen
In jedem Fall würde ich empfehlen zu Lesen, etwas über das laden von Klassen, die im AS7 https://docs.jboss.org/author/display/AS72/Class+Laden+in+AS7
Nur ein Hinweis, ausschließen,-Subsysteme, - Funktionalität und-Bereitstellung-strucure:1.2 wurde Hinzugefügt 7.1.2 und als solche wird nicht funktionieren auf 7.1.1.
Können Sie immer noch entfernen jaxrs-subsystem, aber das wirkt sich auf den ganzen server.
Ich hatte fast das gleiche Thema (https://stackoverflow.com/a/38273524/4534078):
"Ausführen zu müssen Jersey 2.23.1 web-app, bereits auf Tomcat7 in JBoss 7.1.1."
Leider nichts hier für mich gearbeitet, aber einige Stücke waren praktisch, das mir den Weg zu einer endgültigen Lösung:
Ausschalten Resteasy-Paket-Scannen in Ihre web.xml:
Entfernen Sie alle tags mit "jaxrs" aus standalone.xml. Sonst wirst du noch zu Gesicht LinkageError, weil JBoss hält die 1.1 spec "auf".
Erstellen yourApp.Krieg!WEB-INF\jboss-deployment-structure.xml genauso wie darauf hingewiesen wird, hier: https://docs.jboss.org/author/display/AS7/Class+Loading+in+AS7#ClassLoadinginAS7-JBossDeploymentStructureFile
Diese Weise nicht nur:
java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map;
Verschwindet, aber auch, JAXB funktioniert einwandfrei (Keine
ClassNotFoundException for javax.xml.bind.JAXBException
nachdem das Moduljavax.xml.bind.api
ist auch aktiviert).Obs1: Die ursprüngliche Frage ist Misch-jersey 1.x mit Trikot 2.x. Es gibt keine PojoMappingFeature in jersey 2.x-und Basis-Paket ist
org.glassfish.jersey
. Werfen Sie einen Blick auf https://jersey.java.net/documentation/latest/migration.html#mig-1-x-jsonObs2: ich habe auch versucht, andere Ansätze wie die Erweiterung ResourceConfig und Scannen von Paketen von dort oder Registrierung von Klassen direkt. Nichts funktionierte wie die richtige Dokumentation in Punkt 3. So hielt mein servlet unberührt:
Ich hoffe, es hilft!
Hier ist die Kombination, die für mich gearbeitet (ein Großteil davon kam von der anderen Antworten in diesem Beitrag - vielen Dank an alle!).
An dieser Stelle die web-app bereitgestellt wurde erfolgreich ohne Fehler, aber ich war immer 404 zuzugreifen versucht mein REST-service.
Folgenden Clemens82 Antwort, Nach Ausschluss der Java ee.api Modul, stieß ich auf dieses problem:
Um es zu beheben, die ich hatte, um die javax.xml.ws.api Abhängigkeit in jboss-deployment-structure.xml. Zusätzlich habe ich noch die javax.- servlet.api wie diese bereitgestellt werden sollten, durch den Behälter bei Verwendung von servlets.