CDI Bean をマネージド クラスにのみ注入できます。Struts は独自のインスタンスを作成するため、Struts Bean はコンテナーで管理されません。
Struts に CDI Bean を注入できるプラグインがあるかどうかはわかりませんが、JNDI ツリーで Bean Manager を検索できます。
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 メソッドによって返される各 Bean に対して、Bean 参照を取得する必要があります
CreationalContext ctx = manager.createCreationalContext(bean);
MyClass myClass = manager.getReference(bean, MyClass.class, ctx);
よろしく