2013-01-13 173 views
1

我試圖注入會話bean到另一個會話bean(在這種特殊情況下其相同的會話bean),然後我得到這個錯誤:會話bean注射CDI

org.jboss.weld.exceptions.UnsatisfiedResolutionException: WELD-001308 Unable to resolve any beans for Types: [interface com.windriver.dsm.labmanagement.ejb.stub.GeneralSession]; Bindings: [@javax.enterprise.inject.New(value=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();。誰能幫忙?

+0

您沒有在您的問題中指定您正在使用的編程語言。無論如何猜測,使用適當的編程語言添加標籤總是一種很好的形式。考慮編輯你的問題,並這樣做。 – 2013-01-13 17:10:20

回答

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; 

    // ... 
} 
+0

試過了,沒有工作 - 我得到了同樣的錯誤。 – user1960555

0

遠程接口不是豆類型,這是有效的注射,根據WebBeans的規格。因此,您必須爲字段類型使用本地接口(在這種情況下爲GeneralSessionLocal)(並且您還應該實現此接口,否則它也不是EJB的Bean類型)。

+0

沒有幫助... – user1960555

+0

你是什麼意思與「不幫助」?你有什麼嘗試? – dunni