Re: Stateless bean injection fails during application server startup
Richard Zowalla <[email protected]> Tue, 22 Jul 2025 09:50:10 +0200
| Newsgroups | gmane.comp.java.openejb.user |
|---|---|
| Message-ID | <[email protected]> |
--Apple-Mail=_C0EA167A-33FD-4F11-ADD7-33F421013B18 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Hi, It seems that the information provided isn't sufficient to determine the = root cause. Would you be able to share a reproducer or additional details? Gru=C3=9F Richard > Am 21.07.2025 um 10:23 schrieb Thomas Butz = <[email protected]>: >=20 > Hi, I'm currently struggling with a potential bug in TomEE 10.1.0. The = problem seems to be triggered by the early injection of a stateless EJB = during server startup. > This results in a cascade of NPEs for subsequent stateless EJB = injections. >=20 > This is the first exception that can be observed during the startup = phase: >=20 > java.lang.NullPointerException: Cannot invoke = "org.apache.openejb.core.stateless.StatelessInstanceManager$Data.poolPop()= " because "data" is null > at = org.apache.openejb.core.stateless.StatelessInstanceManager.getInstance(Sta= telessInstanceManager.java:218) ~[?:?] > at = org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessConta= iner.java:204) ~[?:?] > at = org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMeth= od(EjbObjectProxyHandler.java:265) ~[?:?] > at = org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObject= ProxyHandler.java:260) ~[?:?] > at = org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHa= ndler.java:89) ~[?:?] > at = org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler= .java:349) ~[?:?] > at jdk.proxy17/jdk.proxy17.$Proxy272.doMasterDataExport(Unknown = Source) ~[?:?] > at = de.optitool.bean.export.AsyncExportBean.handleMessage(AsyncExportBean.java= :176) ~[?:?] > at = de.optitool.bean.export.AsyncExportBean.onMessage(AsyncExportBean.java:92)= ~[?:?] > at = java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMet= hodHandleAccessor.java:103) ~[?:?] > at java.base/java.lang.reflect.Method.invoke(Method.java:580) = ~[?:?] > at = org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation= .invoke(ReflectionInvocationContext.java:210) ~[?:?] > at = org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(Re= flectionInvocationContext.java:191) ~[?:?] > at = org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.jav= a:191) ~[?:?] > at = org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.jav= a:101) ~[?:?] > at = java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMet= hodHandleAccessor.java:103) ~[?:?] > at java.base/java.lang.reflect.Method.invoke(Method.java:580) = ~[?:?] > at = org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation= .invoke(ReflectionInvocationContext.java:210) ~[?:?] > at = org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(Re= flectionInvocationContext.java:191) ~[?:?] > at = org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorSta= ck.java:95) ~[?:?] > at = org.apache.openejb.core.mdb.MdbContainer._invoke(MdbContainer.java:536) = ~[?:?] > at = org.apache.openejb.core.mdb.MdbContainer.invoke(MdbContainer.java:510) = ~[?:?] > at = org.apache.openejb.core.mdb.AbstractEndpointHandler.deliverMessage(Abstrac= tEndpointHandler.java:115) ~[?:?] > at = org.apache.openejb.core.mdb.EndpointHandler.deliverMessage(EndpointHandler= .java:28) ~[?:?] > at = org.apache.openejb.core.mdb.AbstractEndpointHandler.invoke(AbstractEndpoin= tHandler.java:81) ~[?:?] > at = org.apache.openejb.core.mdb.EndpointHandler.invoke(EndpointHandler.java:28= ) ~[?:?] > at = de.optitool.bean.export.AsyncExportBean$$LocalBeanProxy.onMessage(de/optit= ool/bean/export/AsyncExportBean.java) ~[?:?] > at = org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.onMessage= (MessageEndpointProxy.java:123) ~[?:?] > at = org.apache.activemq.ra.MessageEndpointProxy.onMessage(MessageEndpointProxy= .java:64) ~[?:?] > at = org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:1056) = ~[?:?] > at = org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:170) = ~[?:?] > at = org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java:36= 5) ~[?:?] > at = org.apache.geronimo.connector.work.pool.NamedRunnable.run(NamedRunnable.ja= va:32) ~[?:?] > at = java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExec= utor.java:1144) ~[?:?] > at = java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExe= cutor.java:642) ~[?:?] > at java.base/java.lang.Thread.run(Thread.java:1583) [?:?] >=20 >=20 > The AsyncExportBean is a message-driven bean which tries to invoke the = "doMasterDataExport()" of a local stateless EJB injected with @EJB. >=20 > I quickly skimmed through the StatelessInstanceManager code, and it = doesn't seem to expect BeanContext.getContainerData() to return a null = value. >=20 --Apple-Mail=_C0EA167A-33FD-4F11-ADD7-33F421013B18--