【问题标题】:How to set timeout to an EJB-Method (in stateless bean)如何将超时设置为 EJB 方法(在无状态 bean 中)
【发布时间】:2014-10-26 17:26:00
【问题描述】:

我有一个无状态会话 bean,一个方法需要 6 分钟才能返回结果,因为我得到了“超时”异常。我注意到超时已经在 Wildfly Standalone.xml 或 persistence.xml 中设置了

<session-bean>
   <stateful default-access-timeout="12000" cache-ref="simple" passivation-disabled-cache-ref="simple"/>
   <singleton default-access-timeout="12000"/>
</session-bean>

<property name="javax.persistence.query.timeout" value="120000" />

但它仅适用于有状态的 bean。如何将超时设置为无状态 bean 中的一种方法?

【问题讨论】:

    标签: hibernate timeout ejb wildfly


    【解决方案1】:

    我尝试了以下注释,它似乎工作:

        @AccessTimeout(value = 15, unit = TimeUnit.MINUTES)
        @Override
        public void myMethod() {
            //do something
        }
    

    【讨论】:

    • 这听起来很令人惊讶。 Javadoc 声明“此注释可以应用于 有状态会话 bean 或使用容器管理并发的 单例会话 bean。默认情况下,允许客户端进行并发调用到有状态会话对象,并且容器需要序列化此类并发请求。AccessTimeout 注释用于指定在 bean 实例已经在处理不同请求的情况下,有状态会话 bean 请求应该阻塞的时间量。"
    • 这个答案似乎是错误的。 @AccessTimeout 是关于等待时间的,因为有状态 bean 的方法默认是同步的。 openejb.apache.org/examples-trunk/access-timeout
    猜你喜欢
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多