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--