首先讓我說明下面的代碼示例在GF 3.0.1中工作得很好。當我們切換到GF 3.1時,麻煩就開始了。如何在Glassfish 3.1中結合@Asynchronous和Weld/CDI事件和@Observes(在= TransactionPhase.AFTER_COMPLETION期間)
我使用的方法
@Asynchronous
public void executeFlowStep(
@Observes(during=TransactionPhase.AFTER_COMPLETION)
ExecuteFlowStepEvent executeFlowStepEvent) {
由於開關,每當這個應該收到ExecuteFlowStepEvent
我收到以下錯誤信息:
WELD-000401 Failure while notifying an observer of event [package].ExecuteFlowStepEvent
沒有進一步的信息或堆棧跟蹤中給出。 它工作,如果我刪除@Asynchronous
註釋和AFTER_COMPLETION
屬性,當然這打破了程序,因爲我依賴於AFTER_COMPLETION
時間。
我試着問了在焊接論壇上尋求幫助,至今無果,雖然似乎有其他人同樣的問題:http://seamframework.org/Community/WeldUsers
我至少想知道: 這是一個錯誤,或者是這個想要的。這是否意味着Weld不適用於異步方法/ AFTER_COMPLETION屬性?爲什麼在GF 3.0.1中工作? 有沒有人設法使這項工作在GF 3.1?
可能是一個錯誤。嘗試報告。 – Bozho 2011-04-29 13:59:20
在Seam/Weld論壇上也發佈了它,似乎沒有人對此感興趣,因此我在一週前將它提交給了Glassfish Bugtracker,我們將看看是否有任何結果。如果任何人有類似的問題,這是跟蹤器的URL:http://java.net/jira/browse/GLASSFISH-16513 – Michael 2011-05-09 14:13:18
我會直接向Weld報告。 Glashfish使用Weld作爲其CDI實現。 – Bozho 2011-05-09 14:30:05