Who creates the stateless session bean, and when?
First, we have to define what create means. For a session bean, it means the bean instance is physically instantiated and initialized as a bean. For an entity bean, it’s completely different, so this conversation applies just to session beans. Later we’ll get into what it means to create an entity bean.
For stateful session beans, the create is triggered by the client. The client calls create on a Home stub, and everything happens at that point—an EJBObject is instantiated for this new about-to-be-created-bean, and then the bean itself is created and linked to the EJBObject (the bean’s bodyguard).
But for stateless session beans, the client create and the actual creation of the bean are decoupled. In other words, just because the client calls create on a Home stub doesn’t mean a bean will be created at that point.
Stateless session beans aren’t created until the container decides it needs one, and that’s really up to the container. It might, for example, make a bunch of bean instances (i.e. create some beans) and plop them in a pool before even a single client has asked for one (by calling create on a Home stub). Or, the container might make just-in-time beans, and wait until the client invokes a business method before going to the trouble of physically creating the bean.
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access