FasterXML / FasterXML/jackson-jakarta-rs-providers

`JacksonXmlBindJsonProvider` is loaded by default, causing exception on deployment

Open
#72 0 comments 0 reactions 0 assignees View on GitHub
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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.