繁体   English   中英

CDI扩展,如何知道bean所属的应用程序名称

[英]CDI extension, how to know the Application name that a bean belongs to

我是CDI的新手,正在编写一个新的CDI便携式扩展。 我的CDI扩展程序将侦听CDI容器触发的事件。 我想知道是否有一种方法可以告诉一个类所属的应用程序名称,以及提供这些信息的事件是什么。

按应用程序,我的意思是部署在应用程序服务器上的Ear应用程序存档。 我的目标是创建一个扩展,以查看部署的应用程序,并为每个扩展程序在其某些类上添加注释。 每个应用程序类将具有唯一的注释。 例如,如果我们在应用程序服务器上部署了app1和app2。 我想创建一个扩展,以使用@ x1注释app1中包含的所有/某些类,并使用@ x2注释app2中的所有类,以此类推。

据我所知,在CDI中没有application概念。 只有bean archives 您可能能够确定-例如WAR1将与WAR2是不同的bean档案,而WAR2将与EAR / lib不同。

但是 ,我不能太强调这一点,在Weld和OWB(作为CDI实现)中,Bean存档概念的解释略有不同,因此坚持这一做法将使其变得不可移植(这可能无关紧要,因为除TomEE之外的所有服务器都使用Weld) 。 说实话,甚至要拥有一个bean档案,您可能必须依赖Weld API(而不仅仅是CDI)。

但是我认为找到另一种解决方法会更明智-为什么要尝试实现这一目标? 在不同档案中以不同的方式注释Bean有何收获? 因为@Nikos对类加载有好处。 EAR陷入了一个全新的高度,无论如何您都不会“看到”其他归档文件中的某些bean(按照Java EE伞式规范)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM