6

最初に、次のコード例は GF 3.0.1 で問題なく動作したことを述べさせてください。問題は、GF 3.1 に切り替えたときに始まりました。

メソッドを使用しています

@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

Weld Forums で助けを求めようとしましたが、これまでのところ役に立ちませんでしたが、同じ問題を抱えている人が他にもいるようです: http://seamframework.org/Community/WeldUsers

少なくとも知りたいのですが、これはバグですか、それとも望んでいますか。これは、Weld が非同期メソッド/AFTER_COMPLETION 属性で機能しないことを意味しますか? これが GF 3.0.1 で機能したのはなぜですか? GF 3.1 でこれを機能させることができた人はいますか?

4

1 に答える 1

3

あなた自身の質問へのコメントとして投稿したリンクによると、これは Wield 1.1.2 および GlassFish 3.1.2 (ビルド 14+) で修正されたバグです。

免責事項:SO(StackOverflow)が未回答の質問を取り除くのを助けるために、この回答を古くからの質問に投稿しました。

于 2013-08-13T21:12:59.730 に答える