-
Bug
-
Resolution: Done
-
Major
-
36.0.0.Final
-
None
We used CDI jakarta.enterprise.event.Startup event to start CDI bean during server startup which tries to use injected UserTransaction resource :
@ApplicationScoped public class LoadOnStartUpService { @Resource private UserTransaction userTransaction; public void loadStartups(@Observes @Priority(Interceptor.Priority.APPLICATION) Startup startup) { // startup stuff } }
We then get "NameNotFoundException: java:comp/UserTransaction" exception during server startup:
2025-07-15 11:35:06,956 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC000001: Failed to start service jboss.deployment.unit."xpe.ear".WeldEndInitService: org.jboss.msc.service.StartException in service jboss.deployment.unit."xpe.ear".WeldEndInitService: Failed to start service at org.jboss.msc@1.5.5.Final//org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1609) at org.jboss.msc@1.5.5.Final//org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1438) at org.jboss.threads@2.4.0.Final//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35) at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990) at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486) at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377) at java.base/java.lang.Thread.run(Thread.java:1583) Caused by: java.lang.IllegalArgumentException: WFLYWELD0049: Error injecting resource into Jakarta Contexts and Dependency Injection managed bean. Can't find a resource named java:comp/UserTransaction defined on private jakarta.transaction.UserTransaction com.foo.LoadOnStartUpService.userTransaction at org.jboss.as.weld@36.0.0.Final//org.jboss.as.weld.services.bootstrap.WeldResourceInjectionServices.resolveResource(WeldResourceInjectionServices.java:225) at org.jboss.as.weld@36.0.0.Final//org.jboss.as.weld.services.bootstrap.WeldResourceInjectionServices$1.createResource(WeldResourceInjectionServices.java:170) at org.jboss.weld.core@5.1.5.Final//org.jboss.weld.injection.AbstractResourceInjection.getResourceReference(AbstractResourceInjection.java:49) at org.jboss.weld.core@5.1.5.Final//org.jboss.weld.injection.AbstractResourceInjection.injectResourceReference(AbstractResourceInjection.java:63) at org.jboss.weld.core@5.1.5.Final//org.jboss.weld.util.Beans.injectEEFields(Beans.java:330) at org.jboss.weld.core@5.1.5.Final//org.jboss.weld.injection.producer.ResourceInjector$1.proceed(ResourceInjector.java:69) at org.jboss.weld.core@5.1.5.Final//org.jboss.weld.injection.InjectionContextImpl.run(InjectionContextImpl.java:49) at org.jboss.weld.core@5.1.5.Final//org.jboss.weld.injection.producer.ResourceInjector.inject(ResourceInjector.java:72) at org.jboss.weld.core@5.1.5.Final//org.jboss.weld.injection.producer.BasicInjectionTarget.inject(BasicInjectionTarget.java:126) at org.jboss.weld.core@5.1.5.Final//org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:165) at org.jboss.weld.core@5.1.5.Final//org.jboss.weld.contexts.AbstractContext.get(AbstractContext.java:96) at org.jboss.weld.core@5.1.5.Final//org.jboss.weld.bean.ContextualInstanceStrategy$DefaultContextualInstanceStrategy.get(ContextualInstanceStrategy.java:106) at org.jboss.weld.core@5.1.5.Final//org.jboss.weld.bean.ContextualInstanceStrategy$ApplicationScopedContextualInstanceStrategy.get(ContextualInstanceStrategy.java:152) at org.jboss.weld.core@5.1.5.Final//org.jboss.weld.bean.ContextualInstance.get(ContextualInstance.java:68) at org.jboss.weld.core@5.1.5.Final//org.jboss.weld.event.ObserverMethodImpl.getReceiver(ObserverMethodImpl.java:381) at org.jboss.weld.core@5.1.5.Final//org.jboss.weld.event.ObserverMethodImpl.getReceiverIfExists(ObserverMethodImpl.java:368) at org.jboss.weld.core@5.1.5.Final//org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:325) at org.jboss.weld.core@5.1.5.Final//org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:298) at jakarta.enterprise.api//jakarta.enterprise.inject.spi.ObserverMethod.notify(ObserverMethod.java:142) at org.jboss.weld.core@5.1.5.Final//org.jboss.weld.util.Observers.notify(Observers.java:176) at org.jboss.weld.core@5.1.5.Final//org.jboss.weld.event.ObserverNotifier.notifySyncObservers(ObserverNotifier.java:307) at org.jboss.weld.core@5.1.5.Final//org.jboss.weld.event.ObserverNotifier.notify(ObserverNotifier.java:293) at org.jboss.weld.core@5.1.5.Final//org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:185) at org.jboss.weld.core@5.1.5.Final//org.jboss.weld.bootstrap.BeanDeploymentModule.fireEvent(BeanDeploymentModule.java:100) at org.jboss.weld.core@5.1.5.Final//org.jboss.weld.bootstrap.WeldStartup.endInitialization(WeldStartup.java:587) at org.jboss.weld.core@5.1.5.Final//org.jboss.weld.bootstrap.WeldBootstrap.endInitialization(WeldBootstrap.java:101) at org.jboss.as.weld@36.0.0.Final//org.jboss.as.weld.WeldStartCompletionService.start(WeldStartCompletionService.java:62) at org.jboss.msc@1.5.5.Final//org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1617) at org.jboss.msc@1.5.5.Final//org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1580) ... 6 more Caused by: javax.naming.NameNotFoundException: java:comp/UserTransaction at org.jboss.as.naming@36.0.0.Final//org.jboss.as.naming.InitialContext$DefaultInitialContext.findContext(InitialContext.java:174) at org.jboss.as.naming@36.0.0.Final//org.jboss.as.naming.InitialContext$DefaultInitialContext.lookup(InitialContext.java:218) at org.jboss.as.naming@36.0.0.Final//org.jboss.as.naming.NamingContext.lookup(NamingContext.java:176) at org.jboss.as.naming@36.0.0.Final//org.jboss.as.naming.NamingContext.lookup(NamingContext.java:172) at java.naming/javax.naming.InitialContext.lookup(InitialContext.java:409) at java.naming/javax.naming.InitialContext.lookup(InitialContext.java:409) at org.jboss.as.weld@36.0.0.Final//org.jboss.as.weld.services.bootstrap.WeldResourceInjectionServices.resolveResource(WeldResourceInjectionServices.java:223) ... 34 more
It looks like a bug. According to CDI 4.0 specification Startup event is fired when container is ready.