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.

Get Head First EJB now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.