As in EJBHF, when a client use an EB, 3 types of scenario occus, the client can create or find an existing entity, or get an EB sub component from Home business method. In these 3 types, only when a client create an entity would require a bean to be brought out of the pool to server the client. But what is the difference that the bean do some work in the pool or outside of pool? Since they all exist on live heap.
Besides these, only SFSB passivation will place the bean really out of heap (hope I'm right), for the rest of cases, what are the really difference the beans, either SB, EB, or MDB, are in the pool or outside of the pool?
When an entity bean is in the pool, it is not connected to a specific EJBObject, and as such cannot perform actions specific to the bean. It can only perform home business methods, which do not require a specific bean, but involve all beans, such as calculating the average salary for all employees.
Only when an entitybean is brought out of the pool it is connected to an EJBObject, and can then perform actions on that specific bean. This means calling methods that are defined in the component interface, for example update the salary of a (specific) employee.
So the difference is really: in the pool -> bean in not connected to an EJBObject, out of the pool -> bean is connected to an EJBObject