I agree.
We are using stateless session beans to avail the Container Managed transactions service. This enables us to rollback across multiple data sources
In CMT, we will need to use session beans for components whose atomicity needs to be independent of calling component
In these cases when we are certain it is a local call on same JVM, the business delegate can get handle to local interface rather than remote interface. This should avoid overhead, though I am not certain if this is same as a POJO call
And yes, business delegate is adding a layer of transparency over the ServiceLocator. ServiceLocator will do the jndi lookup, but the Struts controller is still aware of home and remote interfaces, whereas in Business Delegate, the controller is unaware it is talking to session bean
Padma