Найти все бобы, которые имеют аннотации

Обновить

December 2018

Просмотры

521 раз

3

Я использую Java EE на Wildfly 10, и вы хотите создать аннотацию с именем , @WorkflowFinishedкоторый имеет метод , который он вызывается , когда что - то происходит.

Я хочу , чтобы иметь возможность иметь несколько @StatelessEJBs, которые аннотированные с этим, и когда заканчивает мои бизнес - услуги он должен искать все EJBs с этой аннотацией и вызвать метод на них.

Как я могу идти об этом? Что-то вроде этого:

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

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

   for(? ejb : listOfAnnotatedBeans){
      ejb.someMethod(b);
   }
}

Как это сделать в контексте EJB, не весна ?

1 ответы

3

Вы можете перебрать все бобы в текущем контексте «» с конкретной аннотацией или массивом аннотаций с чем-то вроде этого:

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>() {});

Так что, вероятно, является хорошей основой для вашего метода getAnnotatedEJBs.

Имейте в виду, что вам необходимо установить политику хранения аннотации к RUNTIME.

Связанные вопросы