|
Notes de mise à jour de Sun ONE Message Queue 3.0.1 SP2 |
Notes de mise à jour de Sun ONE Message Queue
Version 3.0.1 SP2
Numéro de document 817-3826-10
Août 2003
Ces notes de mise à jour contiennent des informations importantes connues au moment de la mise sur le marché de la version 3.0.1 Service Pack 2 (SP2) de Sun Open Net Environment
(Sun ONE) Message Queue (MQ). Vous y trouverez des renseignements sur les nouvelles fonctions, les améliorations, les restrictions et problèmes connus, les notes techniques, etc. Prenez connaissance de ce document avant de commencer à utiliser MQ 3.0.1 SP2.Vous trouverez la dernière version de ces notes de mise à jour sur le site Web de la documentation Sun ONE : http://docs.sun.com/?p=/coll/S1_MessageQueue_301. Consultez ce site Web avant d'installer et de configurer votre logiciel, puis régulièrement pour vous procurer les manuels et les notes de mise à jour les plus récents.
Ces notes de mise à jour contiennent les sections suivantes :
Historique des mises à jour
Tableau 1 Historique des mises à jour
Date
Description des modifications
Août 2003
Les modifications suivantes ont été apportées au document :
- De légères modifications ont été apportées dans la structure du document et dans les explications sur les numéros de version.
- Nouvelle section : Nouveautés de Message Queue 3.0.1 SP2.
- Ajout des références 4879448, 4883126, 4888270 et 4883126 à la section Problèmes connus ;
- Ajout des références 4683129, 4735757, 4758424, 4758427, 4770212, 4770518, 4809079, 4821708, 4828860, 4835586 et 4879448 à la section Problèmes résolus dans les versions 3.0.1 de Message Queue.
Octobre 2002
Première version du document.
Compatibilité avec Java Message Service (JMS)MQ 3.0.1 a été reconnu compatible avec la spécification Java Message Service (JMS) 1.1 après avoir satisfait aux tests CTS (Compatibility Test Suite) de JMS 1.1.
MQ3.0.1, fournisseur JMS natif de Sun ONE Application Server 7, a également satisfait aux tests CTS J2EE 1.3.1 de Sun ONE Application Server 7 (qui doit être compatible avec JMS 1.0.2b).
Nouveautés de Message Queue 3.0.1 SP2MQ 3.0.1 SP2 est une mise à jour de MQ 3.0.1 SP1 (qui était une version de correction des problèmes, ne contenant aucune nouvelle fonction). MQ 3.0.1 SP1 était une mise à jour de MQ 3.0.1. Dans ces notes de versions, les références aux versions 3.0.1 concernent généralement 3.0.1, 3.0.1 SP1 et 3.0.1 SP2.
MQ 3.0.1 SP2 intègre toutes les nouvelles fonctions de MQ 3.0 et 3.0.1, auxquelles s'ajoutent deux fonctions de 3.0.1 SP2.
Nouvelles fonctions de Message Queue 3.0.1 SP2
Deux fonctions supplémentaires distinguent MQ 3.0.1 SP2 de MQ 3.0.1 :
Nouvelles fonctions de Message Queue 3.0.1
Deux fonctions supplémentaires distinguent MQ 3.0.1 de MQ 3.0 :
MQ 3.0.1 offre une vitesse de remise des messages jusqu'à deux fois supérieure à celle de MQ 3.0, ce qui représente une amélioration des performances significative, notamment en cas de trafic chargé. L'amélioration a été obtenue grâce à des modifications apportées à la conversion des paramètres (marshalling) des propriétés de message JMS lors de la transmission sur le réseau.
MQ 3.0.1 est compatible avec Sun ONE Application Server 7.0 et est utilisé comme fournisseur JMS natif de ce dernier. MQ a été intégré au serveur d'applications, qui permet de bénéficier de la messagerie JMS dans un environnement de serveur d'applications. Le système peut être configuré pour un serveur de messagerie MQ interne géré par l'intermédiaire des outils d'administration du serveur d'applications, ou pour un serveur de messagerie MQ externe nécessitant alors l'utilisation des outils d'administration de MQ.
Nouvelles fonctions de Message Queue 3.0
MQ 3.0 a apporté un certain nombre de changements par rapport à la version 2.0 du produit : iMQ 2.0 (et iMQ 2.0, Service Pack 1).
Par exemple, il existe désormais deux éditions du produit : Platform Edition et Entreprise Edition.
Platform Edition : fournit une prise en charge JMS de base. Cette édition convient plus particulièrement aux environnements de développement et de déploiement à petite échelle.
Enterprise Edition : fournit une prise en charge du protocole HTTP/HTTPS et offre une capacité d'évolution et des fonctions de sécurité améliorées. Cette édition convient plus particulièrement aux déploiements à grande échelle.
(Pour plus d'informations sur ces éditions, consultez la section Introduction du document Administrator's Guide de MQ ou du document Developer's Guide de MQ.)
Les descriptions ci-dessous relatives aux modifications apportées à MQ 3.0.1, sont regroupées en fonction de leur appartenance aux deux éditions ou à l'édition Entreprise Edition uniquement.
Enterprise Edition et Platform Edition
MQ prend désormais en charge l'API JTA XA, ce qui signifie que la production et la consommation de messages peut s'inscrire dans une transaction distribuée plus large impliquant d'autres gestionnaires de ressources, tels que des gestionnaires de base de données (consultez la section 1 du document Developer's Guide de MQ). Cette fonction est également prise en charge par des outils administratifs de gestion des transactions (reportez-vous au tableau 6-12 du document Administrator's Guide de MQ). Aucune information de programmation ni aucun exemple ne sont encore disponibles dans la version 3.0.1 du produit MQ.
MQ prend désormais en charge les fonctions supplémentaires de la spécification JMS 1.1, qui permet une approche simplifiée de la programmation client JMS, par rapport à JMS 1.0.2. En particulier, un client JMS peut prendre en charge la messagerie point à point et de type publish/subscribe lors d'une même connexion et d'une même session, et peut intégrer des files d'attente et des rubriques dans la même transaction.
En résumé, un développeur de client JMS n'a pas besoin de choisir entre les domaines de programmation point à point ou de type publish/subscribe de JMS 1.0.2 ; il lui suffit d'opter plus simplement pour l'approche de domaine unifiée de JMS 1.1. Bien que cette approche soit préférable, la spécification JMS 1.1 prend toujours en charge les domaines de programmation distincts de JMS 1.0.2. (En réalité, les exemples d'application livrés avec le produit MQ, ainsi que les exemples de code fournis dans le document Developer's Guide de MQ utilisent tous les domaines de programmation distincts de JMS 1.0.2.)
Prise en charge de la création et de la remise de messages conformes à la spécification du protocole SOAP (Simple Object Access Protocol), par l'intermédiaire de JAXM (API Java pour la messagerie XML). SOAP autorise l'échange de données XML structurées entre homologues dans un environnement distribué. MQ permet également la remise de messages SOAP via la messagerie JMS. Consultez le manuel Developer's Guide de MQ pour de plus amples informations.
MQ offre désormais plus de flexibilité pour équilibrer l'espace disque et les performances lors de l'utilisation de la banque permanente intégrée (consultez le tableau 2-5 du document Administrator's Guide de MQ). De même, les administrateurs ont la possibilité de supprimer uniquement les messages ou abonnements durables de la banque permanente lors du redémarrage d'un courtier (consultez l'option reset du tableau 5-2 du document Administrator's Guide de MQ).
Pour des raisons de conformité avec les normes générales de système de fichiers de la plate-forme, l'arborescence de MQ 3.0.1 a été modifiée sous Solaris. Les fichiers MQ 3.0.1 ne sont plus installés dans un seul répertoire racine, mais répartis à des emplacements standard du système de fichiers Solaris.
Enterprise Edition uniquement
MQ offre maintenant une messagerie sur HTTP sécurisée (consultez l'annexe B du document Administrator's Guide de MQ). Ce nouveau service de connexion permet le cryptage des messages, du producteur au consommateur (c'est-à-dire du client JMS,
via le servlet du tunnel HTTPS, au courtier et vice versa).
Mises à jour de la documentation Message QueueLa documentation de MQ 3.0.1 et MQ 3.0.1 SP2 a été mise à jour à partir de la version 3.0 du produit. Ces mises à jour se trouvent sur le site Web de la documentation Sun ONE : http://docs.sun.com/coll/S1_MessageQueue_301.
Installation Guide
Le document Installation Guide de MQ a été mis à jour pour refléter les changements apportés à MQ 3.0.1 SP2 (consultez la rubrique "Nouvelles fonctions de Message Queue 3.0.1 SP2").
Administrator's Guide
Le document Administrator's Guide de MQ a été mis à jour avec les nouvelles fonctions de MQ 3.0.1 (consultez la rubrique "Nouvelles fonctions de Message Queue 3.0.1").
Developer's Guide
Le document Developer's Guide de MQ a été mis à jour avec les nouvelles fonctions de MQ 3.0.1 (consultez la rubrique "Nouvelles fonctions de Message Queue 3.0.1").
Problèmes de compatibilitéLes versions 3.0.1 de MQ sont entièrement compatibles avec la version 3.0 de MQ et la mise à niveau de MQ 3.0 vers MQ 3.0.1 ne nécessite aucune modification de la configuration du courtier, des objets gérés, des outils d'administration ou des applications clientes.
Cependant, les versions 3.0.1 de MQ (nommées 3.0.1 ci-après dans cette section) ne sont généralement pas compatibles avec iMQ 2.0. Vous pouvez être amené à résoudre un certain nombre de problèmes lors de la mise à niveau de iMQ 2.0 (ou iMQ 2.0 Service Pack 1) vers MQ 3.0.1 :
Compatibilité du courtier
L'interaction entre un courtier MQ 3.0.1 et un courtier iMQ 2.0 ne fonctionne pas du fait des modifications apportées aux propriétés du courtier et au schéma de la banque permanente. Toutefois, certaines données iMQ 2.0 sont compatibles avec MQ 3.0.1, comme l'indique le Tableau 2 et peuvent être conservées lors de la mise à niveau vers MQ 3.0.1. Lors de la mise à niveau de iMQ 2.0 vers MQ 3.0.1, vous devez prendre en considération les éléments suivants :
- Vous pouvez copier les fichiers config.properties de iMQ 2.0 vers un autre emplacement et, en général, consulter les propriétés associées lorsque vous configurez les courtiers de MQ 3.0.1.
- Les données permanentes de iMQ 2.0, telles que les messages, les destinations, les abonnements durables, ne sont pas réutilisables. Vous devrez notamment recréer les destinations iMQ 2.0 dans vos courtiers MQ 3.0.1.
- Vous pouvez continuer à utiliser le référentiel utilisateur iMQ 2.0 et accéder aux fichiers de propriétés de contrôle après l'installation de MQ 3.0.1. Le programme d'installation de MQ 3.0.1 n'écrase pas ces fichiers. Néanmoins, vous devrez les déplacer vers l'emplacement MQ 3.0.1 approprié (consultez l'annexe D du document Administrator's Guide de MQ).
Compatibilité des objets gérés
MQ De nouveaux attributs ont été ajoutés aux objets gérés par 3.0.1 et les attributs iMQ 2.0 ont été renommés. C'est pourquoi, lors de la mise à niveau de iMQ 2.0 vers MQ 3.0.1, vous devez prendre en considération les éléments suivants :
- Vous pouvez conserver la banque d'objets et les objets gérés qui ont été créés avec iMQ 2.0. Cependant, il est préférable de mettre à niveau les objets gérés après l'installation de MQ 3.0.1. Lors d'une mise à jour, la console d'administration (imqadmin) et l'utilitaire de ligne de commande ObjectManager (imqobjmgr), convertissent les objets gérés iMQ 2.0 en objets gérés MQ 3.0.1.
- L'exécution du client MQ 3.0.1 recherche et crée des objets gérés iMQ 2.0 en les convertissant en objets gérés MQ 3.0.1 locaux. Toutefois, les objets gérés iMQ 2.0 de la banque d'objets ne sont pas convertis en objets gérés MQ 3.0.1.
- Les clients JMS (applications et/ou composants) qui créent directement des objets gérés (c'est-à-dire qui dépendent du fournisseur JMS), doivent être réécrits pour correspondre aux noms d'attributs des nouveaux objets gérés (consultez le chapitre 4 et l'annexe A du document Developer's Guide de MQ pour obtenir des informations sur les attributs des objets gérés).
- Les scripts qui servent à démarrer les clients JMS et qui définissent les valeurs des attributs d'objets par l'intermédiaire des options de la ligne de commande doivent être réécrits pour correspondre aux noms d'attributs des nouveaux objets gérés (consultez le chapitre 4 et l'annexe A du document Developer's Guide de MQ pour obtenir des informations sur les attributs des objets gérés).
Compatibilité de l'outil d'administration
Du fait de l'attribution d'un nouveau nom pour plusieurs fichiers et répertoires (en particulier lors du remplacement de la chaîne "jmq" par "imq"), tous les utilitaires de ligne de commande, les propriétés de courtiers, les attributs d'objets gérés et les noms des fichiers internes de MQ 3.0.1 ont été modifiés. C'est pourquoi, lors de la mise à niveau de iMQ 2.0 vers MQ 3.0.1, vous devez prendre en considération les éléments suivants :
- Tous les scripts qui utilisent les utilitaires de ligne de commande (imqbrokerd, imqcmd, imqobjmgr, etc.) doivent être modifiés pour remplacer les anciennes commandes par les nouvelles. En particulier, notez que la commande jmqbroker s'appelle désormais imqbrokerd.
- La console d'administration (imqadmin) permet de gérer plusieurs courtiers et/ou banques d'objets simultanément et sauvegarde la liste des entités gérées qui sont affichées dans le volet de navigation situé à gauche de l'écran. Ainsi, chaque fois que vous lancez la console, la liste des entités gérées est réaffichée. Le nom du répertoire dans lequel les paramètres utilisateur de la console d'administration iMQ 2.0 étaient stockés a été modifié dans MQ 3.0.1. Pour conserver les paramètres de console existants lors de la mise à niveau de iMQ 2.0 vers MQ 3.0.1, vous devez changer le nom du répertoire dans lequel les fichiers brokerlist.properties et objstorelist.properties sont enregistrés (de $HOME/.jmq/admin en $HOME/.imq/admin, où $HOME correspond au répertoire racine utilisateur de la console.
Compatibilité du client
Lors de la mise à niveau de iMQ 2.0 vers MQ 3.0.1, vous devez prendre en considération les éléments suivants :
- Un courtier MQ 3.0.1 prend en charge l'exécution du client iMQ 2.0 (mais sans les fonctions MQ 3.0.1 supplémentaires), alors qu'un courtier iMQ 2.0 ne prend pas en charge l'exécution du client MQ 3.0.1.
- Les clients JMS élaborés avec le JDK 1.2, 1.3 ou 1.4 peuvent fonctionner avec un courtier fonctionnant avec JRE 1.4. Cela étant, les clients qui utilisent une connexion sécurisée (de type SSL) avec le courtier ont besoin de bibliothèques JSSE et JNDI supplémentaires s'ils ne sont pas élaborés avec le JDK 1.4 (auquel ces bibliothèques sont intégrées).
- L'API JMS 1.1 (compatible avec MQ 3.0.1) détermine le comportement de la méthode Message.acknowledge(), utilisée pour acquitter la consommation des messages dans les sessions CLIENT_ACKNOWLEDGE. Il est possible que vous deviez modifier les clients JMS existants.
Cette méthode Message.acknowledge() acquitte tous les messages consommés dans la session au moment où elle est appelée. Ce changement de comportement par rapport à l'API 1.0.2 (compatible avec iMQ 2.0) est illustré dans l'exemple suivant : supposons qu'un client consomme quatre messages d'une file d'attente au cours d'une même session (A, B, C et D dans cet ordre, par exemple) et que tous ont été consommés avant que la méthode qui permet d'acquitter soit appelée au niveau du message C.
L'acquittement est indépendant de l'ordre dans lequel les messages sont consommés, dès lors qu'ils sont consommés au cours d'une même session. Autrement dit, le message à partir duquel la méthode acknowledge() est appelée ne conditionne plus les messages acquittés.
Avec iMQ 2.0, le comportement consistait à affecter à la valeur ClientID l'adresse IP locale du client en cas de création d'un abonnement durable sans définition explicite de la valeur ClientID. Avec MQ 3.0.1, le comportement consiste à déclencher une exception en cas de création d'un abonnement durable sans définition explicite de la valeur ClientID. En d'autres termes, en cas d'utilisation d'abonnements durables et de consommateurs de connexion durable, une valeur ClientID doit toujours être définie, soit en code client, soit en utilisant un attribut de l'objet usine de connexion.
Avec iMQ 2.0, si une constante de chaîne contenait des caractères multi-octets, vous deviez utiliser un double caractère d'échappement pour les caractères Unicode (par exemple, selector = "property = '\\u033e\\u033f'"). Avec MQ 3.0.1, il est possible d'utiliser la représentation normale des caractères Unicode (par exemple, selector = "property = '\u033e\u033f'").
Restrictions connuesLes restrictions abordées dans cette section sont regroupées en fonction de leur appartenance à Enterprise Edition et Platform Edition des versions 3.0.1 de MQ ou à Enterprise Edition uniquement.
Enterprise Edition et Platform Edition
- Les plates-formes Windows limitent le nombre de connexions à un courtier qui peuvent être initiées simultanément par TCP/IP, conformément à la taille maximale du backlog. Le backlog correspond à la mémoire tampon des connexions de la pile TCP : le nombre de connexions TCP simultanées ne peut pas dépasser la taille du backlog. Par exemple, le backlog est limité à 5 sous Windows 2000 Professionnel et à 200 sous Windows 2000 Server.
- Vous ne pouvez pas modifier le fichier de configuration des instances d'un courtier sans avoir démarré, au moins une fois, l'instance du courtier, tout simplement parce que le fichier config.properties n'existe pas tant que l'instance du courtier n'a pas été démarrée une première fois. Pour configurer un courtier afin qu'il utilise la permanence enfichable ou pour définir d'autres propriétés de configuration, exécutez une fois le courtier (avec le nom d'instance qui doit être utilisé pour créer le courtier) pour créer le fichier config.properties :
Enterprise Edition uniquement
- Le modèle de pool de threads partagé du courtier ne fonctionne pas sur les plates-formes Windows (à cause d'un problème avec J2SE 1.4.0). Ce problème est censé avoir été résolu dans J2SE 1.4.1, bien que les tests n'aient pas été effectués.
- Seuls les clusters de courtiers entièrement connectés sont pris en charge par cette version. Autrement dit, tous les courtiers d'un cluster doivent communiquer directement avec tous les autres. Si vous connectez des courtiers par l'intermédiaire de l'argument de ligne de commande imqbrokerd -cluster, assurez-vous bien que tous les courtiers du cluster sont pris en compte.
- Si aucun courtier ne fait office de courtier principal dans un cluster, les informations permanentes enregistrées par un courtier ayant été ajouté au cluster ne sont pas communiquées aux autres courtiers du cluster.
- Un service de connexion utilisant SSL ne prend en charge actuellement que les certificats de serveurs auto-signés, c'est-à-dire le mode d'approbation par l'hôte. Par défaut, la valeur de la propriété de configuration de connexion imqSSLIsHostTrusted est : true.
- Lorsqu'un client JMS utilisant le transport HTTP met brutalement fin à la connexion (en utilisant, par exemple, Ctrl-C), le courtier met environ une minute avant de libérer la connexion client et toutes les ressources associées.
Si une autre instance du client est démarrée pendant cet intervalle d'une minute et si elle tente d'utiliser le même ClientID, le même abonnement durable ou la même file d'attente, elle peut recevoir une exception "Ressource en conflit". Il ne s'agit pas d'un vrai problème, mais d'un effet secondaire du processus de fin décrit précédemment. Si un client est démarré après un délai d'environ une minute, tout doit fonctionner correctement.
Problèmes connusCette section répertorie les principaux problèmes connus au moment de la sortie de MQ 3.0.1 SP2.
Pour connaître la liste des problèmes en cours, leur état et les solutions possibles, les membres de Java Developer Connection (TM) doivent consulter la page "Bug Parade" du site Web Java Developer Connection. Avant de signaler tout nouveau problème, merci de consulter cette page. Bien que tous les problèmes de MQ n'y soient pas répertoriés, il est bon de s'y référer pour savoir si un problème a déjà été signalé.
La page concernée est la suivante :
Pour signaler un nouveau problème ou soumettre une demande d'amélioration, envoyez un courrier électronique à l'adresse imq-feedback@sun.com.
Problèmes résolus dans les versions 3.0.1 de Message QueueVous trouverez ci-dessous une brève description des principaux problèmes qui ont été corrigés dans MQ 3.0.1, 3.0.1 SP1 et 3.0.1 SP2.
Pour connaître la liste des problèmes résolus dans MQ 3.0, consultez les notes de mise à jour de MQ 3.0 disponibles à l'adresse
Pour obtenir un rapport complet sur les problèmes suivants, consultez le site Java Developer Connection à l'adresse
Fonctionnalités considérées comme facultatives dans JMSLa spécification JMS donne des précisions sur certains éléments facultatifs. Chaque fournisseur JMS décide ou non de les mettre en uvre. La façon dont MQ prend en compte ces éléments facultatifs est décrite ci-dessous :
Notes techniquesCette section couvre brièvement les rubriques suivantes :
Paramètres de l'horloge système
Lorsque vous utilisez un système MQ, assurez-vous que les horloges système sont bien synchronisées et évitez de les retarder.
Synchronisation recommandée
Il est conseillé de synchroniser toutes les horloges de tous les hôtes qui communiquent avec le système MQ. Cette phase est particulièrement importante si vous utilisez l'expiration (TimeToLive) des messages. Un défaut de synchronisation des horloges des hôtes peut provoquer le dysfonctionnement de TimeToLive (la livraison des messages peut être perturbée). Vous devez synchroniser les horloges avant de démarrer les courtiers.
Solaris Vous pouvez utiliser la commande rdate sur un hôte local pour effectuer la synchronisation avec un hôte distant. (Pour ce faire, vous devez être superutilisateur, c'est-à-dire reconnu en tant que root). Par exemple, la commande suivante synchronise l'hôte local (appelons-le Host2) et l'hôte distant Host1 :
Linux La commande est similaire à celle de Solaris, à laquelle s'ajoute l'option -s :
Windows Vous pouvez utiliser la commande net et la sous-commande time pour synchroniser l'hôte local et l'hôte distant. Par exemple, la commande suivante synchronise l'hôte local (appelons-le Host2) et l'hôte distant Host1 :
Évitez de retarder les horloges système
Évitez de retarder l'horloge sur les systèmes qui exécutent un courtier MQ. En effet, MQ utilise l'horodatage pour identifier les objets internes tels que les transactions et les abonnements durables. Si l'horloge système est retardée, il devient en théorie possible qu'un identificateur interne existe en double. Le courtier tente d'y remédier en introduisant des données aléatoires dans les identificateurs et par la détection des écarts d'horloge en cours d'exécution, mais si l'horloge système est retardée de façon importante alors que le courtier n'est pas en cours d'exécution, il existe un risque de duplication des identificateurs.
Si vous avez besoin de retarder de plus de quelques secondes l'horloge sur un système sur lequel s'exécute un courtier, il est conseillé de le faire en l'absence de transactions ou d'abonnements durables, ou alors lorsque le courtier ne s'exécute pas, puis d'attendre que le délai spécifié s'écoule avant d'exécuter le courtier.
L'approche idéale consiste à synchroniser les horloges avant de démarrer les courtiers, puis d'utiliser une technique appropriée pour s'assurer que les horloges ne divergent pas de manière importante après-coup.
Restrictions de connexion dues au système d'exploitation sur les clients et les courtiers
Sur les plates-formes Linux et Solaris, le shell d'exécution du client ou du courtier impose une limite logicielle du nombre de descripteurs de fichiers utilisables par un client. Avec le système MQ, chaque connexion demandée par un client, ou chaque connexion acceptée par un courtier, utilise un de ces descripteurs de fichiers. Par conséquent, aucun courtier ou client ne peut dépasser la limite de 256 connexions sous Solaris et 1 024 connexions sous Linux sans changer cette limite. (Ce nombre est en fait légèrement inférieur, car certains descripteurs de fichiers sont utilisés à d'autres fins, notamment pour la permanence basée sur les fichiers.)
Pour modifier cette limite, consultez la page concernant ulimit ou les instructions du paragraphe "Augmentation des descripteurs de fichiers pour améliorer les performances de permanence basée sur les fichiers" ci-dessous. La limite doit être changée dans chaque shell d'exécution du client ou du courtier concerné.
Augmentation des descripteurs de fichiers pour améliorer les performances de permanence basée sur les fichiers
Sous les systèmes Solaris et Linux, la vitesse de stockage des messages dans la banque permanente basée sur les fichiers par défaut dépend du nombre de descripteurs de fichiers disponibles pour le stockage des fichiers. (Le nombre de descripteurs de fichiers n'est pas limité sous Windows.) Plus le nombre de descripteurs est élevé, plus le système est capable de traiter rapidement un grand nombre de messages permanents.
En vue d'améliorer le test des performances ou le déploiement, les administrateurs doivent augmenter le nombre maximal de descripteurs de fichiers disponibles pour une application (le cas échéant, le processus de courtier), puis augmenter la taille du pool de descripteurs de fichiers partagés utilisé par le courtier en modifiant la valeur de la propriété :
La valeur de cette propriété doit être inférieure au nombre maximal de descripteurs de fichiers disponibles sur le système.
Sous Solaris, par exemple, vous pouvez augmenter les limites prévues pour les descripteurs de fichiers par l'intermédiaire de la commande ulimit. Les processus héritent des limites système de leur shell parent (login). Sous Solaris, il existe une limite matérielle et une limite logicielle. Pour un utilisateur autre que l'utilisateur root, le nombre de descripteurs de fichiers pour une application ne peut dépasser la limite logicielle qui, à son tour, ne peut dépasser la limite matérielle.
Pour connaître les limites en vigueur des descripteurs de fichiers :
Pour modifier les limites des descripteurs de fichiers de l'utilisateur root :
Dès lors, tous les processus créés à partir de ce shell sont en mesure d'ouvrir les descripteurs de fichiers de manière illimitée. À ce stade, vous pouvez exécuter sans risque la commande imqbroker.
Pour modifier les limites des descripteurs de fichiers pour les utilisateurs autres que root :
où numéro1 est inférieur à 1 024 et numéro2 est inférieur à numéro1.
Si 1 024 s'avère insuffisant, vous disposez des possibilités suivantes :
- Exécutez le courtier en tant que root.
- Écrivez un programme "setuid" pour augmenter la valeur de ulimit avant d'exécuter le courtier. (Ce type de programme présente des risques importants au niveau de la sécurité et est fortement déconseillé.)
- Réglez le paramètre rlim_fd_max du fichier /etc/system et redémarrez le système.
Sécurisation des données permanentes
Le courtier utilise une banque permanente qui contient, entre autres, des fichiers de messages stockés provisoirement. Ces messages pouvant contenir des informations confidentielles, il est recommandé de protéger la banque de données contre les accès non autorisés.
Un courtier peut utiliser la permanence intégrée ou enfichable.
Banque permanente intégrée
Un courtier qui utilise la permanence intégrée écrit les données permanentes dans une banque de données ordinaire, situé à l'emplacement :
où NomCourtier est un nom qui identifie l'instance du courtier.
Le répertoire NomCourtier/filestore/ est créé lors du premier démarrage de l'instance du courtier. La procédure de protection de ce répertoire dépend du système d'exploitation sur lequel le courtier est exécuté.
Solaris et Linux Les autorisations associées au répertoire IMQ_VARHOME/instances/NomCourtier/filestore/ dépendent du "umask" de l'utilisateur qui a démarré l'instance du courtier. Par conséquent, il est possible de restreindre les droits de démarrage d'une instance de courtier et de lecture de ses fichiers permanents par l'intermédiaire de umask. De même, un administrateur (superutilisateur) peut protéger les données permanentes en définissant la valeur 700 pour les autorisations d'accès au répertoire IMQ_VARHOME/instances.
Windows Les autorisations d'accès au répertoire IMQ_VARHOME/instances/NomCourtier/filestore/ peuvent être définies grâce aux mécanismes de protection du système d'exploitation Windows utilisé. Cette opération s'effectue généralement par l'intermédiaire de la boîte de dialogue Propriétés du répertoire.
Banque permanente enfichable
Un courtier qui utilise la permanence enfichable écrit les données permanentes dans une base de données de type JDBC.
Dans le cas d'une base de données gérée par un serveur de bases de données (une base de données Oracle, par exemple), il est recommandé de créer un nom d'utilisateur et un mot de passe pour accéder aux tables de la base MQ (tables dont le nom commence par IMQ). Si la base de données ne permet pas de protéger individuellement les tables, créez une base de données spécifique, à l'usage exclusif des courtiers MQ. Consultez la documentation du fournisseur de base de données pour savoir comment gérer l'accès via un nom d'utilisateur et un mot de passe.
Le nom d'utilisateur et le mot de passe nécessaires pour que le courtier puisse établir une connexion avec la base de données peuvent faire partie des propriétés de configuration du courtier. Cela étant, il est plus sûr de les indiquer au niveau de la ligne de commande lors du démarrage du courtier (consultez l'annexe A (Setting Up Plugged-in Persistence) du document Administrator's Guide de MQ).
Dans le cas d'une base de données imbriquée, à laquelle le courtier accède par l'intermédiaire du pilote JDBC (exemple : base de données Cloudscape), la sécurité est généralement assurée par la définition d'autorisations d'accès aux fichiers (comme indiqué au paragraphe "Banque permanente intégrée" ci-avant) au niveau du répertoire dans lequel les données permanentes sont stockées. Pour s'assurer que la base de données est accessible en lecture et en écriture à la fois par le courtier et par l'utilitaire imqdbmgr, les deux attributs doivent être exécutés par le même utilisateur.
Configuration de la mémoire du courtier
Lorsque le courtier a quasiment épuisé le segment de mémoire JVM réservé aux objets Java, il a recours à diverses techniques (comme le contrôle de flux et le basculement de messages) pour libérer de la mémoire. Dans des cas extrêmes, il peut même mettre fin aux connexions client pour libérer de la mémoire et réduire l'afflux de messages. Pour éviter d'en arriver là, il est préférable de spécifier un segment de mémoire JVM suffisant.
Par contre, si le segment de mémoire Java maximal est trop élevé, en fonction de la mémoire physique du système, le courtier peut continuer à augmenter la taille du segment mémoire Java jusqu'à épuisement de la mémoire du système. Cette opération peut réduire les performances, provoquer des arrêts brutaux et imprévisibles du courtier et/ou affecter le comportement d'autres applications et services du système.
Ce problème peut être évité en spécifiant une limite de taille de segment de mémoire Java raisonnable, par l'intermédiaire de l'argument de ligne de commande Java -Xmx. Il est conseillé en général d'évaluer les besoins en mémoire, tant normaux que maximum, et de configurer en conséquence la taille du segment de mémoire Java. Elle doit être suffisamment importante pour garantir des performances optimales, mais non surestimée pour éviter les problèmes avec la mémoire système.
Erreurs de saturation de mémoire vis-à-vis du client
Si vous exécutez un client JMS qui traite des messages de taille importante ou de nombreux messages de petite taille, il peut rencontrer des erreurs OutOfMemoryError. L'exécution du client n'a pas de problème de fuite de mémoire, mais il manque juste de mémoire pour copier les messages hors du réseau et les remettre au client.
Pour éviter ces erreurs OutofMemoryError, augmentez la taille du segment de mémoire Java maximale. Pour ce faire, indiquez l'option adéquate au niveau de la commande java ou jre.
Avec Java2, utilisez l'option -Xmx lors de l'exécution de l'application cliente. Par exemple :
Veuillez tenir compte des restrictions suivantes :
- La limite maximale du pool d'allocation mémoire VM (taille du segment de mémoire) dépend à la fois du système d'exploitation et de la version de JDK. Reportez-vous à la documentation JDK pour connaître les restrictions.
- La taille du pool d'allocation mémoire VM doit être inférieure ou égale à la quantité de mémoire virtuelle disponible sur le système.
Comment signaler les problèmesPour signaler un problème, envoyez un courrier électronique à l'adresse imq-feedback@sun.com.
Si vous bénéficiez d'un contrat d'assistance MQ, contactez l'assistance client Sun ONE en utilisant une des méthodes suivantes :
- Le site Web d'assistance en ligne Sun ONE à l'adresse http://www.sun.com/service/sunone/software/index.html
Afin de vous aider à résoudre votre problème, pensez à réunir les informations suivantes lorsque vous contactez l'assistance technique :
- Description du problème, y compris l'endroit où il se produit et son impact sur l'exploitation.
- Type de machine, versions du système d'exploitation et du produit, y compris les correctifs et autres logiciels pouvant avoir un lien avec le problème.
- Procédure détaillée des méthodes utilisées pour reproduire le problème.
- Tous les journaux d'erreur ou vidages de la mémoire.
Pour plus d'informationsOutre la documentation de MQ, vous disposez des ressources d'information suivantes :
Forums de discussion
Forum des logiciels Sun ONE
Il existe un forum Sun ONE MQ à l'emplacement suivant :
Forum sur la technologie Java
Il existe un forum JMS au sein des forums sur la technologie Java qui peut être utile.
Sun attend vos commentaires
Afin d'améliorer sa documentation, Sun vous encourage à faire des commentaires et à apporter des suggestions. Envoyez vos commentaires à Sun à l'adresse électronique suivante :
Veuillez indiquer le numéro de document (817-3826-10) dans la zone Objet et le titre du manuel (Notes de mise à jour de Message Queue 3.0.1 ) dans le corps du message.
Ressources Sun supplémentairesVous pouvez obtenir des informations utiles concernant Sun ONE sur les sites Internet suivants :
- Documentation de Sun ONE Message Queue
http://docs.sun.com/coll/S1_MessageQueue_301- Sun ONE Informations sur le produit Message Queue
http://sun.com/software/message_queue- Sun ONEDocumentation
http://docs.sun.com/prod/sunone- Services professionnels de Sun ONE
http://www.sun.com/service/sunps/sunone- Sun ONE Produits et services logiciels
http://www.sun.com/software- Services d'assistance logicielle Sun ONE
http://www.sun.com/service/sunone/software- Base de connaissances et d'assistance Sun ONE
http://www.sun.com/service/support/software- Services de formation et d'assistance Sun
http://www.sun.com/supportraining- Services professionnels et de conseil Sun ONE
http://www.sun.com/service/sunps/sunone- Informations pour les développeurs Sun ONE
http://sunonedev.sun.com- Services d'assistance pour développeurs Sun
http://www.sun.com/developers/support- Formation sur les logiciels Sun ONE
http://www.sun.com/software/training- Fiches techniques sur les logiciels Sun
http://wwws.sun.com/software
Copyright © 2003 Sun Microsystems, Inc. Tous droits réservés.
Sun, Sun Microsystems, le logo Sun, Solaris, Java et le logo Java Coffee Cup, JDBC et JDBC Compliant sont des marques ou des marques déposées de SunMicrosystems, Inc. aux États-Unis et dans d'autres pays. L'utilisation de Sun ONE Message Queue est soumise aux conditions énoncées dans le contrat de licence associé.