Problem
Verwendung von Jackson als JSON-Provider in RESTEasy .
<dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jaxrs</artifactId> <version>2.2.1.GA</version> </dependency> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jackson-provider</artifactId> <version>2.2.1.GA</version> </dependency>
Wenn das automatische Scannen von RESTEasy aktiviert ist.
<context-param> <param-name>resteasy.scan</param-name> <param-value>true</param-value> </context-param>
Beim Start werden folgende Fehler angezeigt und es ist fehlgeschlagen, die RESTEasy-Dienste zu starten.
SEVERE: Exception sending context initialized event to listener instance of class org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap java.lang.RuntimeException: Unable to instantiate MessageBodyReader at org.jboss.resteasy.spi.ResteasyDeployment.registerProvider(ResteasyDeployment.java:505) at org.jboss.resteasy.spi.ResteasyDeployment.registration(ResteasyDeployment.java:305) at org.jboss.resteasy.spi.ResteasyDeployment.start(ResteasyDeployment.java:225) //... Caused by: java.lang.RuntimeException: Illegal to inject a message body into a singleton into public org.codehaus.jackson.jaxrs.JacksonJsonProvider( org.codehaus.jackson.map.ObjectMapper,org.codehaus.jackson.jaxrs.Annotations[]) ... 20 more
Lösung
Es besteht ein Problem bei der Integration von RESTEasy mit Jackson, wenn der Modus Auto Scanning aktiviert ist. Hoffe, es wird später behoben.
Um dies zu beheben, deaktivieren Sie die automatische Scanfunktion und registrieren Sie Ihren RESTEasy-Service manuell in
web.xml
.
<!-- disabled auto scanning <context-param> <param-name>resteasy.scan</param-name> <param-value>true</param-value> </context-param> --> <context-param> <param-name>resteasy.resources</param-name> <param-value>com.mkyong.JacksonRestServiceHere</param-value> </context-param>