ServiceLoader + EJB-инъекция

1

Я хотел бы знать, могу ли я объединить ServiceLoader с EJB и инъекцией из Java EE 6.

Представьте, что у меня есть интерфейс ServiceI который может быть реализован двумя EJB BeanA и BeanB.

Если я зарегистрирую эти два класса в MEAT-INF/services они будут создаваться на Java-пути, а не управляться контейнером приложений (например, при использовании @Inject). Это означает, что аннотации, такие как @Inject или @PostConstruct, не будут разрешены.

Возможно ли иметь что-то вроде ServiceLoader который позволит мне пройти через EJB beans, реализуя данный интерфейс и возвращая его на основе некоторых критериев?

Теги:
java-ee
ejb
jboss7.x
serviceloader

1 ответ

1
Лучший ответ

Я нашел решение.

Если оба компонента реализуют интерфейс Service вы можете сделать следующее:

@Inject
private javax.enterprise.inject.Instance.Instance<Service> services

services реализуют Iterator<Service> и позволят циклически перебирать все компоненты, реализующие интерфейс Service.

Затем вы можете выбрать одну из реализаций, основанную на некоторых критериях, и у вас есть эквивалент ServiceLoader для EJB!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню