Проблема
Использование Jackson в качестве JSON-провайдера в 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>
С RESTEasy автоматическое сканирование включено.
<context-param> <param-name>resteasy.scan</param-name> <param-value>true</param-value> </context-param>
При запуске он обнаруживает следующие ошибки и не может запустить ни одну из служб RESTEasy.
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
Решение
Существует проблема интеграции RESTEasy с Джексоном, если включен режим « auto scan ». Надеюсь, это будет исправлено позже.
Чтобы исправить это, отключили функцию автоматического сканирования и зарегистрируйте службу RESTEasy вручную в
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>
ссылка://тег/джексон/[джексон]ссылка://тег/рестайз/[рестайз]