Uploaded image for project: 'WildFly'
  1. WildFly
  2. WFLY-21343

Deployments using Reactive Messaging fail to deploy when Jakarta MVC is in the configuration

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • None
    • None
    • MP Reactive Messaging, MVC, REST
    • None

      Smallrye Reactive Messaging, in a CDI Extension method that observes AfterDeploymentValidation, triggers invocation of @Outgoing methods on CDI beans. If such a bean is a REST resource this in turn results in use of JaxrsInjectionTarget and then registration of built-in Jakarta REST Providers by ResteasyProviderFactoryImpl.

      This fails when the mvc-krazo subsystem is part of the configuration. If it is RESTEasy tries to register the org.eclipse.krazo.bootstrap.CoreFeature provider. This provider injects and uses a ServletContext in its Feature.configure method. But at this stage of deployment processing the ServletContext is not available. This results in deployment failure.

      This causes failures of ReactiveMessagingChannelsTestCase in tests of WildFly Preview. In that environment the mvc-krazo subsystem is part of the server config.

      &amp#27;[0m&amp#27;[31m03:31:11,474 ERROR [io.smallrye.reactive.messaging.provider] (MSC service thread 1-2) SRMSG00200: The method org.wildfly.test.integration.microprofile.reactive.messaging.rest.channels.PublisherToChannelPublisherEndpoint#generate has thrown an exception: io.smallrye.reactive.messaging.providers.ProcessingException: SRMSG00103: Exception thrown when calling the method org.wildfly.test.integration.microprofile.reactive.messaging.rest.channels.PublisherToChannelPublisherEndpoint#generate
      	at io.smallrye.reactive.messaging@4.30.0//io.smallrye.reactive.messaging.providers.AbstractMediator.lambda$initialize$12(AbstractMediator.java:150)
      	at io.smallrye.reactive.messaging@4.30.0//io.smallrye.reactive.messaging.providers.AbstractMediator.invoke(AbstractMediator.java:164)
      	at io.smallrye.reactive.messaging@4.30.0//io.smallrye.reactive.messaging.providers.PublisherMediator.produceAPublisherBuilderOfPayloads(PublisherMediator.java:114)
      	at io.smallrye.reactive.messaging@4.30.0//io.smallrye.reactive.messaging.providers.PublisherMediator.initialize(PublisherMediator.java:76)
      	at io.smallrye.reactive.messaging@4.30.0//io.smallrye.reactive.messaging.providers.extension.MediatorManager.createMediator(MediatorManager.java:240)
      	at io.smallrye.reactive.messaging@4.30.0//io.smallrye.reactive.messaging.providers.extension.MediatorManager$Proxy$_$$_WeldClientProxy.createMediator(Unknown Source)
      	at io.smallrye.reactive.messaging@4.30.0//io.smallrye.reactive.messaging.providers.wiring.Wiring$PublisherMediatorComponent.materialize(Wiring.java:624)
      	at io.smallrye.reactive.messaging@4.30.0//io.smallrye.reactive.messaging.providers.wiring.Graph.lambda$materialize$10(Graph.java:100)
      	at java.base/java.util.ArrayList.forEach(ArrayList.java:1604)
      	at io.smallrye.reactive.messaging@4.30.0//io.smallrye.reactive.messaging.providers.wiring.Graph.materialize(Graph.java:99)
      	at io.smallrye.reactive.messaging@4.30.0//io.smallrye.reactive.messaging.providers.extension.MediatorManager.start(MediatorManager.java:263)
      	at io.smallrye.reactive.messaging@4.30.0//io.smallrye.reactive.messaging.providers.extension.MediatorManager$Proxy$_$$_WeldClientProxy.start(Unknown Source)
      	at io.smallrye.reactive.messaging@4.30.0//io.smallrye.reactive.messaging.providers.extension.ReactiveMessagingExtension.startMediatorManager(ReactiveMessagingExtension.java:141)
      	at io.smallrye.reactive.messaging@4.30.0//io.smallrye.reactive.messaging.providers.extension.ReactiveMessagingExtension.afterDeploymentValidation(ReactiveMessagingExtension.java:110)
      	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
      	at java.base/java.lang.reflect.Method.invoke(Method.java:565)
      	at org.jboss.weld.core@6.0.3.Final//org.jboss.weld.injection.StaticMethodInjectionPoint.invoke(StaticMethodInjectionPoint.java:100)
      	at org.jboss.weld.core@6.0.3.Final//org.jboss.weld.injection.MethodInvocationStrategy$SpecialParamPlusBeanManagerStrategy.invoke(MethodInvocationStrategy.java:199)
      	at org.jboss.weld.core@6.0.3.Final//org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:350)
      	at org.jboss.weld.core@6.0.3.Final//org.jboss.weld.event.ExtensionObserverMethodImpl.sendEvent(ExtensionObserverMethodImpl.java:136)
      	at org.jboss.weld.core@6.0.3.Final//org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:328)
      	at org.jboss.weld.core@6.0.3.Final//org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:298)
      	at jakarta.enterprise.api//jakarta.enterprise.inject.spi.ObserverMethod.notify(ObserverMethod.java:140)
      	at org.jboss.weld.core@6.0.3.Final//org.jboss.weld.util.Observers.notify(Observers.java:174)
      	at org.jboss.weld.core@6.0.3.Final//org.jboss.weld.event.ObserverNotifier.notifySyncObservers(ObserverNotifier.java:307)
      	at org.jboss.weld.core@6.0.3.Final//org.jboss.weld.event.ObserverNotifier.notify(ObserverNotifier.java:293)
      	at org.jboss.weld.core@6.0.3.Final//org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:185)
      	at org.jboss.weld.core@6.0.3.Final//org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:179)
      	at org.jboss.weld.core@6.0.3.Final//org.jboss.weld.bootstrap.events.AbstractContainerEvent.fire(AbstractContainerEvent.java:53)
      	at org.jboss.weld.core@6.0.3.Final//org.jboss.weld.bootstrap.events.AbstractDeploymentContainerEvent.fire(AbstractDeploymentContainerEvent.java:35)
      	at org.jboss.weld.core@6.0.3.Final//org.jboss.weld.bootstrap.events.AfterDeploymentValidationImpl.fire(AfterDeploymentValidationImpl.java:28)
      	at org.jboss.weld.core@6.0.3.Final//org.jboss.weld.bootstrap.WeldStartup.validateBeans(WeldStartup.java:505)
      	at org.jboss.weld.core@6.0.3.Final//org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:94)
      	at org.jboss.as.weld@39.0.0.Final-SNAPSHOT//org.jboss.as.weld.WeldStartService.start(WeldStartService.java:81)
      	at org.jboss.msc@1.5.6.Final//org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1553)
      	at org.jboss.msc@1.5.6.Final//org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1516)
      	at org.jboss.msc@1.5.6.Final//org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1374)
      	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:1474)
      Caused by: java.lang.reflect.InvocationTargetException
      	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:119)
      	at java.base/java.lang.reflect.Method.invoke(Method.java:565)
      	at io.smallrye.reactive.messaging@4.30.0//io.smallrye.reactive.messaging.providers.AbstractMediator.lambda$initialize$12(AbstractMediator.java:137)
      	... 42 more
      Caused by: java.lang.RuntimeException: org.jboss.resteasy.spi.LoggableFailure: RESTEASY003880: Unable to find contextual data of type: jakarta.servlet.ServletContext
      	at org.jboss.resteasy.resteasy-core@7.0.1.Final//org.jboss.resteasy.plugins.providers.RegisterBuiltin.register(RegisterBuiltin.java:73)
      	at org.jboss.resteasy.resteasy-core@7.0.1.Final//org.jboss.resteasy.plugins.providers.RegisterBuiltin.register(RegisterBuiltin.java:60)
      	at org.jboss.resteasy.resteasy-core@7.0.1.Final//org.jboss.resteasy.core.providerfactory.ResteasyProviderFactoryImpl.registerBuiltin(ResteasyProviderFactoryImpl.java:211)
      	at org.jboss.resteasy.resteasy-core-spi@7.0.1.Final//org.jboss.resteasy.spi.ResteasyProviderFactory.getInstance(ResteasyProviderFactory.java:112)
      	at org.jboss.resteasy.resteasy-cdi@7.0.1.Final//org.jboss.resteasy.cdi.JaxrsInjectionTarget.getPropertyInjector(JaxrsInjectionTarget.java:117)
      	at org.jboss.resteasy.resteasy-cdi@7.0.1.Final//org.jboss.resteasy.cdi.JaxrsInjectionTarget.inject(JaxrsInjectionTarget.java:64)
      	at org.jboss.weld.core@6.0.3.Final//org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:165)
      	at org.jboss.weld.core@6.0.3.Final//org.jboss.weld.contexts.AbstractContext.get(AbstractContext.java:96)
      	at org.jboss.weld.core@6.0.3.Final//org.jboss.weld.bean.ContextualInstanceStrategy$DefaultContextualInstanceStrategy.get(ContextualInstanceStrategy.java:106)
      	at org.jboss.weld.core@6.0.3.Final//org.jboss.weld.bean.ContextualInstanceStrategy$ApplicationScopedContextualInstanceStrategy.get(ContextualInstanceStrategy.java:152)
      	at org.jboss.weld.core@6.0.3.Final//org.jboss.weld.bean.ContextualInstance.get(ContextualInstance.java:50)
      	at org.jboss.weld.core@6.0.3.Final//org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:101)
      	at org.jboss.weld.core@6.0.3.Final//org.jboss.weld.bean.proxy.ProxyMethodHandler.getInstance(ProxyMethodHandler.java:136)
      	at deployment.rm-channels-client.war//org.wildfly.test.integration.microprofile.reactive.messaging.rest.channels.PublisherToChannelPublisherEndpoint$Proxy$_$$_WeldClientProxy.generate(Unknown Source)
      	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
      	... 44 more
      Caused by: org.jboss.resteasy.spi.LoggableFailure: RESTEASY003880: Unable to find contextual data of type: jakarta.servlet.ServletContext
      	at org.jboss.resteasy.resteasy-core@7.0.1.Final//org.jboss.resteasy.core.ContextParameterInjector$GenericDelegatingProxy.invoke(ContextParameterInjector.java:132)
      	at jakarta.servlet.api@6.1.0/jdk.proxy6/jdk.proxy6.$Proxy82.getAttribute(Unknown Source)
      	at org.eclipse.krazo.core@3.0.1//org.eclipse.krazo.bootstrap.Initializer.isMvcApplication(Initializer.java:79)
      	at org.eclipse.krazo.core@3.0.1//org.eclipse.krazo.bootstrap.Initializer.initialize(Initializer.java:58)
      	at org.eclipse.krazo.core@3.0.1//org.eclipse.krazo.bootstrap.CoreFeature.configure(CoreFeature.java:50)
      	at org.jboss.resteasy.resteasy-core@7.0.1.Final//org.jboss.resteasy.core.providerfactory.ResteasyProviderFactoryImpl.addFeature(ResteasyProviderFactoryImpl.java:899)
      	at org.jboss.resteasy.resteasy-core@7.0.1.Final//org.jboss.resteasy.core.providerfactory.ResteasyProviderFactoryImpl.processProviderContracts(ResteasyProviderFactoryImpl.java:856)
      	at org.jboss.resteasy.resteasy-core@7.0.1.Final//org.jboss.resteasy.core.providerfactory.ResteasyProviderFactoryImpl.registerProvider(ResteasyProviderFactoryImpl.java:802)
      	at org.jboss.resteasy.resteasy-core@7.0.1.Final//org.jboss.resteasy.core.providerfactory.ResteasyProviderFactoryImpl.registerProvider(ResteasyProviderFactoryImpl.java:791)
      	at org.jboss.resteasy.resteasy-core@7.0.1.Final//org.jboss.resteasy.plugins.providers.RegisterBuiltin.registerProviders(RegisterBuiltin.java:90)
      	at org.jboss.resteasy.resteasy-core@7.0.1.Final//org.jboss.resteasy.plugins.providers.RegisterBuiltin.register(RegisterBuiltin.java:71)
      	... 58 more
      

              jperkins-rhn James Perkins
              bstansbe@redhat.com Brian Stansberry
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated: