0

是否可以将@Inject无状态会话 bean 转换为 的子类AuthenticatorBase

我使用 JBoss 作为 7.1.1。

我的代码如下所示:

...

public class myValve extends AuthenticatorBase {

    @Inject AuthController controller;

    //some code ...

}

使用控制器对象会导致NullPointerException.

4

1 回答 1

1

如果控制器为空,则意味着 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);
}

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

于 2014-03-28T20:30:39.463 回答