如何使用CDI可移植扩展将限定符添加到捕获其EJB名称的会话Bean?

时间:2014-02-01 01:04:53

标签: ejb cdi

总体情况:我最终希望只有一个EJB名称能够在.ear文件中查找该EJB的业务接口视图,而无需知道其模块名称 - 无论如何换句话说,它可以打包在哪个.jar文件中,或者某个部署描述符中可能提供的module-name。 (目前,java:app JNDI名称要求您知道EJB名称相对于哪个EJB模块;对我来说这不是首发。)

由于便携式JNDI名称无法解决我的问题,我转向CDI。

在我看来,如果我可以到达一个地方,我可以向BeanManager询问特定类型且具有特定名称的CDI bean (不,我可以为此使用@Named;我不控制有问题的EJB的创作,然后我可以有效地得到我想要的东西,前提是所有这些bean显然都部署在bean档案中。细

要获取 here ,我可以使用CDI便携式扩展来观察容器的生命周期。我知道了。

然后,我希望观察到两个有趣的事件,我对观察期间的变化感兴趣。一个是ProcessAnnotatedType,另一个是ProcessSessionBean

问题是在ProcessAnnotatedType期间,我想添加一个本地注释(EJBNamed或其他类似的东西;尚未编写它),捕获EJB的“官方”{{ 1}}。这个名称当然可以来自至少三个不同的元数据源,其中EJB和Java EE 6规范确切地指示哪些优先于哪些。但是在ejb-name时,该信息尚未公布。

ProcessAnnotatedType期间,我当然可以得到豆子的名字,但是我的理解是,到目前为止已经太晚了 - 因为我的ProcessSessionBean阶段已经过去了,似乎是我的机会修改事情已经过去了。

首先,这是正确的吗?假设在ProcessAnnotatedType时间我使用我自己的限定符来装饰ProcessAnnotatedType,这是可变的。进一步假设,在AnnotatedType时我得到带注释的类型并添加我的ProcessSessionBean注释。

在我看来这应该是合法的,只要我不希望容器实际上任何带有该注释的东西,我不这样做。我希望以后能够要求@EJBNamed使用给定类型的限定符。

那么:后续的CDI可移植扩展观察器方法是否有可能在先前的可移植扩展观察器方法执行期间使用注释进行清理?

0 个答案:

没有答案