ejb@glassfish.java.net

RE: EJB Stateful problem

From: Roman Pohodzhai <rpohodzhai_at_spline-software.com>
Date: Fri, 2 Nov 2007 09:58:56 +0200

Sorry that I annoy you, but.

In first your reply you said : " Each injection or lookup of a stateful
session bean results in a new instance with a unique identity".

But in the last : "They're stateful because if you invoke multiple times on
the same EJB reference, each invocation will be handled by an instance with
the same bean identity and same instance state".

As for me it's opposite things.

Could you explain this?

 

From: Kenneth.Saks_at_Sun.COM [mailto:Kenneth.Saks_at_Sun.COM]
Sent: Thursday, November 01, 2007 9:16 PM
To: rpohodzhai_at_spline-software.com
Cc: ejb_at_glassfish.dev.java.net
Subject: Re: EJB Stateful problem

 

Roman Pohodzhai wrote:

 

 

From: Roman Pohodzhai [mailto:rpohodzhai_at_spline-software.com]
Sent: Thursday, November 01, 2007 3:36 PM
To: Kenneth.Saks_at_Sun.COM
Subject: RE: EJB Stateful problem

 

Hello once more!

It's very interesting for me J.

Suppose I've lookuped some stateful EJB twice, hence EJB container has
create two instances. My question is : "When this beans being destroyed,
passivated?".

In the absence of a specific client-initiated removal operation, it's up to
the container to decide when to remove a stateful session bean. It's also
up to the container to decide when, or if, to passivate a stateful session
bean. Most containers have configuration attributes that control these
decisions. In Glassfish, those are located in domain.xml and
sun-ejb-jar.xml.




It's interesting for me because when I look in monitoring section through
admin console I see that two instances are created but no instance is
removed or passivated. Why they are not removed, even after they can't be
used? And why they are still called STATEFUL?

They're stateful because if you invoke multiple times on the same EJB
reference, each invocation will be handled by an instance with the same bean
identity and same instance state. That's not true of stateless session
bean invocations.

It's up to the client to manage the stateful session bean reference. If you
discard it, you have no way of ever referencing that stateful session bean.
You can also explicitly remove the bean by designating a business method as
an @Remote method. When such a business method is called, the container
will automatically remove the stateful session bean after the method
returns.




 

 

From: Kenneth.Saks_at_Sun.COM [mailto:Kenneth.Saks_at_Sun.COM]
Sent: Thursday, November 01, 2007 2:48 PM
To: ejb_at_glassfish.dev.java.net; rpohodzhai_at_spline-software.com
Subject: Re: EJB Stateful problem

 

Roman Pohodzhai wrote:

Hello!

I have some problem with Glassfish V2 B58g and Stateful ejb's.

When I try to lookup any stateful bean from JNDI I always receive a new
instance of ejb. I expected one instance per session but receive new one.

Hi Roman,

That's the spec-required behavior. Each injection or lookup of a stateful
session bean results in a new instance with a unique identity. The current
specification does not define any Singleton behavior. That's a feature
under strong consideration for EJB 3.1.




 

Thanks in advance!

 

Sincerely,

Roman Pohodzhai

 

Spline-software : <http://www.spline-software.com>
http://www.spline-software.com
e-mail: rpohodzhai_at_spline-software.com

skype account : rpohodzhai