我面临以下例外:
weblogic.transaction.internal.TimedOutException:事务在300秒后超时
这是在无状态会话EJB Bean中设置的 javax.transaction.UserTransaction jtaTransaction.setTransactionTimeout(300) 但我无法弄清楚,在应用程序控制台中设置此属性的位置。
答案 0 :(得分:39)
登录后,在Server Console的主页上,您应该看到3个部分:
在服务配置下,有其他服务小节。点击其他服务下的 JTA配置链接。交易超时应为显示页面上的顶部设置,标记为超时秒。
答案 1 :(得分:29)
有同样的问题,谢谢 mikej 。
在WLS 10.3中,可以在服务>中找到此配置。 JTA 菜单,或者如果您点击域名(菜单中的第一项) - 在配置> JTA 标签。
答案 2 :(得分:3)
在Weblogic 9.2 中,通过控制台进行的配置如下:
我认为默认值为60
。
编辑字段后,请务必使用Release Configuration
按钮。
答案 3 :(得分:0)
在应用程序级别可能。单击部署下的EJB(如主页>>部署摘要>)。单击配置选项卡,有“事务超时:”
答案 4 :(得分:0)
如果您不想更改域范围的默认超时,最好的选择是通过在weblogic-ejb-jar.xml中设置trans-timeout-seconds属性来更改部署描述符 - 请参阅{ {3}}
这会超越" Timeout Seconds" default,仅适用于此特定EJB,同时保持所有其他EJB不受影响。
答案 5 :(得分:0)
上面的链接已经过时了。对于WebLogic 12c,您可以在WebLogic部署描述符weblogic-ejb-jar.xml中为每个EJB的事务描述符中定义事务时间,请参阅weblogic-ejb-jar.xml Deployment Descriptor Reference。
对于消息驱动,它看起来像这样:
<weblogic-enterprise-bean>
<ejb-name>TestMessageBeanLow</ejb-name>
<message-driven-descriptor>
<pool>
<max-beans-in-free-pool>1</max-beans-in-free-pool>
</pool>
<destination-jndi-name>jms/ActiveMQ/TestRequestQueue_LOW</destination-jndi-name>
<connection-factory-jndi-name>jms/ActiveMQ/TestConnectionFactory</connection-factory-jndi-name>
</message-driven-descriptor>
<transaction-descriptor>
<trans-timeout-seconds>60</trans-timeout-seconds>
</transaction-descriptor>
<resource-description>
<res-ref-name>jms/ConnectionFactory</res-ref-name>
<jndi-name>jms/ActiveMQ/TestConnectionFactory</jndi-name>
</resource-description>
</weblogic-enterprise-bean>