TransactionTimeout注释似乎不会覆盖JBoss 5.x上的全局seetting

时间:2012-09-26 09:27:28

标签: deployment jboss transactions ejb-3.0

我在JBoss 5.1上部署了基于EJB 3.0的应用程序。对于我们的大多数EJB方法,在属性 transactionTimeout 上的$ {JBOSS_HOME} /server/default/deploy/transaction-jboss-beans.xml中配置的事务超时的全局值都可以。但是,我们有一些方法,其持续时间预计会比那里设定的值长得多。我们想专门为这些方法覆盖超时。

我们尝试将其作为explained here,即让全局值具有合理的值,然后尝试通过jboss.xml中的部署描述符或通过方法中的jboss特定注释专门覆盖某些方法。

这些方法在无状态会话bean容器内管理。我甚至强迫这些方法创建一个新的事务,因为在某些地方,只有在那个时刻创建了事务时,注释才有效。

../..
import org.jboss.ejb3.annotation.TransactionTimeout;
../..
    @Override
        @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
        @TransactionTimeout(900)
        public FileInfoObject setFileVariable(Desk desk, String variable, int maxBytes,
                String mimeAccepted, FileWithStream file)
                throws ParticipationFinishedException, PersistenceException {

../..
        }

预期的行为是,对于此方法,超时应为900。

实际行为非常好,如下:

  • 如果全局超时>方法超时然后应用方法超时
  • 如果全局超时< =方法超时,则应用全局超时

似乎所应用的超时是两者的最小值,如果我们想要的是延长覆盖全局值的特定方法的超时,那么这是一个真正的问题。

有什么想法吗?我错过了什么吗?

0 个答案:

没有答案