小编Mic*_*ael的帖子

如何在Glassfish 3.1中组合@Asynchronous和Weld/CDI事件以及@Observes(在= TransactionPhase.AFTER_COMPLETION期间)

首先让我说,下面的代码示例在GF 3.0.1中运行得很好.当我们切换到GF 3.1时,麻烦就开始了.

我正在使用一种方法

@Asynchronous
public void executeFlowStep(
    @Observes(during=TransactionPhase.AFTER_COMPLETION) 
    ExecuteFlowStepEvent executeFlowStepEvent) { 
Run Code Online (Sandbox Code Playgroud)

自从切换,每当这应该收到ExecuteFlowStepEvent我得到以下错误信息:

WELD-000401 Failure while notifying an observer of event [package].ExecuteFlowStepEvent
Run Code Online (Sandbox Code Playgroud)

没有给出进一步的信息或堆栈跟踪.如果我删除@Asynchronous注释和AFTER_COMPLETION属性,它可以工作,当然这会打破程序,因为我依赖于AFTER_COMPLETION时间.

我试图在Weld论坛上寻求帮助,到目前为止无济于事,尽管似乎还有其他人有同样的问题:http://seamframework.org/Community/WeldUsers

我至少想知道:这是一个错误,还是这个想要的.这是否意味着Weld不能与Asynchronous方法/ AFTER_COMPLETION属性一起使用?为什么这在GF 3.0.1中有效?有没有人设法在GF 3.1上完成这项工作?

events asynchronous java-ee cdi jboss-weld

6
推荐指数
1
解决办法
2108
查看次数

标签 统计

asynchronous ×1

cdi ×1

events ×1

java-ee ×1

jboss-weld ×1