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