Я могу внедрить ваши компоненты CDI только в управляемые классы. Struts создает свои собственные экземпляры, поэтому bean-компоненты Struts не управляются контейнерами.
Я не знаю, есть ли в Struts плагин, способный вставлять бины CDI, но вы можете найти менеджер бинов в дереве JNDI.
public BeanManager getBeanManager() {
try {
Context jndiContext = new InitialContext();
return (BeanManager) jndiContext.lookup("java:comp/BeanManager");
} catch (NamingException e) {
// handle the exception
}
}
В вашем приложении вы можете использовать это:
BeanManager manager = BeanManagerUtil.getBeanManager();
manager.getBeans(MyClass.class);
Для каждого компонента, возвращаемого методом getBeans, необходимо получить ссылку на компонент
CreationalContext ctx = manager.createCreationalContext(bean);
MyClass myClass = manager.getReference(bean, MyClass.class, ctx);
Привет