我在Wildfly 10上使用Java EE,并希望创建一个名为的注释@WorkflowFinished,该注释具有发生某种情况时调用的方法。
我希望能够有多个@Stateless带有此注释的EJB,并且当我的业务服务完成时,应该使用此注释搜索所有EJB并在其上调用方法。
我该怎么办?像这样:
public void process(SomeBean b){
b.doSomething();
List<?> listOfAnnotatedBeans = getAnnotatedEJBs(WorkflowFinished.class);
for(? ejb : listOfAnnotatedBeans){
ejb.someMethod(b);
}
}
Run Code Online (Sandbox Code Playgroud)
我该如何在EJB上下文而不是Spring中做到这一点?
您可以遍历当前“上下文”中具有特定注释或具有以下注释的数组的所有bean:
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>() {});
Run Code Online (Sandbox Code Playgroud)
因此,这可能是您的getAnnotatedEJBs方法的良好基础。
请注意,您需要将注释保留策略设置为RUNTIME。
| 归档时间: |
|
| 查看次数: |
734 次 |
| 最近记录: |