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