【问题标题】:How do I combine @Asynchronous and Weld/CDI Events and @Observes(during=TransactionPhase.AFTER_COMPLETION) in Glassfish 3.1如何在 Glassfish 3.1 中结合 @Asynchronous 和 Weld/CDI 事件以及 @Observes(during=TransactionPhase.AFTER_COMPLETION)
【发布时间】:2011-04-29 13:35:36
【问题描述】:

首先让我声明,以下代码示例在 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 论坛上寻求帮助,但到目前为止无济于事,尽管似乎还有其他人遇到了同样的问题:http://seamframework.org/Community/WeldUsers

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

【问题讨论】:

  • 可能是一个错误。尝试举报。
  • 也在 Seam/Weld 论坛上发布过,似乎没有人对此感兴趣,所以我在一周前将其提交给 Glassfish Bugtracker,我们将看看是否有任何结果。如果有人有类似的问题,这是跟踪器的 URL:java.net/jira/browse/GLASSFISH-16513
  • 我会直接向 Weld 报告。 Glashfish 使用 Weld 作为其 CDI 实现。
  • 自从这个线程存在以来已经有几年了。任何人都知道这个问题是否仍然存在于 GlassFish 4 中?
  • 刚发现阅读了迈克尔发布的 jira-link,这确实是在 Wield 1.1.2 和 GlassFish 3.2.1(构建 14+)中修复的错误。

标签: events asynchronous jakarta-ee cdi jboss-weld


【解决方案1】:

根据您作为对自己问题的评论发布的 link,这是在 Wield 1.1.2 和 GlassFish 3.1.2(内部版本 14+)中修复的错误。

免责声明:我将这个答案发布到一个古老的问题,以帮助 SO (StackOverflow) 摆脱未回答的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-15
    • 1970-01-01
    • 2013-10-08
    • 2013-05-01
    • 1970-01-01
    相关资源
    最近更新 更多