在EJB 3.1中,我可以创建一个无接口会话bean。当它被注入到其他类中时,它们会收到一个与我的pojo具有相同类型的对象,但它们实际得到的是一个由一串类与我的pojo交互的存根。这个伎俩怎么样了?我可以理解存根是否与我的pojo具有相同的接口类型,但容器如何创建相同类型的对象?反射?位织造? 非常感谢!
答案 0 :(得分:4)
容器生成一个代理类,它是无接口EJB类的子类,然后它覆盖所有方法来执行其正常代理(设置,拆卸和调用实际的bean实例),而不是调用方法在你的实例中。由于java.lang.reflect.Proxy不支持扩展类,因此容器必须使用另一种方法来生成类,可能使用ASM,BCEL,Javassist等字节码库。