私は次の例外に直面しています:
weblogic.transaction.internal.TimedOutException:300秒後にトランザクションがタイムアウトしました
これは、ステートレスセッションEJB Bean内でjavax.transaction.UserTransaction jtaTransaction.setTransactionTimeout(300)として設定されますが、アプリケーションコンソールのどこでこのプロパティを設定するのかわかりません。
ログインすると、サーバーコンソールのホームページに3つのセクションが表示されます。
サービス構成の下にサブセクションその他のサービスがあります。 その他のサービスの下のJTA設定リンクをクリックします。トランザクションタイムアウトは、Timeout Secondsというラベルの付いた表示ページの一番上の設定にする必要があります。
同じ問題を抱えていた、ありがとうmikej。
WLS 10.3では、この構成はサービス> JTAメニューで見つけることができます。または、ドメイン名(メニューの最初の項目)をクリックした場合-構成> JTAタブ。
Weblogic 9.2では、コンソール経由の設定は次のとおりです。
デフォルト値は60
だったと思います。フィールドを編集した後は、必ずRelease Configuration
ボタンを使用してください。
上記のリンクはかなり古くなっています。 WebLogic 12cでは、WebLogicデプロイメント記述子weblogic-ejb-jar.xmlで各EJBのトランザクション記述子にトランザクションタイムアウトを定義できます。 weblogic-ejb-jar.xmlデプロイメント記述子リファレンス を参照してください。
メッセージ駆動型の場合、次のようになります。
<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>
アプリケーションレベルで可能です。デプロイメントの下のEJBをクリックします([ホーム]> [デプロイメントの概要]など)。 [構成]タブをクリックすると、[トランザクションタイムアウト:]があります。
ドメイン全体のデフォルトタイムアウトを変更したくない場合、weblogic-ejb-jar.xmlのtrans-timeout-seconds属性を設定してデプロイメント記述子を変更するのが最良のオプションです- http: //docs.Oracle.com/cd/E11035_01/wls100/jta/trxejb.html
これは、この特定のEJBに対してのみ「タイムアウト秒」のデフォルトをオーバーライドしますが、他のすべてのEJBは影響を受けません。