在 Java EE 7 应用程序中,假设我有一个会话 bean 类”@Stateless public class MyEJB
”。在 Glassfish 4 下调试时,我可以看到一个名为MyEJB$Proxy$_$$_Weld$EnterpriseProxy$
创建(为了向 EJB 提供 Java EE 容器服务)。
我想弄清楚how这些代理子类已实现。是否存在代理实现调用的标准 Java EE SPI,例如用于划分事务?或者这仅通过容器特定的内部 API 完成?
(我提出这个问题的动机是,我可以实现一个可移植的 CDI 扩展,以在 Java EE 上下文中启用真正的 POJO 和 OO 编程。)
代理实现是由ProxyFactory
班级。你可以看一下源码在 Weld Github 存储库中 https://github.com/weld/core/blob/master/impl/src/main/java/org/jboss/weld/bean/proxy/ProxyFactory.java.
基本上代理类看起来像这样:
public class Test_$$Proxy extends Test
{
public void doSomething(int someValue)
{
Testinstance = lookupBean();
instance.doSomething(someValue);
}
private Test lookupBean()
{
//get the correct instance from the BeanManager and return it
}
}
加上很多额外的魔法。也许您可以从以下位置获得一些详细信息CDI 规范 http://docs.jboss.org/cdi/spec/1.0/html/injectionelresolution.html和来自本文 https://community.jboss.org/blogs/stuartdouglas/2010/10/12/weld-cdi-and-proxies.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)