这里的动机是大多数EJB实现都可以在代理上工作。将其视为老式AOP并不会太遥远。业务接口通常由EJB容器通过一个简单的java.lang.reflect.Proxy实现,并且该对象被传递给系统中通过@EJB或JNDI查找ejb的每个人。
代理连接到容器,并且对它的所有调用都直接转到容器,容器将执行安全检查,启动/停止/挂起事务,调用拦截器等,然后最终将调用委托给Bean实例-
并且当然会由于抛出的异常而进行必要的清理-然后最终将返回值通过代理传递给调用者。
直接调用this.foo()或将“ this”传递给调用方,以便他们也可以直接调用,将跳过所有操作,容器将被有效地裁剪掉。“
getBusinessObject(Class)”方法允许Bean实例从本质上获取其自身的代理,以便它可以调用自己的方法并利用与之关联的容器管理服务-
拦截器,事务管理,安全实施等。



