EJB2.0 Spec, Chapter 7.8 is very clear on this.
>From: Kher M <[EMAIL PROTECTED]> >Reply-To: Kher M <[EMAIL PROTECTED]> >To: [EMAIL PROTECTED] >Subject: Re: State in Stateless Session Bean >Date: Mon, 12 Nov 2001 20:37:39 -0800 > >Hi guys, > Is it ok if i store state in a stateless bean. Like i >want to keep the home reference of other beans as a >state. Wont this work in all application servers?. I >got difficulty convincing my Project manager since it >is not given in specification. Is there any link in >the specification to gurantee this. > >PLease reply >Cherry > > >--- Sanjeev Verma <[EMAIL PROTECTED]> wrote: > > Hi guys > > I have been following this thread for some time now, > > and everyone seems > > to say that the ejbCreate() will get fired at the > > moment the SLSB goes > > into the method ready pool. > > > > I think that is not the case. Try this: using > > Weblogic 5.1, create a > > pool of SLSBs at startup of the Server by specifying > > the number in the > > initial-beans-in-free-pool tag of the > > weblogic-ejb-jar file. Keep some > > SOP (System.out.println()) command in the > > ejbCreate() method. You will > > find that the SOP will not be printed. > > > > Next try this: Give an additional SOP in the > > setSessionContext() method. > > This command will execute the number of times you > > have mentioned in the > > initial-beans-in-free-pool tag. > > > > I think this should lead to the conclusion that in > > SLSB, we should carry > > out all our initialization work in the > > setSessionContext() method, which > > will get executed whenever the bean instance gets > > created. The > > ejbCreate() method may or may not get fired on the > > instance. > > > > Next read this (Ctrl-v from Mastering EJB Ed Roman) > > and see figure on > > page No. 684 of the same book > > > > <quote> > > When Are My Beans Created? > > We've learned that the container is responsible for > > pooling stateless > > session beans. The container creates and destroys > > beans when the > > container decides it's the right time to resize its > > pool. Your client > > code is absolutely not responsible for creating > > beans. A client deals > > with the networked bean wrapper, called the EJB > > object. The EJB object > > is part of the container, and it is responsible for > > retrieving beans > > from a pool to service client requests. But if the > > container is > > responsible for bean life cycle, then why does the > > home interface > > specify create() and remove() methods? What you must > > remember is that > > these methods are for creating and destroying EJB > > objects. This may not > > correspond to the actual creation and destruction of > > beans. The client > > shouldn't care whether the actual bean is created or > > destroyed-all the > > client code cares about is that the client has an > > EJB object to invoke. > > The fact that beans are pooled behind the EJB object > > is irrelevant. So, > > when debugging your EJB applications, don't be > > alarmed if your bean > > isn't being created or destroyed when you call > > create() or remove() on > > the home object. Depending on your container's > > policy, your stateless > > session beans may be pooled and reused, with the > > container creating and > > destroying at will. </quote> > > > > I am not very sure that ejbRemove() will be called > > at the time when the > > bean is removed from the ready pool. Can someone > > shed some light?? > > > > Please comment > > > > Regards > > Sanjeev > > > > -----Original Message----- > > From: Mohit Agrawal [ mailto:[EMAIL PROTECTED]] > > Sent: Wednesday, November 07, 2001 11:59 AM > > To: [EMAIL PROTECTED] > > Subject: Re: [Re:State in Stateless Session Bean] > > > > Hi Gavin > > Instance variables like db connection or socket > > connections etc which > > can be used by any client irrespective of state can > > be initilized in > > ejbCreate(). > > > > U can open connectin in ejbCreate() and can destroy > > it in ejbRemove(). > > While bean instance is in pool, connection will > > remain open and will be > > accessible to all. > > > > Following code snipt may help u :- > > > > public void ejbCreate() > > { > > try > > { > > captureJDBCConnection(); > > } > > catch(Exception e) > > { > > e.printStackTrace(); > > } > > } > > > > public void ejbRemove() > > { > > try > > { > > releaseJDBCResources(); > > } > > catch(Exception e) > > { > > e.printStackTrace(); > > } > > } > > > > > > > > Regards > > Mohit > > > > -------Original Message------- > > > > From: Gavin Selvaratnam > > Date: Wednesday, November 07, 2001 11:43:20 AM > > To: Mohit Agrawal > > Subject: Re: [Re:State in Stateless Session Bean] > > > > Hi Mohit, > > Well what I want to do is initialize a DB conection > > in a SLSB. But I > > dont want to create an destroy the connection for > > each method invoked, > > as it will be a performance degrader. I want to keep > > the connection in > > the SLSB and when the SLSB is destroyed the > > connection should be > > destroyed. > > > > Thanks, > > Gavin > > > > > > > > Mohit Agrawal > > <magrawal@ARGU To: Gavin Selvaratnam > > <[EMAIL PROTECTED]> SOFT.COM> > > cc: > > Subject: Re: [Re:State in Stateless Session > > 11/07/2001 Bean] > > 10:32 AM > > > > > > > > > > > > > > hi gavin, > > Actually u dont have any control over the state of > > instance variabls of > > a SLSB. U can only initilize once in ejbCreate() > > which will be called > > the time of instance creation. After that u cannot > > control the state of > > instance variables in SLSB. Thats why it is not > > suggested to use client > > state specific instance variables in SLSB. What is > > ur actual problem, if > > tell in detail, it might be possible to find some > > alternative solutions. > > > > Regards > > Mohit > > > > >======================================================================== > > === > > To unsubscribe, send email to [EMAIL PROTECTED] > > and include in the > > body of the message "signoff EJB-INTEREST". For > > general help, send > > email to [EMAIL PROTECTED] and include in the > > body of the message > > "help". > > > > ========================= > > To unsubscribe, send email to [EMAIL PROTECTED] > > and >=== message truncated === > > >__________________________________________________ >Do You Yahoo!? >Find the one for you at Yahoo! Personals >http://personals.yahoo.com > >=========================================================================== >To unsubscribe, send email to [EMAIL PROTECTED] and include in the body >of the message "signoff EJB-INTEREST". For general help, send email to >[EMAIL PROTECTED] and include in the body of the message "help". > _________________________________________________________________ Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp =========================================================================== To unsubscribe, send email to [EMAIL PROTECTED] and include in the body of the message "signoff EJB-INTEREST". For general help, send email to [EMAIL PROTECTED] and include in the body of the message "help".
