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

Reply via email to