Jakarta ee $Proxy$\u$\ uWeld$EnterpriseProxy$代理子类是如何实现的?

Jakarta ee $Proxy$\u$\ uWeld$EnterpriseProxy$代理子类是如何实现的?,jakarta-ee,proxy,glassfish,Jakarta Ee,Proxy,Glassfish,在JavaEE7应用程序中,假设我有一个会话bean类“@无状态公共类MyEJB”。在Glassfish 4下调试时,我可以看到创建了一个名为MyEJB$proxy$\u$$\ uWeld$EnterpriseProxy$的代理子类(以便为EJB提供JavaEE容器服务) 我试图弄清楚这些代理子类是如何实现的。是否有代理实现调用的标准JavaEESPI来划分事务?或者这只是通过特定于容器的内部API实现的 (我提出这个问题的动机是为了实现一个可移植的CDI扩展,以便在JavaEE上下文中实现真正

在JavaEE7应用程序中,假设我有一个会话bean类“
@无状态公共类MyEJB
”。在Glassfish 4下调试时,我可以看到创建了一个名为
MyEJB$proxy$\u$$\ uWeld$EnterpriseProxy$
的代理子类(以便为EJB提供JavaEE容器服务)

我试图弄清楚这些代理子类是如何实现的。是否有代理实现调用的标准JavaEESPI来划分事务?或者这只是通过特定于容器的内部API实现的


(我提出这个问题的动机是为了实现一个可移植的CDI扩展,以便在JavaEE上下文中实现真正的POJO和OO编程。)

代理实现是由
ProxyFactory
类创建的。你可以看看来源

代理类基本上如下所示:

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

加上很多额外的魔法。也许你可以从中了解一些细节。

谢谢!这可能正是我所需要的;一旦我有时间了解详细信息,我将稍后再报告。ProxyFactory类和Weld github repo中的其他类包含答案,即使很难找到具体内容。依赖项的注入我已经知道怎么做了。现在的挑战是找出要调用哪些Weld方法来应用会话Bean服务(事务等)。