在EJB 3.1中,容器如何在技术上代理并有效地欺骗我的无接口对象?

时间:2014-11-18 13:51:36

标签: java jboss ejb-3.1 glassfish-4

在EJB 3.1中,我可以创建一个无接口会话bean。当它被注入到其他类中时,它们会收到一个与我的pojo具有相同类型的对象,但它们实际得到的是一个由一串类与我的pojo交互的存根。这个伎俩怎么样了?我可以理解存根是否与我的pojo具有相同的接口类型,但容器如何创建相同类型的对象?反射?位织造? 非常感谢!

1 个答案:

答案 0 :(得分:4)

容器生成一个代理类,它是无接口EJB类的子类,然后它覆盖所有方法来执行其正常代理(设置,拆卸和调用实际的bean实例),而不是调用方法在你的实例中。由于java.lang.reflect.Proxy不支持扩展类,因此容器必须使用另一种方法来生成类,可能使用ASM,BCEL,Javassist等字节码库。