EJB container is managing the lifecycle of an ejb i.e. container is responsible for creation and removal of EJBS. Almost all type of ejbs are pooled. Untill a system exception occurs or remove is called (in case of SFSB), container is keeping a designated set of beans in the pools, increasing during peak loads and decreasing them during off-peak loads
So It doesn't make a sense to have Finalize method in EJBs.
Yes, almost all types of beans are pooled(except SFSB). The finalize method is called when JVM decided this object need more and also purpose the finalize method is to realse the resources(non java resources, like connection to db, file etc).
We have alternative methods for realsing the resources in ejb framework. The finalize method is not guaranteed to execute. But in our EJB framework, for entitybean instance level resource realsing method is unsetEntityContext, it is guaranteed to executed by container when the instance removing from the pooled state, likewise for Stateless bean also ejbRemove methods.