Weblogic Transaction Timeout:如何在WebLogic AS 8.1中的管理控制台中设置

时间:2009-08-20 15:56:40

标签: transactions weblogic

我面临以下例外:
weblogic.transaction.internal.TimedOutException:事务在300秒后超时

这是在无状态会话EJB Bean中设置的 javax.transaction.UserTransaction jtaTransaction.setTransactionTimeout(300) 但我无法弄清楚,在应用程序控制台中设置此属性的位置。

6 个答案:

答案 0 :(得分:39)

登录后,在Server Console的主页上,您应该看到3个部分:

  • 信息和资源
  • 域配置
  • 服务配置

服务配置下,有其他服务小节。点击其他服务下的 JTA配置链接。交易超时应为显示页面上的顶部设置,标记为超时秒

Weblogic Console screenshot

答案 1 :(得分:29)

有同样的问题,谢谢 mikej

在WLS 10.3中,可以在服务>中找到此配置。 JTA 菜单,或者如果您点击域名(菜单中的第一项) - 在配置> JTA 标签。

alt text

答案 2 :(得分:3)

在Weblogic 9.2 中,通过控制台进行的配置如下:

enter image description here

我认为默认值为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>