Jsf 2 JSF2支持Bean无法获取对@Inject';会话Bean

Jsf 2 JSF2支持Bean无法获取对@Inject';会话Bean,jsf-2,jboss7.x,ejb-3.1,Jsf 2,Jboss7.x,Ejb 3.1,我有下面的JSF2控制器/bb,我已经注入了一个会话bean。但是,至少它无法获得对EJB本地会话Bean的引用 JSF2支持Bean: @ManagedBean @Named("scorecardBackingBean") @SessionScoped public class ScorecardBackingBean implements Serializable { private static final long serialVersionUID = 7231502115861

我有下面的JSF2控制器/bb,我已经注入了一个会话bean。但是,至少它无法获得对EJB本地会话Bean的引用

JSF2支持Bean:

@ManagedBean
@Named("scorecardBackingBean")
@SessionScoped
public class ScorecardBackingBean implements Serializable {
    private static final long serialVersionUID = 7231502115861150753L;

    @Inject
    private IScorecardServiceBean scorecardServiceBean;

    @PostConstruct
    private void prepareMainLineChart() {
        this.mainLineChart = new CartesianChartModel();


         List<OrderVolume> orderVolumeList = this.scorecardServiceBean
         .getOrderVolume(); //ERROR here, scorecardServiceBean is null.
}
EJB接口:

@Local
public interface IScorecardServiceBean {
    List<OrderVolume> getOrderVolume();
}
@Local
公共接口IScorecardServiceBean{
列出getOrderVolume();
}
遇到错误:

java.lang.IllegalStateException: JBAS011048: Failed to construct component instance
    at org.jboss.as.ee.component.BasicComponent.constructComponentInstance(BasicComponent.java:163)
    at org.jboss.as.ee.component.BasicComponent.createInstance(BasicComponent.java:95)
    at org.jboss.as.web.deployment.component.WebComponentInstantiator$2.<init>(WebComponentInstantiator.java:96)
    at org.jboss.as.web.deployment.component.WebComponentInstantiator.initializeInstance(WebComponentInstantiator.java:94)
.................
Caused by: java.lang.NullPointerException
    at sg.java.bus.controller.scorecard.ScorecardBackingBean.prepareMainLineChart(ScorecardBackingBean.java:79)
    at sg.java.bus.controller.scorecard.ScorecardBackingBean.init(ScorecardBackingBean.java:61)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.jboss.as.ee.component.ManagedReferenceLifecycleMethodInterceptorFactory$ManagedReferenceLifecycleMethodInterceptor.processInvocation(ManagedReferenceLifecycleMethodInterceptorFactory.java:130)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
    at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
    at org.jboss.as.ee.component.ManagedReferenceInterceptorFactory$ManagedReferenceInterceptor.processInvocation(ManagedReferenceInterceptorFactory.java:106)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
    at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
    at org.jboss.as.ee.component.TCCLInterceptor.processInvocation(TCCLInterceptor.java:45)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
    at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
    at org.jboss.as.ee.component.BasicComponent.constructComponentInstance(BasicComponent.java:161)
    ... 52 more
java.lang.IllegalStateException:JBAS011048:构造组件实例失败
位于org.jboss.as.ee.component.BasicComponent.constructComponentInstance(BasicComponent.java:163)
位于org.jboss.as.ee.component.BasicComponent.createInstance(BasicComponent.java:95)
位于org.jboss.as.web.deployment.component.WebComponentInstantiator$2。(WebComponentInstantiator.java:96)
位于org.jboss.as.web.deployment.component.WebComponentInstantiator.initializeInstance(WebComponentInstantiator.java:94)
.................
原因:java.lang.NullPointerException
位于sg.java.bus.controller.scorecard.ScorecardBackingBean.PrepareMaineChart(ScorecardBackingBean.java:79)
位于sg.java.bus.controller.scorecard.ScorecardBackingBean.init(ScorecardBackingBean.java:61)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中
位于java.lang.reflect.Method.invoke(Method.java:597)
位于org.jboss.as.ee.component.ManagedReferenceLifecycleMethodInterceptorFactory$ManagedReferenceLifecycleMethodInterceptor.processInvocation(ManagedReferenceLifecycleMethodInterceptorFactory.java:130)
在org.jboss.invocation.InterceptorContext.proceduce(InterceptorContext.java:288)
位于org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53)
在org.jboss.invocation.InterceptorContext.proceduce(InterceptorContext.java:288)
位于org.jboss.as.ee.component.ManagedReferenceInterceptorFactory$ManagedReferenceInterceptor.processInvocation(ManagedReferenceInterceptorFactory.java:106)
在org.jboss.invocation.InterceptorContext.proceduce(InterceptorContext.java:288)
位于org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53)
在org.jboss.invocation.InterceptorContext.proceduce(InterceptorContext.java:288)
位于org.jboss.as.ee.component.TCCLInterceptor.processInvocation(TCCLInterceptor.java:45)
在org.jboss.invocation.InterceptorContext.proceduce(InterceptorContext.java:288)
位于org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
位于org.jboss.as.ee.component.BasicComponent.constructComponentInstance(BasicComponent.java:161)
... 52多

您正在混合CDI托管bean(
@Named
)和JSF托管bean(
@ManagedBean
)。这些注释中只有一个是必需的

如果选择其中一个,请确保导入正确的范围类

CDI:

JSF:

有关背景信息,请参见以下相关问题和答案:


您正在混合CDI托管bean(
@Named
)和JSF托管bean(
@ManagedBean
)。这些注释中只有一个是必需的

如果选择其中一个,请确保导入正确的范围类

CDI:

JSF:

有关背景信息,请参见以下相关问题和答案:


谢谢你,马特。我去掉了冗余的“@Named”(“scorecardBackingBean”)”,但注入的资源是一个EJB会话bean。它仍然给出了相同的esception。我已经从@Inject更改为EJB,并且工作正常。我需要检查一下,为什么。但是非常感谢你,真奇怪。两种注射方法都应该有效(从理论上讲),也许你会在我添加到答案的第三个链接中得到一些解释。(我刚刚查看了我的最新项目,我用
@Inject
来表示@Named bean,用@EJB来表示EJB)。是的,事实上我有两个项目,一个使用Inject,一个使用EJB,不同的是,一个由Maven build管理,一个是定制EAR'ed,这一个是Maven。谢谢Matt。我去掉了冗余的“@Named”(“scorecardBackingBean”)”,但注入的资源是一个EJB会话bean。它仍然给出了相同的esception。我已经从@Inject更改为EJB,并且工作正常。我需要检查一下,为什么。但是非常感谢你,真奇怪。两种注射方法都应该有效(从理论上讲),也许你会在我添加到答案的第三个链接中得到一些解释。(我刚刚查看了我的最新项目,我用
@Inject
来表示@Named bean,用@EJB来表示EJB)。是的,事实上我有两个项目,一个使用Inject,一个使用EJB,不同的是,一个由Maven build管理,一个是定制EAR'ed,这一个是Maven。
java.lang.IllegalStateException: JBAS011048: Failed to construct component instance
    at org.jboss.as.ee.component.BasicComponent.constructComponentInstance(BasicComponent.java:163)
    at org.jboss.as.ee.component.BasicComponent.createInstance(BasicComponent.java:95)
    at org.jboss.as.web.deployment.component.WebComponentInstantiator$2.<init>(WebComponentInstantiator.java:96)
    at org.jboss.as.web.deployment.component.WebComponentInstantiator.initializeInstance(WebComponentInstantiator.java:94)
.................
Caused by: java.lang.NullPointerException
    at sg.java.bus.controller.scorecard.ScorecardBackingBean.prepareMainLineChart(ScorecardBackingBean.java:79)
    at sg.java.bus.controller.scorecard.ScorecardBackingBean.init(ScorecardBackingBean.java:61)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.jboss.as.ee.component.ManagedReferenceLifecycleMethodInterceptorFactory$ManagedReferenceLifecycleMethodInterceptor.processInvocation(ManagedReferenceLifecycleMethodInterceptorFactory.java:130)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
    at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
    at org.jboss.as.ee.component.ManagedReferenceInterceptorFactory$ManagedReferenceInterceptor.processInvocation(ManagedReferenceInterceptorFactory.java:106)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
    at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
    at org.jboss.as.ee.component.TCCLInterceptor.processInvocation(TCCLInterceptor.java:45)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
    at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
    at org.jboss.as.ee.component.BasicComponent.constructComponentInstance(BasicComponent.java:161)
    ... 52 more