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

Ivá*_*ván 6 deployment jboss transactions ejb-3.0

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

我们已经尝试按照这里的说明进行操作,即让全局值具有合理的值,然后尝试通过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 {

../..
        }
Run Code Online (Sandbox Code Playgroud)

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

实际行为非常好,如下:

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

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

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