resteasy-cdi - erste “Doppelte Kontext-Initialisierung parameter resteasy.Injektor.factory" - Fehler
Ich bin benötigen CDI-Funktionen auf einer rest-Anwendung, in der ich bin mit RESTEASY. Also folgte ich der manuelle Anweisung setup resteasy-cdi-Modul auf meiner app, läuft auf JBoss AS7.
Aber wenn ich den server starten, bekomme ich die folgende Fehlermeldung:
13:48:08,631 ERROR [org.apache.catalina.core.StandardContext] (MSC service thread 1-4) Kontext [/MainService] Start fehlgeschlagen aufgrund früherer Fehler: java.lang.IllegalArgumentException: Doppelten Kontext Initialisierungsparameter resteasy.Injektor.Fabrik
Meine web.xml ist die folgende:
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<listener>
<listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
</listener>
<servlet>
<servlet-name>Resteasy</servlet-name>
<servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
</servlet>
<context-param>
<param-name>resteasy.injector.factory</param-name>
<param-value>org.jboss.resteasy.cdi.CdiInjectorFactory</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan</param-name>
<param-value>true</param-value>
</context-param>
<servlet-mapping>
<servlet-name>Resteasy</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
Ich habe versucht, mehrere Kombinationen von Parametern, und versucht es zu konfigurieren, wie in dieser thread auch, aber ohne Erfolg.
Angabe der javax.ws.rs.core.Anwendung auf die web.xml und desabling die resteasy.scan auch nicht das problem lösen.
Meine pom.xml hat folgenden Inhalt:
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-cdi</artifactId>
<version>2.2.1.GA</version>
</dependency>
Ich habe auch versucht, die Tests mit und ohne das Artefakt resteasy-jarxs zusammen und mit der Erklärung der Abhängigkeit wie dieser Artikel.
Bin ich wirklich verloren. Haben Sie irgendwelche Ideen? Ich brauche CDI oder EJB für jetzt verwenden JPA ist der EntityManager mittels Injektion. Ich weiß, dass ich verwenden kann, ohne es, aber ich würde es vorziehen, so kann ich entdecken, JTA-integration und die CDI-Funktionalität auf die Zukunft.
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Traf ich diesen gleichen Fehler, experimentiert mit RestEasy jar-Versionen und Inklusion/Exklusion, und machte keine Fortschritte, es zu lösen. So berichtete ich einen Fehler bei der RestEasy von JBoss issue-tracker ( https://issues.jboss.org/browse/RESTEASY-586 ), dass ich hoffe, eine Antwort bekommen schließlich. Ich bin auch mit JBoss AS 7 und die neueste RestEasy und CDI und Naht.
Meine Anwendung funktionierte gut in Glassfish 3.1.1, aber brach (mit diesem "Doppelten Kontext Initialisierungsparameter resteasy.Injektor.factory" - Fehler), wenn ich es verschoben auf den JBoss AS 7.
Das problem ist, dass AS7-bundles resteasy-cdi, und Sie sind auch zu bündeln. Der AS7-deployment-scanner aufnimmt und verarbeitet die web-Fragmente von beiden Gläser, die erklären resteasy.Injektor.Fabrik geben, die 'duplicate' - Fehler. Sie haben zwei Möglichkeiten, verwenden Sie die mitgelieferte version von resteasy (bevorzugt) oder entfernen Sie die bereitgestellte Modul.
Für die erste option, die Sie einstellen Ihre maven-Abhängigkeit als zur Verfügung gestellt, und fügen Sie eine Abhängigkeit von resteasy in Ihrem manifest. Läuft auf der neuesten version von AS7 (erstellen von https://github.com/jbossas/jboss-as) versuchen Sie, Ihre config zu sehen eher aus wie diese:
Und fügen Sie eine Abhängigkeit von resteasy-cdi in Ihrem manifest, z.B.:
Einen Blick in $JBOSS_HOME/modules/org/jboss/resteasy/... um herauszufinden, welche version von resteasy ist durch Ihre version von AS7.
Alternativ können Sie diese entfernen-Module von jboss und gehen Sie bündeln Ihre eigene Kopie.
Siehe die Beispiele von gebrochenen Krieg und behoben Krieg angebracht RESTEASY-586 für mehr details.
Den rest einfach-cdi-Modul wurde im Bundle mit der J-Chef ALS seit der version 6.0.0 M4.
so dass keine Notwendigkeit zum hinzufügen von CdiInjectorFactory Werk explizit.
Aber wenn Sie tomcat verwenden, oder jegliche andere server, die Sie benötigen, fügen Sie diese oben genannten code-Zeile in web.xml.