我在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。
实际行为非常好,如下:
似乎所应用的超时是两者的最小值,如果我们想要的是延长覆盖全局值的特定方法的超时,那么这是一个真正的问题。
有什么想法吗?我错过了什么吗?