JBoss AS7 @Inject bean进入阀门

时间:2014-03-28 16:53:42

标签: jboss cdi inject tomcat-valve

是否可以@Inject无状态会话bean进入AuthenticatorBase的子类?

我正在使用JBoss作为7.1.1。

我的代码如下所示:

...

public class myValve extends AuthenticatorBase {

    @Inject AuthController controller;

    //some code ...

}

使用控制器对象会导致NullPointerException

1 个答案:

答案 0 :(得分:1)

如果controller为null,则表示未注入myValve对象本身。

可以追溯地将现有对象添加到CDI上下文中,例如使用以下代码:

public <T> void addToCDI(T object) {
    BeanManager beanManager = BeanManagerProvider.getInstance().getBeanManager();
    AnnotatedType<T> annotatedType = beanManager.createAnnotatedType((Class<T>)bject.getClass());
    InjectionTarget<T> injectionTarget = beanManager.createInjectionTarget(annotatedType);
    CreationalContext<T> context = beanManager.createCreationalContext(null);
    injectionTarget.inject(object, context);
}

执行此代码后,已执行注射。