会话bean注入CDI

时间:2013-01-13 17:08:28

标签: java dependency-injection cdi jboss-weld

我正在尝试将会话bean注入另一个会话bean(在这种特殊情况下它是相同的会话bean),我收到此错误:

  

org.jboss.weld.exceptions.UnsatisfiedResolutionException:WELD-001308   无法解析类型的任何bean:[interface   com.windriver.dsm.labmanagement.ejb.stub.GeneralSession];绑定:   [@ javax.enterprise.inject.New(值= com.windriver.dsm.labmanagement.ejb.stub.GeneralSession.class)]

这就是我尝试这样做的方式:

@Stateless
@TransactionManagement(value=TransactionManagementType.CONTAINER)
@TransactionAttribute(value=TransactionAttributeType.REQUIRED)
@Local(GeneralSessionLocal.class)
@Remote(GeneralSession.class)
public class GeneralSessionBean extends CRUDSessionBase
{
    @Inject @New
    Instance<GeneralSession> generalSessionInstance;

    // ...
}

我致电generalSessionInstance.get();时收到此错误消息。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

尝试指定bean类(GeneralSessionBean)实现GeneralSession。

在你的情况下:

@Stateless
@TransactionManagement(value=TransactionManagementType.CONTAINER)
@TransactionAttribute(value=TransactionAttributeType.REQUIRED)
@Local(GeneralSessionLocal.class)
@Remote(GeneralSession.class)
public class GeneralSessionBean extends CRUDSessionBase implements GeneralSession
{
    @Inject @New
    Instance<GeneralSession> generalSessionInstance;

    // ...
}

答案 1 :(得分:0)

根据WebBeans规范,远程接口不是bean类型,它对注入有效。因此,您必须使用本地接口(在本例中为GeneralSessionLocal)作为字段类型(并且您还应该实现此接口,因为否则它也不是EJB的bean类型。)

相关问题