[jboss-jira] [JBoss JIRA] (WFLY-10281) NPE when initializing CDI bean during startup that injects PushContext

Rich DiCroce (JIRA) issues at jboss.org
Fri Apr 20 12:17:00 EDT 2018


Rich DiCroce created WFLY-10281:
-----------------------------------

             Summary: NPE when initializing CDI bean during startup that injects PushContext
                 Key: WFLY-10281
                 URL: https://issues.jboss.org/browse/WFLY-10281
             Project: WildFly
          Issue Type: Bug
          Components: CDI / Weld, JSF
    Affects Versions: 12.0.0.Final
            Reporter: Rich DiCroce
            Assignee: Martin Kouba


If a CDI bean injects PushContext (for JSF websocket support, new in JSF 2.3) and is instantiated during startup, a NullPointerException occurs.

The offending method is part of Mojarra. Looking at the code, I'm guessing FacesContext is null since JSF has not initialized yet, and apparently the BeanManager has not been bound in JNDI yet either. It doesn't try CDI.current() at all, though I have no idea if that would help.

I'm currently working around this by injecting Instance<PushContext> instead.

{code}
2018-04-20 11:48:39,577 ERROR [com.sgi.song.gpnms.timer.ExecutorTimerService] (EE-ManagedExecutorService-default-Thread-2) Exception invoking timer com.sg.song.nms.endpoint.sbc.SmartBinOverviewBean performRefresh: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_162]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [rt.jar:1.8.0_162]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_162]
	at java.lang.reflect.Method.invoke(Method.java:498) [rt.jar:1.8.0_162]
	at com.sgi.song.gpnms.timer.ExecutorTimerService.lambda$0(ExecutorTimerService.java:72) [gp-ispn-shared-2.0.0-SNAPSHOT.jar:]
	at com.sgi.song.gpnms.timer.ExecutorTimerService.lambda$2(ExecutorTimerService.java:199) [gp-ispn-shared-2.0.0-SNAPSHOT.jar:]
	at org.jboss.as.ee.concurrent.ControlPointUtils$ControlledRunnable.run(ControlPointUtils.java:105) [wildfly-ee-12.0.0.Final.jar:12.0.0.Final]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [rt.jar:1.8.0_162]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [rt.jar:1.8.0_162]
	at org.glassfish.enterprise.concurrent.internal.ManagedFutureTask.run(ManagedFutureTask.java:141) [javax.enterprise.concurrent-1.0.jar:]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [rt.jar:1.8.0_162]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [rt.jar:1.8.0_162]
	at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_162]
	at org.glassfish.enterprise.concurrent.ManagedThreadFactoryImpl$ManagedThread.run(ManagedThreadFactoryImpl.java:250) [javax.enterprise.concurrent-1.0.jar:]
	at org.jboss.as.ee.concurrent.service.ElytronManagedThreadFactory$ElytronManagedThread.run(ElytronManagedThreadFactory.java:78)
Caused by: org.jboss.weld.exceptions.WeldException: WELD-000049: Unable to invoke void com.sg.song.nms.endpoint.sbc.SmartBinOverviewBean.init() on com.sg.song.nms.endpoint.sbc.SmartBinOverviewBean at 7afeacb8
	at org.jboss.weld.injection.producer.DefaultLifecycleCallbackInvoker.invokeMethods(DefaultLifecycleCallbackInvoker.java:85) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.injection.producer.DefaultLifecycleCallbackInvoker.postConstruct(DefaultLifecycleCallbackInvoker.java:66) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.injection.producer.BasicInjectionTarget.postConstruct(BasicInjectionTarget.java:122) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:172) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.contexts.AbstractContext.get(AbstractContext.java:96) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.bean.ContextualInstanceStrategy$DefaultContextualInstanceStrategy.get(ContextualInstanceStrategy.java:100) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.bean.ContextualInstanceStrategy$ApplicationScopedContextualInstanceStrategy.get(ContextualInstanceStrategy.java:140) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.bean.ContextualInstance.get(ContextualInstance.java:50) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:102) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:105) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at com.sg.song.nms.endpoint.sbc.SmartBinOverviewBean$Proxy$_$$_WeldClientProxy.performRefresh(Unknown Source) [classes:]
	... 15 more
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_162]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [rt.jar:1.8.0_162]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_162]
	at java.lang.reflect.Method.invoke(Method.java:498) [rt.jar:1.8.0_162]
	at org.jboss.weld.injection.producer.DefaultLifecycleCallbackInvoker.invokeMethods(DefaultLifecycleCallbackInvoker.java:83) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	... 25 more
Caused by: java.lang.NullPointerException
	at com.sun.faces.cdi.CdiUtils.isScopeActive(CdiUtils.java:378) [jsf-impl-2.3.3.SP1.jar:2.3.3.SP1]
	at com.sun.faces.push.WebsocketPushContext.<init>(WebsocketPushContext.java:95) [jsf-impl-2.3.3.SP1.jar:2.3.3.SP1]
	at com.sun.faces.cdi.WebsocketPushContextProducer.produce(WebsocketPushContextProducer.java:86) [jsf-impl-2.3.3.SP1.jar:2.3.3.SP1]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_162]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [rt.jar:1.8.0_162]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_162]
	at java.lang.reflect.Method.invoke(Method.java:498) [rt.jar:1.8.0_162]
	at org.jboss.weld.injection.StaticMethodInjectionPoint.invoke(StaticMethodInjectionPoint.java:95) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.injection.StaticMethodInjectionPoint.invoke(StaticMethodInjectionPoint.java:85) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.injection.producer.ProducerMethodProducer.produce(ProducerMethodProducer.java:103) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.injection.producer.AbstractMemberProducer.produce(AbstractMemberProducer.java:161) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.bean.AbstractProducerBean.create(AbstractProducerBean.java:180) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.contexts.unbound.DependentContextImpl.get(DependentContextImpl.java:70) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.bean.ContextualInstanceStrategy$DefaultContextualInstanceStrategy.get(ContextualInstanceStrategy.java:100) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.bean.ContextualInstance.get(ContextualInstance.java:50) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:689) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.manager.BeanManagerImpl.getInjectableReference(BeanManagerImpl.java:789) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.injection.FieldInjectionPoint.inject(FieldInjectionPoint.java:92) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.util.Beans.injectBoundFields(Beans.java:335) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.util.Beans.injectFieldsAndInitializers(Beans.java:346) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.injection.producer.ResourceInjector$1.proceed(ResourceInjector.java:69) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.injection.InjectionContextImpl.run(InjectionContextImpl.java:48) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.injection.producer.ResourceInjector.inject(ResourceInjector.java:71) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.injection.producer.BasicInjectionTarget.inject(BasicInjectionTarget.java:117) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:159) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.contexts.AbstractContext.get(AbstractContext.java:96) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.bean.ContextualInstanceStrategy$DefaultContextualInstanceStrategy.get(ContextualInstanceStrategy.java:100) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.bean.ContextualInstanceStrategy$ApplicationScopedContextualInstanceStrategy.get(ContextualInstanceStrategy.java:140) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.bean.ContextualInstance.get(ContextualInstance.java:50) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:102) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at org.jboss.weld.bean.proxy.ProxyMethodHandler.getInstance(ProxyMethodHandler.java:131) [weld-core-impl-3.0.3.Final.jar:3.0.3.Final]
	at com.sg.song.nms.network.command.CommandSender$Proxy$_$$_WeldClientProxy.registerSender(Unknown Source) [classes:]
	at com.sg.song.nms.endpoint.sbc.SmartBinOverviewBean.init(SmartBinOverviewBean.java:86) [classes:]
	... 30 more
{code}



--
This message was sent by Atlassian JIRA
(v7.5.0#75005)


More information about the jboss-jira mailing list