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

时间:2017-06-28 18:36:15

标签: java cdi

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

应用程序我指的是部署在应用程序服务器上的ear应用程序归档文件。我的目标是创建一个扩展,查看部署的应用程序,并为每个应用程序添加一些注释。每个应用程序类都有一个唯一的注释。示例,如果我们在应用服务器上部署了app1和app2。我想创建一个扩展,使用@ x1注释app1中包含的所有/某些类,使用@ x2注释所有app2类,依此类推。

1 个答案:

答案 0 :(得分:0)

据我所知,CDI中没有<div class="your-block"> <label for="title">Title </label> <br /> <input id="title" type="text"/> </div> <div class="your-block"> <label for="firstname">firstname </label> <br /> <input id="firstname" type="text"/> </div> <div class="your-block"> <label for="surname">surname </label> <br /> <input id="surname" type="text"/> </div>的概念。只有application。您可能能够确定 - 例如WAR1将是一个与WAR2不同的bean存档,而WAR2又与EAR / lib不同。

但是,我不能强调这一点,在档案和OWB(作为CDI实施)中,bean档案概念的解释略有不同,因此坚持这一点会使得不可移植(这可能不会因为除了TomEE之外的所有服务器都使用Weld。说实话,即使拿到一个bean存档,你也可能不得不依赖Weld API(而不仅仅是CDI)。

但我认为找到另一种解决方法会更明智 - 为什么要尝试实现这一目标?在不同档案中以不同方式注释豆子有什么好处?因为@Nikos与类加载有很好的关系。 EAR存在一个全新的混乱局面,无论如何你都不会从其他档案中“看到”某些bean(根据Java EE保护规范)。