Jakarta ee 查找具有自定义注释的所有bean

Jakarta ee 查找具有自定义注释的所有bean,jakarta-ee,Jakarta Ee,我在Wildfly 10上使用Java EE,希望创建一个名为@WorkflowFinished的注释,它有一个方法,在发生某些事情时调用该方法 我希望能够有多个带有此注释的@无状态EJB,当我的业务服务完成时,它应该搜索带有此注释的所有EJB并对它们调用一个方法 我该怎么办?大概是这样的: public void process(SomeBean b){ b.doSomething(); List<?> listOfAnnotatedBeans = getAnnota

我在Wildfly 10上使用Java EE,希望创建一个名为
@WorkflowFinished
的注释,它有一个方法,在发生某些事情时调用该方法

我希望能够有多个带有此注释的
@无状态
EJB,当我的业务服务完成时,它应该搜索带有此注释的所有EJB并对它们调用一个方法

我该怎么办?大概是这样的:

public void process(SomeBean b){
   b.doSomething();

   List<?> listOfAnnotatedBeans = getAnnotatedEJBs(WorkflowFinished.class);

   for(? ejb : listOfAnnotatedBeans){
      ejb.someMethod(b);
   }
}
import com.some.WorkflowFinished;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.util.AnnotationLiteral;

.
.
.

@Inject
BeanManager beanManager;
for (Bean<?> bean : beans) {

Set<Bean<?>> beans = beanManager
    .getBeans(Object.class,new AnnotationLiteral<WorkflowFinished>() {});
公共作废流程(SomeBean b){
b、 doSomething();
List ListofAnotatedBeans=getAnnotatedEJBs(WorkflowFinished.class);
对于(?ejb:ListofAnotatedBeans){
ejb.someMethod(b);
}
}

如何在EJB上下文中执行此操作,而不是Spring

您可以使用特定注释或注释数组在当前“上下文”中迭代所有bean,如下所示:

public void process(SomeBean b){
   b.doSomething();

   List<?> listOfAnnotatedBeans = getAnnotatedEJBs(WorkflowFinished.class);

   for(? ejb : listOfAnnotatedBeans){
      ejb.someMethod(b);
   }
}
import com.some.WorkflowFinished;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.util.AnnotationLiteral;

.
.
.

@Inject
BeanManager beanManager;
for (Bean<?> bean : beans) {

Set<Bean<?>> beans = beanManager
    .getBeans(Object.class,new AnnotationLiteral<WorkflowFinished>() {});
import com.some.WorkflowFinished;
导入javax.enterprise.inject.spi.Bean;
导入javax.enterprise.inject.spi.BeanManager;
导入javax.enterprise.util.AnnotationLiteral;
.
.
.
@注入
BeanManager BeanManager;
for(Bean:Bean){

SetThat work OK,现在我如何从
Bean
获取我的类。如果我在for循环中将
Bean
转换到类实现的接口,我会得到一个异常,即使
Bean.getBeanClass()
返回正确的类。我如何从
Bean
获取实际的类实例?