EJB in Action code example chapter 3 User account creation.
I invoked createAccount() which is not marked with @Remove annotation, from the client code. As a result of the JNDI lookup
a new instance of the bean is created and PostConstruct callback is invoked as shown below.
20:49:51,359 INFO [STDOUT] openConnection()
20:49:51,359 INFO [STDOUT] I am callback for PostConstruct events for this stateful session bean
20:49:51,359 INFO [STDOUT] I will be invoked after the bean is instantiated and DI are complete.
I invoked the client code again and i was surprised to see that PostConstruct callback was invoked.
Since the bean is a stateful session bean and client never invoked a buisness method with @Remove and therefore
the bean instance should continue to exists in main memory since the client invocation of the buisness method was
within say 2 seconds.
I was expecting the buisness method createAccount() to be invoked on the same session stateful bean.
20:50:06,796 INFO [STDOUT] openConnection()
20:50:06,796 INFO [STDOUT] I am callback for PostConstruct events for this stateful session bean
20:50:06,796 INFO [STDOUT] I will be invoked after the bean is instantiated and DI are complete.
I kept the client connection idle for atleast 10 minutes and PrePassivate methods were never invoked. How long does one has to wait ?
And is this time configurable from
JBOSS ? [My guess is , it should be]