users@glassfish.java.net

Re: why does stateful ejb throw exception for calling super.finalize();

From: Marina Vatkina <marina.vatkina_at_oracle.com>
Date: Thu, 24 Feb 2011 17:32:02 -0800

The EJB spec prohibits this method on a session bean - see section
4.9.2 Session Bean Class

-marina

emiddio-frontier wrote:
> why does stateful ejb throw exception for calling super.finalize();
>
> Thanks
>
> excerpt from log -- gfv301 and code snippet.
>
> gary
>
>
> INFO: UserBean finalize:fCount:1
> SEVERE: NRU-com.corejsf.UserBean: Cannot load from BACKUPSTORE FOR
> Key: <190c02f00a81f-5a2427dc-0>
> WARNING: A system exception occurred during an invocation on EJB
> UserBean method public void com.corejsf.UserBean.finalize() throws
> java.lang.Throwable
> javax.ejb.NoSuchObjectLocalException: The EJB does not exist.
> session-key: 190c02f00a81f-5a2427dc-0
> at
> com.sun.ejb.containers.StatefulSessionContainer._getContext(StatefulSessionContainer.java:1428)
>
> at
> com.sun.ejb.containers.BaseContainer.getContext(BaseContainer.java:2467)
> at
> com.sun.ejb.containers.BaseContainer.preInvoke(BaseContainer.java:1860)
> at
> com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:188)
>
> at
> com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:126)
>
> at $Proxy157.finalize(Unknown Source)
> at java.lang.ref.Finalizer.invokeFinalizeMethod(Native Method)
> at java.lang.ref.Finalizer.runFinalizer(Finalizer.java:83)
> at java.lang.ref.Finalizer.access$100(Finalizer.java:14)
> at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:160)
>
>
>
> @javax.inject.Named("user")
> @javax.enterprise.context.RequestScoped
> @javax.ejb.Stateful
> public class UserBean {...
>
> @Override
> public void finalize() throws Throwable {
> fCount++;
> System.out.println("UserBean finalize:fCount:" + fCount);
> super.finalize();
> }
> ...
>