FasterXML / FasterXML/jackson-jakarta-rs-providers
`JacksonXmlBindJsonProvider` is loaded by default, causing exception on deployment
- Dominant language
- Java
- Stars
- 20
- Forks
- 16
- Avg merge
- 10h 4m
- Merged PRs (30d)
- 1
Description
Using:
WildFly 40
JakartaEE 11
Jackson 3.2.0
`jboss-deployment-structure.xml` disables Jackson 2:
```xml
```
The `jackson-jakarta-rs-providers` causes an exception on deployment:
```
ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 87) MSC000001: Failed to start service jboss.deployment.unit."server.wa
r".undertow-deployment: org.jboss.msc.service.StartException in service jboss.deployment.unit."server.war".undertow-deployment: java.lang.RuntimeExce
ption: RESTEASY003940: Unable to instantiate MessageBodyReader
at org.wildfly.extension.undertow@40.0.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService
.java:73)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:545)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:330)
at org.jboss.threads@3.9.2//org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
at org.jboss.threads@3.9.2//org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2651)
at org.jboss.threads@3.9.2//org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2630)
at org.jboss.threads@3.9.2//org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1622)
at org.jboss.threads@3.9.2//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1589)
at java.base/java.lang.Thread.run(Thread.java:1516)
at org.jboss.threads@3.9.2//org.jboss.threads.JBossThread.run(JBossThread.java:501)
Caused by: java.lang.RuntimeException: RESTEASY003940: Unable to instantiate MessageBodyReader
at org.jboss.resteasy.resteasy-core@7.0.2.Final//org.jboss.resteasy.core.providerfactory.CommonProviders.processProviderContracts(CommonProviders.j
ava:87)
at org.jboss.resteasy.resteasy-core@7.0.2.Final//org.jboss.resteasy.core.providerfactory.ClientHelper.processProviderContracts(ClientHelper.java:10
2)
at org.jboss.resteasy.resteasy-core@7.0.2.Final//org.jboss.resteasy.core.providerfactory.ResteasyProviderFactoryImpl.processProviderContracts(Reste
asyProviderFactoryImpl.java:813)
at org.jboss.resteasy.resteasy-core@7.0.2.Final//org.jboss.resteasy.core.providerfactory.ResteasyProviderFactoryImpl.registerProvider(ResteasyProvi
derFactoryImpl.java:802)
at org.jboss.resteasy.resteasy-core@7.0.2.Final//org.jboss.resteasy.core.providerfactory.ResteasyProviderFactoryImpl.registerProvider(ResteasyProvi
derFactoryImpl.java:791)
at org.jboss.resteasy.resteasy-core@7.0.2.Final//org.jboss.resteasy.core.providerfactory.ResteasyProviderFactoryImpl.registerProvider(ResteasyProvi
derFactoryImpl.java:725)
at org.jboss.resteasy.resteasy-core@7.0.2.Final//org.jboss.resteasy.core.ResteasyDeploymentImpl.registerProvider(ResteasyDeploymentImpl.java:714)
at org.jboss.resteasy.resteasy-core@7.0.2.Final//org.jboss.resteasy.core.ResteasyDeploymentImpl.registration(ResteasyDeploymentImpl.java:437)
at org.jboss.resteasy.resteasy-core@7.0.2.Final//org.jboss.resteasy.core.ResteasyDeploymentImpl.startInternal(ResteasyDeploymentImpl.java:169)
at org.jboss.resteasy.resteasy-core@7.0.2.Final//org.jboss.resteasy.core.ResteasyDeploymentImpl.start(ResteasyDeploymentImpl.java:131)
at org.jboss.resteasy.resteasy-core@7.0.2.Final//org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.init(ServletContainerDispatch
er.java:134)
at org.jboss.resteasy.resteasy-core@7.0.2.Final//org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.init(HttpServletDispatcher.java:39
)
at io.undertow.servlet@2.0.0.Final//io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:117)
at org.wildfly.security.elytron-web.undertow-server-servlet@4.2.1.Final//org.wildfly.elytron.web.undertow.server.servlet.RunAsLifecycleInterceptor.
doIt(RunAsLifecycleInterceptor.java:70)
at org.wildfly.security.elytron-web.undertow-server-servlet@4.2.1.Final//org.wildfly.elytron.web.undertow.server.servlet.RunAsLifecycleInterceptor.
init(RunAsLifecycleInterceptor.java:76)
at io.undertow.servlet@2.0.0.Final//io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:103)
at io.undertow.servlet@2.0.0.Final//io.undertow.servlet.core.ManagedServlet$DefaultInstanceStrategy.start(ManagedServlet.java:314)
at io.undertow.servlet@2.0.0.Final//io.undertow.servlet.core.ManagedServlet.createServlet(ManagedServlet.java:140)
at io.undertow.servlet@2.0.0.Final//io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:590)
at io.undertow.servlet@2.0.0.Final//io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:560)
at io.undertow.servlet@2.0.0.Final//io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.j
ava:42)
at io.undertow.servlet@2.0.0.Final//io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
at org.wildfly.extension.undertow@40.0.0.Final//org.wildfly.extension.undertow.deployment.ControlPointDeploymentInfoConfigurator$1.call(ControlPoin
tDeploymentInfoConfigurator.java:100)
at org.wildfly.extension.undertow@40.0.0.Final//org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler$2$1.call(JACCContextIdHandler.jav
a:103)
at org.wildfly.extension.undertow@40.0.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.l
ambda$create$0(UndertowDeploymentInfoService.java:1428)
at org.wildfly.extension.undertow@40.0.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.l
ambda$create$0(UndertowDeploymentInfoService.java:1428)
at org.wildfly.extension.undertow@40.0.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.l
ambda$create$0(UndertowDeploymentInfoService.java:1428)
at org.wildfly.extension.undertow@40.0.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.l
ambda$create$0(UndertowDeploymentInfoService.java:1428)
at org.wildfly.extension.undertow@40.0.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.l
ambda$create$0(UndertowDeploymentInfoService.java:1428)
at io.undertow.servlet@2.0.0.Final//io.undertow.servlet.core.DeploymentManagerImpl.start(DeploymentManagerImpl.java:606)
at org.wildfly.extension.undertow@40.0.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeployment
Service.java:89)
at org.wildfly.extension.undertow@40.0.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService
.java:70)
... 9 more
Caused by: org.jboss.weld.exceptions.DefinitionException: WELD-000033: Could not instantiate client proxy for org.jboss.weld.bean.proxy.ClientProxyFactory@
49dc3d3a
at org.jboss.weld.core@6.0.4.Final//org.jboss.weld.bean.proxy.ProxyFactory.instantiateProxy(ProxyFactory.java:385)
at org.jboss.weld.core@6.0.4.Final//org.jboss.weld.bean.proxy.ProxyFactory.create(ProxyFactory.java:368)
at org.jboss.weld.core@6.0.4.Final//org.jboss.weld.bean.proxy.ClientProxyFactory.create(ClientProxyFactory.java:84)
at org.jboss.weld.core@6.0.4.Final//org.jboss.weld.bean.proxy.ClientProxyProvider.createClientProxy(ClientProxyProvider.java:207)
at org.jboss.weld.core@6.0.4.Final//org.jboss.weld.bean.proxy.ClientProxyProvider.createClientProxy(ClientProxyProvider.java:197)
at org.jboss.weld.core@6.0.4.Final//org.jboss.weld.bean.proxy.ClientProxyProvider$CreateClientProxy.apply(ClientProxyProvider.java:52)
at org.jboss.weld.core@6.0.4.Final//org.jboss.weld.bean.proxy.ClientProxyProvider$CreateClientProxy.apply(ClientProxyProvider.java:48)
at org.jboss.weld.core@6.0.4.Final//org.jboss.weld.util.cache.ReentrantMapBackedComputingCache.lambda$new$0(ReentrantMapBackedComputingCache.java:5
7)
at org.jboss.weld.core@6.0.4.Final//org.jboss.weld.util.LazyValueHolder$1.computeValue(LazyValueHolder.java:32)
at org.jboss.weld.core@6.0.4.Final//org.jboss.weld.util.LazyValueHolder.get(LazyValueHolder.java:46)
at org.jboss.weld.core@6.0.4.Final//org.jboss.weld.util.cache.ReentrantMapBackedComputingCache.getValue(ReentrantMapBackedComputingCache.java:74)
at org.jboss.weld.core@6.0.4.Final//org.jboss.weld.util.cache.ReentrantMapBackedComputingCache.getCastValue(ReentrantMapBackedComputingCache.java:8
0)
at org.jboss.weld.core@6.0.4.Final//org.jboss.weld.bean.proxy.ClientProxyProvider.getClientProxy(ClientProxyProvider.java:232)
at org.jboss.weld.core@6.0.4.Final//org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:720)
at org.jboss.weld.core@6.0.4.Final//org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:746)
at org.jboss.weld.core@6.0.4.Final//org.jboss.weld.util.ForwardingBeanManager.getReference(ForwardingBeanManager.java:65)
at org.jboss.weld.core@6.0.4.Final//org.jboss.weld.bean.builtin.BeanManagerProxy.getReference(BeanManagerProxy.java:89)
at org.jboss.resteasy.resteasy-cdi@7.0.2.Final//org.jboss.resteasy.cdi.CdiConstructorInjector.construct(CdiConstructorInjector.java:56)
at org.jboss.resteasy.resteasy-core@7.0.2.Final//org.jboss.resteasy.core.providerfactory.Utils.createProviderInstance(Utils.java:95)
at org.jboss.resteasy.resteasy-core@7.0.2.Final//org.jboss.resteasy.core.providerfactory.CommonProviders.processProviderContracts(CommonProviders.j
ava:83)
... 40 more
Caused by: java.lang.NoClassDefFoundError: tools/jackson/module/jakarta/xmlbind/JakartaXmlBindAnnotationIntrospector
at deployment.server.war//tools.jackson.jakarta.rs.json.JacksonXmlBindJsonProvider.(JacksonXmlBindJsonProvider.java:37)
at deployment.server.war//tools.jackson.jakarta.rs.json.JacksonXmlBindJsonProvider$Proxy$_$$_WeldClientProxy.(Unknown Source)
at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:483)
at org.jboss.weld.core@6.0.4.Final//org.jboss.weld.bean.proxy.DefaultProxyInstantiator.newInstance(DefaultProxyInstantiator.java:45)
at org.jboss.weld.core@6.0.4.Final//org.jboss.weld.bean.proxy.ProxyFactory.instantiateProxy(ProxyFactory.java:383)
... 59 more
Caused by: java.lang.ClassNotFoundException: tools.jackson.module.jakarta.xmlbind.JakartaXmlBindAnnotationIntrospector from [Module "deployment.server-lobb
y.war" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:201)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:408)
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:396)
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:115)
... 66 more
03:19:51,084 ERROR [org.jboss.as.controller.management-operation] (management-handler-thread - 2) WFLYCTL0013: Operation ("deploy") failed - address: ({"de
ployment" => "server.war"}) - Stage: (VERIFY) - failure description: {"WFLYCTL0080: Failed services" => {"org.wildfly.undertow.deployment.default-ser
ver.default-host./server" => "java.lang.RuntimeException: RESTEASY003940: Unable to instantiate MessageBodyReader
Caused by: java.lang.RuntimeException: RESTEASY003940: Unable to instantiate MessageBodyReader
Caused by: org.jboss.weld.exceptions.DefinitionException: WELD-000033: Could not instantiate client proxy for org.jboss.weld.bean.proxy.ClientProxyFact
ory@49dc3d3a
Caused by: java.lang.NoClassDefFoundError: tools/jackson/module/jakarta/xmlbind/JakartaXmlBindAnnotationIntrospector
Caused by: java.lang.ClassNotFoundException: tools.jackson.module.jakarta.xmlbind.JakartaXmlBindAnnotationIntrospector from [Module \"deployment.server
.war\" from Service Module Loader]"}}
03:19:51,085 ERROR [org.jboss.as.controller.management-operation] (management-handler-thread - 2) WFLYCTL0013: Operation ("deploy") failed - address: ({"de
ployment" => "server.war"}) - Stage: (VERIFY) - failure description: {"WFLYCTL0080: Failed services" => {"org.wildfly.undertow.deployment.default-ser
ver.default-host./server" => "java.lang.RuntimeException: RESTEASY003940: Unable to instantiate MessageBodyReader
Caused by: java.lang.RuntimeException: RESTEASY003940: Unable to instantiate MessageBodyReader
Caused by: org.jboss.weld.exceptions.DefinitionException: WELD-000033: Could not instantiate client proxy for org.jboss.weld.bean.proxy.ClientProxyFact
ory@49dc3d3a
Caused by: java.lang.NoClassDefFoundError: tools/jackson/module/jakarta/xmlbind/JakartaXmlBindAnnotationIntrospector
Caused by: java.lang.ClassNotFoundException: tools.jackson.module.jakarta.xmlbind.JakartaXmlBindAnnotationIntrospector from [Module \"deployment.server
.war\" from Service Module Loader]"}}
03:19:51,086 ERROR [org.jboss.as.server] (management-handler-thread - 2) WFLYSRV0021: Deploy of deployment "server.war" was rolled back with the foll
owing failure message:
{"WFLYCTL0080: Failed services" => {"org.wildfly.undertow.deployment.default-server.default-host./server" => "java.lang.RuntimeException: RESTEASY003
940: Unable to instantiate MessageBodyReader
Caused by: java.lang.RuntimeException: RESTEASY003940: Unable to instantiate MessageBodyReader
Caused by: org.jboss.weld.exceptions.DefinitionException: WELD-000033: Could not instantiate client proxy for org.jboss.weld.bean.proxy.ClientProxyFact
ory@49dc3d3a
Caused by: java.lang.NoClassDefFoundError: tools/jackson/module/jakarta/xmlbind/JakartaXmlBindAnnotationIntrospector
Caused by: java.lang.ClassNotFoundException: tools.jackson.module.jakarta.xmlbind.JakartaXmlBindAnnotationIntrospector from [Module \"deployment.server
.war\" from Service Module Loader]"}}
```
`JacksonXmlBindJsonProvider` is loaded, but since it's declared in the POM as optional, it can't be found.
There's a [comment](https://github.com/FasterXML/jackson-jakarta-rs-providers/blob/bba38e65a34e852264c70c35ce48625c9afb7768/json/src/main/java/tools/jackson/jakarta/rs/json/JacksonXmlBindJsonProvider.java#L60) saying that it's only called when needed, but then the [constructor](https://github.com/FasterXML/jackson-jakarta-rs-providers/blob/bba38e65a34e852264c70c35ce48625c9afb7768/json/src/main/java/tools/jackson/jakarta/rs/json/JacksonXmlBindJsonProvider.java#L36) calls is anyway.
The workaround with RESTEasy is to set
```properties
resteasy.disable.providers=tools.jackson.jakarta.rs.json.JacksonXmlBindJsonProvider
```
(this line is using MicroProfile Config, but the same can be set in the XML without MP).
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.