2011-05-11 111 views
0

我使用的WebLogic 11,內EJB3.0注射石英工作

我試圖做一個實現作業(org.quartz.job) 沒有成功的一個類中的ejb注射。

所以我想讓我的工作類作爲一個無狀態bean。這樣的:

@Stateless(mappedName = "StartSyncJob") 
@Local(
    { StartSyncJob.class }) 
public class StartSyncJob implements Job 
    ... 

,然後試圖將EJB注入再次裏面,但我得到異常:

blogic.ejb.container.compliance.ComplianceException:商業方法類java.lang.Object必須通知不被宣佈爲最終

猜我不能註釋一個實現作業接口的類。

任何其他想法我該怎麼做?

我的主要目標是從我的Job類中調用另一個部署中存在的無狀態bean。

回答

2

容器只能注入由容器創建/管理的東西。

Quartz實例化作業實例。

因此,兩者不能作爲一個框架一起玩。

您可以創建自己的Quartz的JobFactory類的實現來控制作業的實例 - 並且您的實現可以委託給其他的東西,比如容器。

另外,在你的工作中,你可以自己查找Stateless bean然後調用它。 Quartz附帶了一個EjbInvokerJob,它可以完成這個任務(在執行時調用一個配置的ejb)。

+0

你能告訴我一些EjbInvokerJob的例子嗎? – rayman 2011-05-11 14:59:42