Hi Romain,

[about not being able to get a new instance of a SFSB after the original
one was destroyed by timeout]

because it would be inconsistent. If you use a statetful it means you
need a state so if you have a new instance you loose your state

But if (when) I really WANT a new instance? The same business process could be instantiated many times by the same user. Maybe not in parallel, but one after another.

There are lifecycle events (@PreDestroy) so I know when/if my state was discarded.

During EJB 2.x days, I could call create() many times for the same SFSB, from the same web session. But with EJB3.x I can't find a way to create my SFSB instances. Be it using annotations or JNDI lookups, I get a new instance the first time, and after timeout or after I explicit call a "destroy" method, I cannot get another new instance.

So, isn't this really supposed to work? As it worked for EJB2.x, I wondered I was doing something wrong witj EJB 3.x. :-(

I think it's very bad that, after an SFSB gets discarded by timeout, I have no way to keep my appgoing. All attempts to get a reference to the SFSB throw exceptions. I'm forced to invalidate the user web session. There should be a way for my app to recover from an SFSB timeout.

Think about an app that uses services provided by an SFSB developed elsewere. That SFSB timeout is none the app business. But the way it is, I'm forced to have a smaller timeout for the web session than the SFSB timeout. Even then, I cannot make sure the SFSB will be called again, to keep it alive, while the user navigates the web app. It's absurd to have a "noop" call to the SFSB just to keep it alive. I can't understand why the SFSB timeout should be a non-recoverable scenario.


[]s, Fernando

Reply via email to