如何实现$ Proxy $ _ $$ _ Weld $ EnterpriseProxy $代理子类?

时间:2014-03-17 21:07:27

标签: java-ee proxy glassfish

在Java EE 7应用程序中,我们说我有一个会话bean类" @Stateless public class MyEJB"。在Glassfish 4下调试时,我可以看到创建了一个名为MyEJB$Proxy$_$$_Weld$EnterpriseProxy$的代理子类(为了向EJB提供Java EE容器服务)。

我试图找出 这些代理子类的实现方式。是否存在代理实现调用的标准Java EE SPI,例如,划分事务?或者这是通过特定于容器的内部API完成的吗?

(我对这个问题的动机是,我可以实现一个可移植的CDI扩展,以便在Java EE环境中启用真正的POJO和OO编程。)

1 个答案:

答案 0 :(得分:1)

代理实现由ProxyFactory类创建。您可以查看来源in the Weld Github repo

基本上代理类看起来像这样:

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  
  }  
}  

还有很多额外的魔力。也许您可以从the CDI specthis article获取一些详细信息。