Unzulässig, um einen Nachrichtentext in ein Singleton in den öffentlichen org.codehaus.jackson.jaxrs.JacksonJsonProvider einzufügen

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>