Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Websphere运行时事务超时问题_Java_Spring_Jboss_Transactions_Websphere - Fatal编程技术网

Java Websphere运行时事务超时问题

Java Websphere运行时事务超时问题,java,spring,jboss,transactions,websphere,Java,Spring,Jboss,Transactions,Websphere,我们使用两个应用服务器,Jboss和Websphere(v8.5.5.11)。 我们在本地平台上使用jboss,但开发服务器使用Websphere。我想在运行时更改事务超时。在jboss上可以正常工作,但Websphere不能。如何设置Websphere线程的事务超时 JtaTransactionManager tm = (JtaTransactionManager) SpringApplicationContext.getContext().getBean(PlatformTransacti

我们使用两个应用服务器,Jboss和Websphere(v8.5.5.11)。 我们在本地平台上使用jboss,但开发服务器使用Websphere。我想在运行时更改事务超时。在jboss上可以正常工作,但Websphere不能。如何设置Websphere线程的事务超时

JtaTransactionManager  tm = (JtaTransactionManager) SpringApplicationContext.getContext().getBean(PlatformTransactionManager.class);
tm.getUserTransaction().setTransactionTimeout(timeout);

下面是获取WebSphere Application Server事务管理器以设置线程上的事务超时(以秒为单位)的示例

com.ibm.tx.jta.TransactionManagerFactory.getTransactionManager().setTransactionTimeout(timeout);

我添加了这个依赖项并尝试了这段代码,但不起作用,我的流程是这样的,每个soap请求都接收一个bean,这个bean知道什么是运行类方法的请求头。并在运行时设置事务时间。我想更改每个方法动态运行的超时时间。上面的代码行在jboss上工作,但在websphere上不工作。调用此代码时事务是否已经启动?如果是这样,它将不会有帮助-它将只应用于线程上的下一个事务。我们在调用此代码之前定义事务超时。重要的一点是,我们使用CMT,而不是BTM,这可能有助于您的adviceOk,这是有意义的。那么容器可能已经启动了事务,因此调用setTransactionTimeout API太晚,无法提供帮助。对于事务超时是否可以追溯到现有事务,这里的应用程序服务器之间必须存在差异。您是否可以切换到应用程序/bean管理的事务UserTransaction tran=InitialContext.doLookup(“java:comp/UserTransaction”);trans.setTransactionTimeout(超时);tran.begin()。。。trans.commit()```该项目的主要逻辑是充当网关。根据soap附带的请求,在运行时对单个bean调用某些方法。我们在运行时为调用的方法确定事务超时。我们无法确定BMT的风险。所以我们必须使用CMT。我们可以对JBOSS TJA.getUserTransaction.setTimeout()执行此操作。我试着使用你说的Was代码,但超时不起作用