18.4. Détection de connexion morte


18.4.1. Fermer les ressources de connexions mortes

Un noyau HornetQ ou une application cliente JMS doivent fermer leurs ressources avant de s'arrêter. Vous pouvez configurer votre application de faàon à ce qu'elle ferme ses ressources automatiquement en utilisant le bloc finally dans le code de l'application.
L'exemple suivant montre une application cliente qui ferme sa session et son usine de sessions dans le bloc finally : Copy to Clipboard Toggle word wrap
ServerLocator locator = null;
ClientSessionFactory sf = null;
ClientSession session = null;

try
{
   locator = HornetQClient.createServerLocatorWithoutHA(..);

   sf = locator.createClientSessionFactory();;

   session = sf.createSession(...);
   
   ... do some operations with the session...
}

finally
{
   if (session != null)
   {
      session.close();
   }
   
   if (sf != null)
   {
      sf.close();
   }

   if(locator != null)
   {
      locator.close();
   }
}
L'exemple suivant montre une application cliente JMS qui ferme sa session et son usine de sessions dans le bloc finally : Copy to Clipboard Toggle word wrap
Connection jmsConnection = null;

try
{
   ConnectionFactory jmsConnectionFactory = HornetQJMSClient.createConnectionFactoryWithoutHA(...);

   jmsConnection = jmsConnectionFactory.createConnection();

   ... do some operations with the connection...
}
finally
{
   if (connection != null)
   {
      connection.close();
   }
}
Utilisation du paramètre TTL (Connection Time to Live)

Le paramètre connection-ttl détermine la période pendant laquelle le serveur conserve la connexion vivante lorsqu'il ne reçoit pas de données, ni de paquets de ping du client. Ce paramètre garantit que les ressources de serveur mortes, comme les anciennes sessions, soient soutenues plus longtemps, permettant ainsi aux clients de se reconnecter lorsque qu'une connexion de réseau interrompue est ravivée.

Vous pouvez définir la connexion TTL pour les clients JMS en indiquant le paramètre connexion-ttl dans l'instance HornetQConnectionFactory. Si vous déployez des instances de fabrique de connexions JMS directement dans JNDI, vous pouvez définir le paramètre connection-ttl dans les fichiers de configuration de serveur standalone.xml et domain.xml.
La valeur par défaut du paramètre connection-ttl est 60000 millisecondes. Si vous n'avez pas besoin de clients pour spécifier leur propre connexion TTL ; vous pouvez définir le paramètre connection-ttl-override dans les fichiers de configuration du serveur pour remplacer toutes les valeurs. Le paramètre connection-ttl-override est désactivée par défaut et a une valeur de -1.
Garbage Collection

HornetQ utilise garbage collection pour détecter et fermer les sessions qui ne sont pas explicitement fermées dans un bloc finally. Le serveur HornetQ consigne un avertissement semblable à l'avertissement ci-dessous avant de fermer les sessions :

Copy to Clipboard Toggle word wrap
[Finalizer] 20:14:43,244 WARNING [org.hornetq.core.client.impl.DelegatingSession]  I'm closing a ClientSession you left open. Please make sure you close all ClientSessions explicitly before let
ting them go out of scope!
[Finalizer] 20:14:43,244 WARNING [org.hornetq.core.client.impl.DelegatingSession]  The session you didn't close was created here:
java.lang.Exception
   at org.hornetq.core.client.impl.DelegatingSession.<init>(DelegatingSession.java:83)
   at org.acme.yourproject.YourClass (YourClass.java:666)
Le message de journal contient l'information sur la partie de code où la connexion JMS ou la session utilisateur ont été créées et n'ont pas été ferméespar la suite.

Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat, Inc.