在EJB 3.1中,我可以创建一个无接口会话bean.当将其注入到其他类中时,他们会收到与我的pojo类型相同的对象,但实际上他们得到的是一个存根,它通过一连串的类与我的pojo进行交互.这个技巧如何实现?我可以理解存根是否具有与我的pojo相同的接口类型,但是容器如何创建相同类型的对象?反射?编织?
非常感谢!
解决方法:
容器会生成一个代理类,该代理类是您的无接口EJB类的子类,然后,它重写所有方法以进行其常规代理(设置,拆卸和调用实际的bean实例),而不是在您的实例中调用方法.由于java.lang.reflect.Proxy不支持扩展类,因此容器必须使用另一种方法来生成类,可能使用诸如ASM,BCEL,Javassist等字节码库.