web-dev-qa-db-fra.com

Délai d'expiration de la transaction Weblogic: comment définir dans la console d'administration dans WebLogic AS 8.1

Je fais face à l'exception suivante:
weblogic.transaction.internal.TimedOutException: la transaction a expiré après 300 secondes

cela est défini dans le bean EJB de session sans état en tant que javax.transaction.UserTransaction jtaTransaction.setTransactionTimeout (300) mais je ne sais pas où, dans la console d'application, définir cette propriété.

29
yli

Après vous être connecté, sur la page d'accueil de la console du serveur, vous devriez voir 3 sections:

  • Informations et ressources
  • Configurations de domaine
  • Configurations des services

Sous Configurations des services il y a la sous-section Autres services. Cliquez sur le lien Configuration JTA sous Autres services. Le délai d'expiration de la transaction doit être le paramètre le plus élevé sur la page affichée, étiqueté Secondes d'expiration.

Weblogic Console screenshot

39
mikej

Eu le même problème, merci mikej.

Dans WLS 10.3, cette configuration se trouve dans le menu Services> JTA, ou si vous cliquez sur le nom de domaine (premier élément du menu) - sur les onglets Configuration> JTA .

alt text

29
Kirill Strizhak

Dans Weblogic 9.2 la configuration via la console est la suivante:

enter image description here

Je crois que la valeur par défaut était 60. N'oubliez pas d'utiliser Release Configuration après avoir modifié le champ.

3
Rafał

Le lien ci-dessus est plutôt obsolète. Pour WebLogic 12c, vous pouvez définir le délai d'expiration des transactions dans un descripteur de transaction pour chaque EJB dans le descripteur de déploiement WebLogic weblogic-ejb-jar.xml, voir Référence des descripteurs de déploiement weblogic-ejb-jar.xml .

Pour un message piloté, cela ressemble à ceci:

<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>
0
thmayr

C'est possible au niveau de l'application. Cliquez sur l'EJB sous le déploiement (comme Accueil>> Résumé des déploiements>). Cliquez sur l'onglet Configuration et il y a "Délai d'expiration de la transaction:"

0
Shashi

Si vous ne souhaitez pas modifier le délai d'expiration par défaut à l'échelle du domaine, votre meilleure option consiste à modifier le descripteur de déploiement en définissant l'attribut trans-timeout-seconds dans le weblogic-ejb-jar.xml - voir http: //docs.Oracle.com/cd/E11035_01/wls100/jta/trxejb.html

Cela remplace la valeur par défaut "Délai d'attente secondes", uniquement pour cet EJB spécifique, tout en laissant tous les autres EJB inchangés.

0
Pierluigi Vernetto