Обычно плохая идея выполнять какую-либо логику в конструкторе (не только на EJB-площадке). Используйте @PostConstruct
вместо:
@PostConstruct
public init(){
listOfRoles = roleFacade.getListOfRoles();
listChoosenRoles = new ArrayList();
listOfDualRoles = new DualListModel<Roles>(listOfRoles, listChoosenRoles);
}
С этой аннотацией контейнер сначала создает экземпляр объекта EJB, JVM запускает (пустой) конструктор, контейнер через отражение вводит зависимости, а когда все готово, вызывает все методы, отмеченные @PostConstruct
, в неуказанном порядке. Теперь EJB готов обслуживать запросы.
Я думаю, что некоторые контейнеры / более новые спецификации EJB допускают внедрение конструктора, но я никогда не использовал его.