Index

Version 3.7.3 : Modifications et corrections de bugs (2026-09-04)

Version 3.7.2 : Modifications et corrections de bugs (2026-08-26)

Version 3.7.1 : Modifications et corrections de bugs (2026-08-06)

Version 3.7.0 : Modifications et corrections de bugs (2026-07-16)

Version 3.6.5 : Modifications et corrections de bugs (2026-03-17)

Version 3.6.4 : Modifications et corrections de bugs (2025-12-18)

Version 3.6.3 : Modifications et corrections de bugs (2025-09-10)

Version 3.6.2 : Modifications et corrections de bugs (2025-06-05)

Version 3.6.1 : Modifications et corrections de bugs (2025-05-14)

Version 3.6.0 : Modifications et corrections de bugs (2025-04-01)

Version 3.5.60 : Modifications et corrections de bugs (2024-11-02)

Version 3.5.59 : Modifications et corrections de bugs (2024-07-23)

Version 3.5.58 : Modifications et corrections de bugs (2024-06-25)

Version 3.5.57 : Modifications et corrections de bugs (2024-05-20)

Version 3.5.56 : Modifications et corrections de bugs (2024-02-27)

Version 3.5.55 : Modifications et corrections de bugs (2024-02-02)

Version 3.5.54 : Modifications et corrections de bugs (2023-05-12)

Version 3.5.53 : Modifications et corrections de bugs (2023-03-09)

Version 3.5.52 : Modifications et corrections de bugs (2023-03-07)

Version 3.5.51 : Modifications et corrections de bugs (2022-11-11)

Version 3.5.50 : Modifications et corrections de bugs (2022-05-13)

Version 3.5.49 : Modifications et corrections de bugs (2022-02-09)

Version 3.5.48 : Modifications et corrections de bugs (2021-12-22)

Version 3.5.47 : Modifications et corrections de bugs (2021-12-07)

Version 3.5.46 : Modifications et corrections de bugs (2021-09-03)

Version 3.5.45 : Modifications et corrections de bugs (2021-01-04)

Version 3.5.44 : Modifications et corrections de bugs (2020-11-02)

Version 3.5.43 : Modifications et corrections de bugs (2020-03-06)

Version 3.5.42 : Modifications et corrections de bugs (2020-01-24)

Version 3.5.41 : Modifications et corrections de bugs (2019-10-31)

Version 3.5.40 : Modifications et corrections de bugs (2019-07-04)

Version 3.5.39 : Modifications et corrections de bugs (2019-04-27)

Version 3.5.38 : Changements et corrections de bugs (2019-04-05)

Version 3.5.37 : Changements et corrections de bugs (2018-12-17)

Version 3.5.36 : Changements et corrections de bugs (2018-09-21)

Version 3.5.35 : Changements et corrections de bugs (2018-04-12)

Version 3.5.34 : Changements et corrections de bugs (2017-09-27)

Version 3.5.33 : Changements et corrections de bugs (2017-07-24)

Version 3.5.32 : Changements et corrections de bugs (2017-03-31)

Version 3.5.31 : Modifications et corrections de bugs (2017-03-16)

Version 3.5.30 : Modifications et corrections de bugs (2016-07-13)

Version 3.5.29 : Modifications et corrections de bugs (2016-03-11)

Version 3.5.28 : Modifications et corrections de bugs (2016-01-14)

Version 3.5.27 : Modifications et corrections de bugs (2015-09-04)

Version 3.5.26 : Modifications et corrections de bogues (2014-12-05)

Version 3.5.25 : Modifications et corrections de bogues (2014-06-12)

Version 3.5.24 : Modifications et corrections de bogues (2014-01-08)

Version 3.5.23 : Modifications et corrections de bogues (2013-12-03)

Version 3.5.22 : Modifications et corrections de bogues (2013-10-11)

Version 3.5.21 : Modifications et corrections de bogues (2013-09-19)

Version 3.5.20 : Modifications et corrections de bogues (2013-06-25)

Version 3.5.19 : Modifications et corrections de bogues (2013-04-19)

Version 3.5.18 : Modifications et corrections de bogues (2013-04-16)

Version 3.5.17 : Modifications et corrections de bogues (2012-11-27)

Version 3.5.16 : Modifications et corrections de bugs (2012-10-26)

Version 3.5.15 : Modifications et corrections de bugs (2012-06-20)

  • Ajouter un nouveau paramètre _WRAPPER_CONF_OVERRIDE aux fichiers batch de commandes dédiés du Wrapper sous Windows afin qu'il soit désormais possible de contrôler si le premier paramètre est ou non le nom du fichier de configuration. La possibilité de spécifier un fichier de configuration alternatif est désormais désactivée par défaut car cela prêtait à confusion pour les utilisateurs qui tentaient de passer d'autres paramètres à la JVM.

  • Corriger quelques messages de journal dans la classe WrapperManager auxquels manquait le préfixe correct identifiant leur origine.

  • Supprimer du code de réflexion ancien nécessaire pour la prise en charge de Java 1.2.x, car Java 1.4 est requis depuis la version 3.4.0.

  • Supprimer du code tentant de reconnecter le socket backend depuis Java. Il n'a jamais été possible de le faire sans redémarrer la JVM, et les messages associés prêtaient à confusion.

  • Ajouter une nouvelle propriété wrapper.disable_forced_shutdown pour permettre de désactiver la fonctionnalité tuant de force la JVM à l'arrêt si CTRL-C était pressé deux fois.

  • Réduire le nombre de fois où les priorités des threads sont modifiées dans la classe WrapperManager afin de simplifier le processus de démarrage et d'arrêt.

  • Correction d'un problème de pointeur dangling, qui pouvait provoquer un comportement indéfini chaque fois qu'une propriété contenait une variable d'environnement non définie.

  • Corriger une condition de concurrence dans le thread de minuterie, qui pouvait provoquer la propagation d'un sigkill à tout le groupe de processus plutôt qu'au thread de minuterie. Cela ne peut se produire que pendant l'arrêt du Wrapper.

  • Lorsqu'un processus enfant lancé par WrapperManager.exec() échouait à démarrer en raison d'une erreur d'exécution (telle que des privilèges manquants), le tas forké persistait et le processus enfant ne se terminait jamais jusqu'à l'arrêt/redémarrage de la JVM. L'erreur n'apparaît que sur les plateformes UNIX lors de l'utilisation du type de démarrage FORK_EXEC.

  • Modifier le niveau de journal et le message si une vérification de certificat renvoyait un problème qui n'est pas directement causé par la signature du Wrapper, mais par la chaîne de signatures.

  • Corriger un problème où la commande de requête silencieuse ne renvoyait pas le code de sortie correct sous Windows Vista (et versions ultérieures) lorsque la commande était exécutée depuis une console non élevée. Merci à Darren d'avoir signalé ce problème.

  • La propriété système Java wrapper.backend.so_timeout était ignorée si elle était définie sur 0 (zéro), rendant impossible de définir explicitement le délai d'attente comme indéfini.

  • Ajout des propriétés wrapper.java.additional.auto_bits.<platform> pour activer/désactiver individuellement la fonctionnalité pour les plateformes prises en charge.

  • Corriger un problème où le script tentait d'utiliser les binaires 64 bits sur Mac OSX même si le processeur n'était qu'une architecture 32 bits. Cela n'affectait que les versions de Mac OSX supérieures à 10.5.0, la grande majorité de ces machines étant déjà équipées de processeurs 64 bits. Merci à Robin et Irina d'avoir signalé ce problème.

  • Si la console devait être affichée lors de l'exécution en tant que service, la sortie de la console n'était pas affichée et la console ne montrait qu'une fenêtre vide. Ceci a été corrigé, de sorte que la console affiche désormais toute la sortie.

  • Lors du rechargement du fichier de configuration, le Wrapper tentait d'accéder à des données de la pile d'appels d'une fonction qui se trouvait en réalité en dehors de la plage mémoire de la pile. Cette violation d'accès pouvait provoquer une erreur de segmentation. Ce problème a été introduit dans la version 3.5.5. Merci à Lincoln d'avoir aidé à trouver ce problème.

Version 3.5.14 : Modifications et corrections de bugs (2012-02-09)

  • Corriger un problème dans le fichier AppCommand.bat.in où une parenthèse dans le nom de fichier du binaire Wrapper aurait provoqué une erreur « PATH was unexpected at this time ».

  • (Éditions Standard et Professionnelle)

    Corriger un problème lors de l'utilisation d'une version localisée du Wrapper sur les plateformes Windows 64 bits où le Wrapper continuait d'utiliser la langue système par défaut même si wrapper.lang était utilisé pour spécifier une langue différente. Introduit dans la version 3.5.12.

  • Corriger un problème dans le fichier batch basé sur les commandes Windows 'AppCommand.bat.in' où la commande 'status' était incorrectement indiquée comme 'query' dans l'affichage de l'utilisation. La commande 'status' avait toujours fonctionné correctement si elle était utilisée.

  • Corriger un problème sur les plateformes UNIX où certains messages asynchrones provoquaient l'enregistrement d'un message d'avertissement « Coding Error... » à la place du message prévu. Cela pouvait être observé si le fichier journal configuré n'avait pas les permissions d'écriture ('write'). Hormis le message de journal incorrect, le Wrapper fonctionnait correctement. Introduit dans la version 3.5.2.

  • Corriger un problème dans le script UNIX où l'exécution avec upstart ne fonctionnait pas correctement lorsque RUN_AS_USER était défini.

  • Assouplir les vérifications de sécurité lors de l'exécution de la commande 'status' sur le script shell UNIX afin de permettre désormais à tout utilisateur exécutant le script d'effectuer la vérification en lecture seule du fichier PID.

  • Corriger un problème avec le script UNIX où la commande 'remove' tentait d'arrêter une application en cours d'exécution même lorsque l'application n'avait pas été installée.

  • Corriger un débordement de tampon qui pouvait potentiellement provoquer un plantage lors de l'installation d'un service Windows lorsque la propriété wrapper.ntservice.account était spécifiée. Cela a été introduit dans la version 3.5.12.

  • Corriger une corruption du tas qui pouvait se produire au démarrage et potentiellement provoquer un plantage. Seuls les systèmes Windows utilisant les journaux d'événements système étaient concernés. Découvert lors d'une revue de code, il n'y avait jamais eu de signalements de problèmes pour les utilisateurs. Cela pouvait se produire si le wrapper.log configuré ne pouvait pas être écrit, car le Wrapper tente toujours d'écrire dans le journal d'événements dans de tels cas. Introduit dans la version 3.5.12.

  • Ajouter une nouvelle comparaison de versions entre le script shell UNIX et le Wrapper pour commencer à afficher un avertissement en cas de non-correspondance de versions. La vérification ne fonctionnera que si le script shell et le Wrapper sont chacun au moins de la version 3.5.14.

  • Ajout d'une nouvelle propriété wrapper.pidfile.strict qui indiquera au Wrapper de ne pas démarrer si le fichier pid existait déjà. La valeur par défaut est false pour la rétrocompatibilité.

  • Rendre le côté Java du socket backend plus résilient en cas de délai d'attente de lecture ou d'écriture. Le socket backend n'a pas de délai d'attente défini par défaut donc cela n'aurait pas dû poser de problème. Cependant, quelques utilisateurs ont signalé des problèmes sur des systèmes spécifiques, ce qui a conduit à cette correction.

  • Pour faciliter le test du délai d'attente du socket backend, une nouvelle propriété système Java wrapper.backend.so_timeout a été ajoutée pour permettre de configurer le socket backend afin d'utiliser un délai d'attente. Consultez les Javadocs de la classe WrapperManager pour plus de détails.

Version 3.5.13 : Modifications et corrections de bugs (2011-11-02)

  • Corriger une faute de frappe dans le script où la variable d'environnement 'TR_BIN' devrait en fait être 'TREXE'. Cela provoquait l'échec de la commande « install » sur les plateformes UNIX. Introduit dans la version 3.5.12.

  • Corriger une corruption du tas qui pouvait conduire à un plantage se produisant la deuxième fois qu'un tampon interne utilisé pour la journalisation était agrandi. Le tampon était agrandi la première fois qu'une ligne de journal de plus de 2048 caractères de longueur était rencontrée. Puis le second agrandissement se produisait lorsqu'une ligne d'au moins 1024 caractères de plus était rencontrée. Introduit dans la version 3.5.11. Bug #3423108.

Version 3.5.12 : Modifications et corrections de bugs (2011-09-29)

Version 3.5.11 : Modifications et corrections de bugs (2011-08-16)

  • Corriger un plantage potentiel sous Windows causé par un débordement de tampon. Ce problème existe depuis la version 3.5.0 et concerne les configurations qui définissent plus d'une propriété wrapper.ntservice.dependency.<n>. Selon ce qui se trouvait en mémoire, cela ne provoquait pas toujours un plantage. Le comportement est très reproductible pour un fichier de configuration donné.

  • Corriger un problème sous Windows où le Wrapper mettait 15 secondes ou plus à démarrer sur certains systèmes car l'appel système WinVerifyTrust rencontrait des problèmes pour mettre à jour la CRL. Ce problème existait depuis que les binaires du Wrapper ont commencé à être signés dans la version 3.5.7. Si l'appel WinVerifyTrust prend plus de temps que la propriété wrapper.startup_thread.timeout configurée, le Wrapper continuera à démarrer sans délai supplémentaire.

  • (Éditions Standard et Professionnelle)

    Supprimer explicitement le certificat du binaire personnalisé lors de la personnalisation. Il y avait sinon des problèmes pour resigner le binaire avec un autre certificat.

  • Si le Wrapper est incapable d'écrire dans le wrapper.logfile configuré pour une raison quelconque, nous basculons toujours vers un fichier journal par défaut puis enregistrons un message concernant l'échec. Si le fichier par défaut échoue également, cela est également enregistré mais les messages n'étaient enregistrés que sur la console dans la plupart des cas. Modifier le Wrapper afin que nous envoyions désormais toujours les deux messages au syslog ou à l'EventLog, quelle que soit la valeur de la propriété wrapper.syslog.loglevel. Ceci est important pour aider à identifier la cause des problèmes d'accès au fichier journal.

  • À partir de la version 3.5.0, il était possible en interne d'afficher des messages de journal multilignes de sorte que toutes les lignes soient toujours regroupées dans le fichier journal. Cette version modifie légèrement le code de journalisation afin que cette sortie de journal multiligne soit désormais enregistrée comme un seul message dans le syslog UNIX ou l'EventLog Windows.

  • Corriger un problème où des lignes de sortie très longues provenant de la JVM faisaient paraître le Wrapper bloqué pendant un moment. La première fois qu'une seule ligne de sortie contenant plusieurs centaines de milliers de caractères était enregistrée, un tampon interne était incrémenté de 100 caractères par cycle. Le Wrapper augmente désormais la taille en fonction de la dernière taille connue afin de réduire considérablement le nombre de cycles nécessaires pour choisir une nouvelle taille de tampon.

  • Modifier l'option PAUSE_THREAD dans la ligne de commande afin qu'il soit désormais possible d'attendre indéfiniment. Utile uniquement pour tester le Wrapper.

  • Ajouter une nouvelle option PAUSE_LOGGER dans la ligne de commande pour permettre de mettre en pause la prochaine entrée de journal. Utile uniquement pour tester le Wrapper.

  • Sous UNIX, le tube stdout/stderr entre la JVM et le Wrapper n'était pas nettoyé correctement. Cela entraînait une petite fuite mais était par ailleurs inoffensif. Les tubes sont désormais nettoyés et initialisés pour chaque instance de JVM.

  • Corriger un problème où le Wrapper pouvait échouer à redémarrer la JVM lorsque la demande de redémarrage provenait de la JVM si le système subissait des E/S très lourdes entraînant de longues files d'attente d'E/S disque. Cela provoquait le blocage de la boucle principale du Wrapper sur l'écriture et le manquement de la demande de redémarrage, entraînant l'arrêt du Wrapper plutôt que son redémarrage. Cela pouvait affecter toutes les plateformes. Sous Windows, cela pouvait également être reproduit en effectuant une sélection dans la console pour figer la sortie, puis en faisant une demande de redémarrage depuis la JVM.

  • Ajouter une nouvelle classe d'aide WrapperPropertyUtil pour faciliter l'accès aux valeurs des propriétés du Wrapper depuis la JVM.

  • Corriger un bug sur certaines plateformes où la sortie de journal Java pouvait être corrompue en raison d'une mauvaise utilisation d'une fonction système strncpy. Cette fonction avertit que certaines implémentations ne prennent pas en charge les copies de mémoire se chevauchant. Le problème n'a pu être reproduit que sur une seule machine de test Linux, dans les lignes suivant une ligne de sortie vide. Ce problème existe depuis la version 3.4.0.

Version 3.5.10 : Modifications et corrections de bugs (2011-07-21)

  • Définir la valeur de la propriété wrapper.jvm.port sur '0' (zéro) fera que la JVM attribuera elle-même un port disponible pour le socket backend.

  • Ajouter des avertissements dans le fichier journal si la valeur d'une propriété de configuration entière contient une valeur non numérique. Auparavant, le Wrapper ignorait silencieusement le problème et utilisait la valeur « 0 » si le nombre commençait par un caractère invalide ; il renverra désormais la valeur par défaut. Si la valeur de la propriété commençait par des caractères numériques valides, ceux-ci étaient, et seront toujours, utilisés pour générer une valeur, mais les caractères invalides seront tronqués. Ce dernier comportement est conservé afin d'éviter de casser les anciennes configurations.

  • Ajouter des avertissements dans le fichier journal si une propriété de configuration booléenne a une valeur autre que TRUE ou FALSE. Elle renverra toujours une valeur FALSE pour les autres valeurs afin d'éviter de casser les anciennes configurations.

  • Ajouter un avertissement si une valeur invalide est spécifiée pour la propriété wrapper.on_exit.<n>.

  • Ajouter une nouvelle propriété wrapper.log.lf_delay.threshold qui permet de contrôler combien de temps une ligne partielle de sortie de journal Java sera autorisée à être mise en tampon jusqu'à ce qu'elle soit complétée par un saut de ligne. Si le seuil est dépassé, la ligne partielle sera enregistrée comme une ligne complète, ce qui entraînera un saut de ligne supplémentaire dans la sortie du journal. Toutes les versions précédentes le faisaient en 1-2 ms. La valeur par défaut est désormais de 500 ms.

  • (Éditions Standard et Professionnelle)

    Permettre de personnaliser le fabricant via les options de personnalisation.

  • (Édition Professionnellel)

    Corriger un problème où le Wrapper envoyait un signal CTRL-BREAK plutôt qu'un signal CTRL-C aux processus enfants lancés avec WrapperManager.exec() lors de leur destruction sous Windows. Pour la plupart des processus enfants, ce n'était pas un problème, mais si le processus enfant direct était une JVM, le CTRL-BREAK déclenchait un vidage de threads plutôt que de demander à la JVM de se terminer. Le Wrapper expirait alors et tuait de force le processus enfant JVM.

  • (Éditions Standard et Professionnelle)

    Correction d'un bug où le fuseau horaire ICT, lorsqu'il était défini par la propriété wrapper.timezone, était mal interprété comme IST.

  • (Éditions Standard et Professionnelle)

    Correction d'un problème où la valeur de décalage UTC dans la propriété wrapper.timezone n'était pas analysée correctement sur les plateformes UNIX. Cela amenait le Wrapper à utiliser un décalage UTC0000.

  • Retirer l'avertissement concernant la variable d'environnement LANG non définie sur les systèmes Linux et AIX. Au démarrage du système, certains systèmes ne parviennent pas à définir la variable d'environnement LANG. Ce n'est pas vraiment un problème pour le Wrapper et l'avertissement causait de la confusion chez les utilisateurs, nous avons donc décidé de le retirer.

Version 3.5.9 : Modifications et corrections de bugs (2011-05-09)

  • (Éditions Standard et Professionnelle)

    Corriger un problème sous Windows où les adaptateurs réseau dont les noms contenaient "PRO/1000" étaient retirés de la liste des HostIds affichée lors de l'exécution de "wrapper.exe -h". Cela n'affectait pas les fichiers de clés de licence serveur existants générés pour les HostIds signalés par la version 3.5.7 ou antérieure, ni les clés de licence de développement. Mais cela provoquait le signalement par le Wrapper qu'aucun HostId valide n'avait pu être trouvé lorsque le Wrapper était démarré sans fichier de licence. Cela était causé par du code de test ajouté dans la version 3.5.8 que nous n'avons pas réussi à retirer.

  • Corriger un problème où le Wrapper ne cédait pas correctement le contrôle à sa boucle principale lorsque de très grandes quantités de sortie continue étaient enregistrées depuis la JVM. Introduit dans la version 3.4.0. Dans les versions antérieures à 3.5.8, cela aurait pu provoquer l'expiration du délai d'attente de la JVM et son redémarrage. Ce problème particulier a été résolu, mais le processus Wrapper dans la version 3.5.8 serait resté sans réponse lorsque cela se produisait. Le Wrapper cédera désormais toujours le contrôle à sa boucle principale après 250 millisecondes de journalisation continue.

  • Corriger un problème où le WrapperManager pouvait se bloquer en tentant d'écrire la sortie de débogage si l'application utilisateur actuelle écrivait également de très grandes quantités de sortie vers la console. Dans des circonstances extrêmes, cela amenait le Wrapper à penser que la JVM était figée. Ce n'était un problème que si la sortie de débogage était activée.

  • Restructuration du script shell afin que toutes les éditions utilisent désormais à nouveau le même script.

  • Retirer l'avertissement concernant la variable d'environnement LANG non définie sur les systèmes Linux et AIX ; une variable d'environnement LANG non définie est peu courante mais n'est en fait pas un problème et l'avertissement était trompeur.

Version 3.5.8 : Modifications et corrections de bugs (2011-04-27)

  • (Éditions Standard et Professionnelle)

    À partir de la version 3.5.5, nous avons invalidé l'utilisation de tous les HostIds 00ff* sous Windows afin d'éviter les problèmes de HostIds changeants lorsque les utilisateurs ont un adaptateur réseau Juniper Network Connect sur leur système. Cela s'est avéré trop restrictif car les OS invités s'exécutant sous Parallels utilisent également cette plage de HostIds. Le Wrapper est désormais plus prudent et n'invalide que les HostIds Juniper Network Connect réels.

  • (Éditions Standard et Professionnelle)

    Améliorer le message affiché à l'utilisateur lorsque le Wrapper est incapable de localiser des HostIds pour un système.

  • Correction d'un problème avec le script Wrapper sous Solaris, où l'option -F n'était pas disponible pour grep.

  • Ajout des informations de version de Windows dans la sortie de débogage du Wrapper.

  • Ajout d'une propriété wrapper.log.warning.threshold qui fait afficher un avertissement par le Wrapper chaque fois qu'il détecte que le Wrapper a mis longtemps à enregistrer un message de journal. Ceci a été ajouté pour tester un problème signalé causé par des E/S lentes sur des systèmes très fortement chargés.

  • Ajout d'un nouveau format de journal 'G' pour enregistrer le temps en millisecondes du message de journal précédent. Consultez la documentation de la propriété wrapper.log.warning.threshold. Ajouté aux propriétés wrapper.console.format, wrapper.logfile.format et wrapper.logdialog.format.

  • Corriger un problème où un filtre demandant le redémarrage de la JVM était ignoré si la JVM se terminait d'elle-même immédiatement. Le Wrapper est désormais plus cohérent afin que les demandes de redémarrage provenant de la JVM ou des filtres aient toujours la priorité sur de telles demandes de sortie. Les demandes d'arrêt externes, ou celles provenant d'autres actions, se comporteront toujours comme par le passé et continueront d'arrêter le Wrapper. Le Wrapper enregistre également des messages dans la sortie de débogage si une demande de redémarrage en attente est conservée ou ignorée.

  • Correction d'un problème dans le fichier batch AppCommand.bat qui pouvait se produire sur certaines plateformes Windows avec certains encodages système multi-octets. Le script a été réécrit et les parties douteuses ont été simplifiées. La fonctionnalité du script a été préservée.

  • Ajout de la variable d'environnement WRAPPER_CONF_DIR, qui peut être utilisée pour les propriétés de configuration. Demande de fonctionnalité #3160644.

  • Faire en sorte que le script se termine avec le bon code de sortie reçu lors de l'exécution du script en tant qu'utilisateur différent, spécifié dans RUN_AS_USER. Bug #3185281.

  • Corriger une violation d'accès qui pouvait se produire lorsque le certificat de signature de code n'avait pas pu être vérifié.

  • Enregistrer une erreur si le socket backend est fermé de force de l'extérieur. Cela était enregistré au niveau de journal de débogage. Le message est « An existing connection was forcibly closed by the remote host. (0x2746) ». Comme le message n'était enregistré que si la sortie de débogage était activée, la JVM était redémarrée sans explication claire de ce qui s'était passé. La source de la fermeture du socket est en cours d'investigation.

  • (Édition Professionnellel)

    Ajout de l'appel Java fireUserEvent à l'API WrapperManager. Cela permet de déclencher des e-mails d'événements utilisateur, des actions sans le déclencheur de filtre. Vous trouverez également plus de détails sur le modèle de sécurité de cet appel sur la page de sécurité.

  • Corriger un avertissement sur les versions Mac si la commande java configurée n'était pas un binaire universel. Une vérification a été ajoutée dans la version 3.4.0 pour s'assurer que wrapper.java.command pointait directement vers un exécutable afin d'éviter un comportement inattendu lors de l'exécution d'un script. Le message n'est qu'un avertissement et le Wrapper continue malgré tout. Les binaires standard ppc, ppc_64, x86_64, i386, ainsi que les binaires universels, fonctionneront désormais tous correctement sans avertissement.

  • La valeur par défaut des propriétés wrapper.*.umask utilise le umask actuel du processus. Auparavant, la valeur par défaut était toujours 0022.

  • Ajouter une nouvelle propriété wrapper.backend.type utilisée pour contrôler si le Wrapper communique avec la JVM en utilisant le "SOCKET" traditionnel ou le nouveau "PIPE" expérimental. Ceci a été ajouté comme solution de contournement à un problème rare où certaines machines Windows ferment le socket au niveau du système d'exploitation. Cela n'a jamais été observé que sous Windows 2003, mais pourrait exister sur d'autres versions de Windows également.

  • Ajouter une nouvelle propriété expérimentale wrapper.use_javaio_thread qui fait que le Wrapper gère toute la sortie console Java dans un thread dédié.

  • Ajouter une nouvelle méthode WrapperManager.isNativeLibraryOk() qui permet au code utilisateur de tester facilement si la bibliothèque native a été chargée et initialisée au démarrage.

  • Ajouter une nouvelle commande PAUSE_THREAD à la propriété wrapper.commandfile qui permet de tester le comportement du Wrapper lorsque divers threads se bloquent ou se figent. Ceci a été utilisé pour simuler et reproduire des problèmes sur des serveurs fortement liés aux E/S.

  • Améliorer le comportement du côté Java du Wrapper lorsque le Wrapper échoue à pinger la JVM pendant une période prolongée. Auparavant, la JVM se terminait pour se resynchroniser. Cela causait des problèmes sur les systèmes fortement liés aux E/S car le Wrapper pouvait se bloquer un moment en tentant d'écrire dans le fichier journal et la JVM se terminait. La JVM ne se terminera désormais jamais dans de telles circonstances. La JVM ne deviendra jamais orpheline car elle se terminera toujours presque immédiatement si le socket ou le tube backend avec le Wrapper est jamais fermé.

  • Déprécier la méthode WrapperManager.appearOrphan() car elle est utilisée pour simuler un mode de défaillance qui n'est plus possible avec le Wrapper.

  • Modification de la façon dont le Wrapper gère les erreurs de certificat concernant le certificat de signature de code/horodatage. Le Wrapper ne s'arrêtera désormais que si la signature du binaire n'a pas été vérifiée avec succès parce que le binaire ou la signature a été malformé, mais pas si un problème avec le contre-signataire a été trouvé. À partir de la version 3.5.7, les binaires Wrapper Windows sont signés. Certains utilisateurs avec des systèmes Windows 2008 verrouillés avaient des problèmes avec le Wrapper refusant de démarrer parce que le certificat Comodo avait été désactivé sur leur système.

  • Ajouter une nouvelle propriété wrapper.jvm_detach_started qui permet d'utiliser le Wrapper comme un simple outil pour lancer des applications Java. Lorsqu'elle est activée, le Wrapper se termine immédiatement et la JVM est laissée à s'exécuter seule. Ajouter également les nouvelles propriétés wrapper.java.outfile et wrapper.java.errfile qui permettent de rediriger le stdout et le stderr de la JVM vers des fichiers lorsqu'elle est détachée.

  • Lors de l'exécution du Wrapper en tant que compte utilisateur spécifié, via la propriété wrapper.ntservice.account, le Wrapper ajoutera automatiquement la permission pour le compte de se connecter en tant que service lors de l'installation. Demande de fonctionnalité #3286491.

  • Correction d'un problème de liaison du socket backend sous Windows. Si un autre processus liait un port dans la plage wrapper.port.min et wrapper.port.max en utilisant l'option SO_EXCLUSIVEADDRUSE, le Wrapper s'arrêtait à ce port, signalait un problème de permission d'accès et omettait de lier tout autre port dans la plage. Ce problème existait depuis la sortie du Wrapper.

Version 3.5.7 : Modifications et corrections de bugs (2010-12-20)

  • Modification de la façon dont le script installe le démon sur un système AIX. Le script utilise désormais inittab & SRC.

  • Correction d'un problème dans le script shell qui empêchait le script de démarrer correctement le Wrapper si un fichier ou un répertoire d'un caractère de long existait dans le répertoire de travail courant. Ce problème ne se produisait que lorsque le nommage delta-pack du Wrapper était utilisé. Il était facile à reproduire sur les systèmes AIX au redémarrage du système car un répertoire "u" existe par défaut dans le répertoire racine. Ce problème existait depuis la version 3.4.0, où il avait été introduit comme correction d'un problème Solaris. La cause racine était un ensemble de guillemets manquants dans la commande tr.

  • Correction d'un problème dans le script shell qui empêchait le script de trouver le processus Wrapper en cours d'exécution lorsqu'il avait été démarré alors que le répertoire de travail était le même que celui du binaire Wrapper, mais interrogé plus tard depuis un autre emplacement. Il échouait également s'il était démarré depuis un autre emplacement, puis interrogé depuis l'emplacement du Wrapper. Ce problème a été introduit en 3.5.6 lorsque le script a cessé de changer le répertoire de travail.

  • Ajout d'une nouvelle action GC qui force la JVM à effectuer immédiatement un cycle complet de garbage collection. Consultez les propriétés wrapper.commandfile, wrapper.filter.action.<n>, wrapper.check.deadlock.action et wrapper.timer.<n>.action pour plus de détails.

  • (Édition Professionnellel)

    Modification légère de la propriété wrapper.event.<event_name>.command.block.action afin qu'elle avertisse désormais correctement si une action inconnue est rencontrée. Elle utilisait silencieusement CONTINUE par défaut.

  • Modification du moment d'affichage du message lorsqu'une directive #encoding est absente en haut d'un fichier de configuration. Il n'était journalisé que si la sortie de débogage était activée. Il sera désormais également journalisé si la directive #include.debug est spécifiée.

  • Correction de l'indentation des messages d'avertissement concernant les problèmes d'encodage ou d'inclusion dans les fichiers de configuration.

  • (Éditions Standard et Professionnelle)

    Correction d'un problème où des problèmes de fichiers inclus pouvaient provoquer des erreurs dans le script shell en raison d'une sortie traduite invalide du Wrapper.

  • Ajout d'un avertissement lorsque la profondeur maximale d'inclusion est atteinte et que le débogage des inclusions est activé. Le Wrapper se contentait auparavant d'ignorer silencieusement l'inclusion.

  • Correction d'un problème où la directive #include.required n'empêchait pas correctement le démarrage si le fichier inclus était manquant mais que l'inclusion requise se trouvait dans une inclusion imbriquée.

  • Correction d'un problème où la cause de certains problèmes d'inclusion fatals n'était pas journalisée correctement, ce qui ne produisait qu'un message simple et peu informatif indiquant que le fichier de configuration n'avait pas pu être chargé. Ce problème existait depuis la version 3.5.5.

  • Correction d'un problème Windows où le Wrapper pouvait échouer à démarrer en tant que service si une variable d'environnement définie s'étendait à une longueur supérieure à la limite de 32 ko spécifiée dans la fonction système ExpandEnvironmentStrings. Ce problème existait sur toutes les plates-formes Windows avant la version 3.5.5, mais uniquement sur Windows 2000 depuis lors, lorsque le code utilisé pour recharger l'environnement depuis le registre a été désactivé pour les versions plus récentes de Windows. Nous ignorons désormais simplement l'expansion de la variable problématique et continuons avec un avertissement. Bug #3103776.

  • Ajout d'un ensemble de propriétés système optionnelles que les classes d'aide WrapperSimpleApp, WrapperStartStopApp et WrapperJarApp connaissent, afin de leur indiquer d'ignorer les exceptions non interceptées levées dans les méthodes main de l'application utilisateur. Les exceptions seront toujours journalisées, mais elles peuvent désormais être configurées pour que la méthode main soit simplement autorisée à se terminer sans provoquer l'arrêt du Wrapper dans un état d'erreur. Java, à lui seul, restera en cours d'exécution dans un tel cas tant qu'au moins un thread non démon a été lancé avant que l'exception non interceptée ne soit levée. Cela n'affecte pas la plupart des utilisateurs, mais une application a été identifiée qui rencontrait des problèmes en raison de cette différence de comportement. Consultez les javadocs des classes d'aide pour plus de détails.

  • (Édition Professionnellel)

    Correction d'un problème lors de la recherche du code de sortie correct à utiliser pour la propriété wrapper.event.<event_name>.command.on_exit.<n>. Le Wrapper recherche désormais une valeur dans l'ordre suivant : wrapper.event.<event_name>.command.on_exit.<n>, wrapper.event.<event_name>.command.on_exit.default, wrapper.event.default.command.on_exit.<n>, puis wrapper.event.default.command.on_exit.default. Le troisième motif était ignoré dans les versions précédentes depuis son ajout en 3.3.0.

  • (Édition Professionnellel)

    Ajout d'une logique pour signaler un avertissement si une valeur inattendue est spécifiée pour la propriété wrapper.event.<event_name>.command.on_exit.<n>.

  • (Édition Professionnellel)

    Nettoyage des niveaux de journalisation des messages afin que la sortie soit conforme aux attentes lors de l'utilisation de la propriété wrapper.event.<event_name>.command.loglevel.

  • (Édition Professionnellel)

    Amélioration de la propriété wrapper.event.<event_name>.command.on_exit.<n> afin que l'action configurée fonctionne désormais même si la commande se termine après l'expiration du délai de blocage. Dans les versions précédentes, il n'y avait aucun moyen de faire autre chose que continuer.

  • (Édition Professionnellel)

    Correction d'un problème où le Wrapper ne détectait pas correctement la sortie de la JVM si une commande d'événement avait d'abord été déclenchée. Le seul problème était que le Wrapper signalait toujours un code de sortie JVM de 0 plutôt que le code de sortie réel.

  • Correction d'un débordement de tampon sous Windows lors de l'installation en tant que service, ou de la mise à jour d'un service existant. Le problème ne se produisait que lorsque des propriétés contenant des espaces, ou des arguments Java de passthrough contenant des espaces étaient spécifiés sur la ligne de commande. Le service en cours d'exécution n'avait aucun problème. Ce problème a été introduit en 3.5.0.

  • (Éditions Standard et Professionnelle)

    Amélioration du message d'erreur journalisé lorsqu'une version non licenciée de la bibliothèque native du Wrapper est utilisée.

  • (Éditions Standard et Professionnelle)

    Correction d'un problème de débordement de tampon sous Windows lors de la création d'un binaire Wrapper personnalisé si le nom du binaire cible n'incluait pas l'extension ".exe". Ce problème existait depuis son introduction en 3.3.7.

  • Les binaires wrapper.exe, wrapperW.exe et wrapper.dll sont désormais signés sous Windows, ce qui permet de vérifier que des binaires Tanuki Software valides sont utilisés.

  • Mise en œuvre d'un moyen d'install, remove, start, stop, etc., le Wrapper en tant que service Windows depuis une console non élevée (UAC). Le Wrapper est élevé de manière transparente à l'aide d'un processus enfant. Cela est nécessaire à partir de Windows Vista et 2008 pour une interaction fluide avec le Gestionnaire de services Windows.

  • (Éditions Standard et Professionnelle)

    Correction d'un problème où les fichiers localisés wrapperjni_*.mo n'étaient pas chargés correctement. Ces messages ne s'affichent que lorsque la sortie de débogage est activée. La localisation de l'application et du Wrapper fonctionnait correctement. Introduit en 3.5.5.

  • (Éditions Standard et Professionnelle)

    Amélioration de la capacité à s'exécuter avec des localisations autres que la langue du système sous Windows. La locale du processus Wrapper n'était pas définie correctement. Ainsi, le texte japonais ne s'affichait pas toujours correctement si la propriété wrapper.lang était définie alors que le système d'exploitation était en anglais ou en allemand. Le processus Java a toujours un problème : il démarre toujours avec la valeur par défaut du système pour la propriété système file.encoding. Cela peut encore poser des problèmes d'écriture de texte japonais lorsque file.encoding est par exemple allemand.

  • Ajout de la prise en charge dans le script shell du démarrage/de l'installation du Wrapper au démarrage du système avec upstart.

  • Correction d'un problème dans le script shell où il ne reconnaissait pas un Wrapper en cours d'exécution si la ligne de commande ou le chemin du Wrapper contenait un crochet.

  • Modification de la façon dont nous testons l'existence du répertoire temporaire : nous générons désormais notre propre nom de fichier plutôt que d'utiliser File.createTempFile. Sur certains systèmes, createTempFile prenait beaucoup de temps car cela nécessite que Java initialise son entropie interne. Nous avons découvert qu'un grand nombre de fichiers dans le répertoire java.tmpdir rend le code d'initialisation de l'entropie de Java très lent. Cela constituait un problème potentiel depuis la version 3.5.0.

  • Correction d'un problème sous Windows où les arguments de passthrough après un "--" qui contenaient des espaces n'étaient pas transmis intacts à la JVM : ils étaient découpés aux espaces en plusieurs arguments.

  • Correction d'un problème sous Windows où le Wrapper pouvait parfois planter à l'arrêt si plus d'un thread entrait dans le code de nettoyage en même temps. Cela n'affectait pas les applications en cours d'exécution et n'était un problème qu'à l'arrêt. C'était plus probable si un pack de langue était chargé. Introduit en 3.5.3.

Version 3.5.6 : Modifications et corrections de bugs (2010-10-15)

  • Correction d'un problème sur les plates-formes UNIX où le chemin du fichier journal était calculé incorrectement si un chemin absolu était spécifié pour wrapper.logfile, et que le fichier n'existait pas déjà. Un message d'avertissement s'affichait mais le Wrapper continuait d'utiliser le fichier journal par défaut. Il y avait un problème dans le message affiché qui provoquait un plantage sur certaines plates-formes, dont Mac OSX. Introduit en 3.5.5.

  • Correction d'un problème sur les plates-formes Windows où le Wrapper plantait s'il ne pouvait pas accéder au répertoire du wrapper.logfile configuré. Introduit en 3.5.5. Bug #3087424.

  • Amélioration de la façon dont les avertissements sont journalisés en cas de problèmes d'écriture dans le wrapper.logfile configuré, afin que le message soit désormais journalisé dans le fichier journal que le Wrapper finit par utiliser s'il parvient à se rabattre sur un fichier journal par défaut.

  • Correction d'un problème sur les plates-formes Windows où les propriétés wrapper.java.additional.<n> spécifiées sur la ligne de commande, et contenant des espaces, n'étaient pas requotées correctement lors de la construction de la ligne de commande Java. Introduit en 3.3.6.

  • Correction d'un problème où le message d'avertissement journalisé pour des valeurs invalides de la propriété wrapper.java.additional.<n> contenait du texte corrompu. Introduit en 3.3.6.

  • Correction d'un problème sur les plates-formes UNIX où une valeur invalide pour la propriété wrapper.java.additional.<n> était correctement signalée puis ignorée, mais la ligne de commande résultante pour lancer la JVM contenait une valeur vide qui empêchait la JVM de se lancer. Une valeur invalide est toute valeur qui ne commence pas par un caractère "-".

  • Ajout d'une nouvelle variable d'environnement WRAPPER_INIT_DIR qui peut être utilisée pour référencer le répertoire de travail depuis lequel le Wrapper a été lancé. Cela est nécessaire pour certaines applications car le Wrapper change toujours son répertoire de travail vers l'emplacement du binaire Wrapper.

  • Modification du script shell UNIX afin qu'il ne change plus le répertoire de travail courant vers l'emplacement du script. Cela n'est plus nécessaire car le Wrapper change le répertoire de travail vers son propre emplacement depuis la version 3.2.0.

  • Ajout d'une nouvelle propriété wrapper.request_thread_dump_on_failed_jvm_exit.delay pour contrôler combien de temps le Wrapper attend après un dump de threads avant de tuer le processus Java. Ce délai était jusqu'ici codé en dur à 5 secondes.

  • Nettoyage du texte de plusieurs messages d'avertissement concernant des valeurs de configuration invalides afin de les rendre plus cohérents.

  • (Édition Professionnellel)

    Ajout d'une nouvelle propriété wrapper.jvm_kill.delay qui permet de contrôler le temps à accorder entre le déclenchement de l'événement jvm_kill et la destruction effective de la JVM. Utile si une commande d'événement externe est déclenchée et doit d'abord faire quelque chose avec le processus JVM.

  • (Édition Professionnellel)

    Correction d'un problème où la sortie des propriétés wrapper.event.<event_name>.message et wrapper.event.<event_name>.loglevel ne s'affichait pas correctement sur les plates-formes UNIX.

  • (Édition Professionnellel)

    Correction d'un problème sur les plates-formes UNIX où le côté Java du Wrapper n'était pas correctement notifié si un grand nombre de processus enfants lancés avec WrapperManager.exec() se terminaient au même instant. Certains d'entre eux passaient dans un état défunct jusqu'à ce que le processus enfant suivant se termine, auquel cas ils étaient nettoyés. C'était principalement un problème à l'arrêt de la JVM si le code utilisateur appelait WrapperProcess.waitFor() dans le cadre de son processus d'arrêt. Les appels waitFor à n'importe quel moment restaient bloqués jusqu'à ce qu'un autre processus enfant se termine. Dans le cadre de cette correction, plusieurs modifications ont également été apportées à l'implémentation Windows afin de synchroniser les deux bases de code.

  • (Édition Professionnellel)

    Correction d'un problème sous Windows lorsque plusieurs threads créaient des objets Child : des Handles pouvaient être involontairement hérités par un autre processus enfant, provoquant des problèmes de lecture/écriture sur les flux Input/Output/Error.

  • (Édition Professionnellel)

    Correction d'un problème sur Solaris et AIX lorsque les appels errno n'étaient pas thread-safe en raison d'un commutateur du compilateur.

  • Correction d'un problème où la sortie d'avertissement de niveau de débogage lors du chargement de la configuration du Wrapper s'affichait au démarrage. Cela a pu être corrigé car le Wrapper charge en réalité la configuration deux fois, et une telle sortie n'est désormais journalisée que lors du second appel.

  • (Éditions Standard et Professionnelle)

    Suppression de la possibilité non documentée de définir un seul mappage de partage de fichiers sans index. Cela aurait provoqué de la confusion s'il avait été utilisé, et compliquait le code.

  • (Éditions Standard et Professionnelle)

    Correction d'un problème d'alignement des octets causé par une mauvaise directive de compilateur sur les plates-formes Windows. Il était connu pour provoquer un plantage lors de la définition de lecteurs mappés sur les versions Windows 64 bits. Le problème était dans le code source depuis la version 3.3.7, mais n'est pas connu pour avoir causé d'autres problèmes.

  • (Éditions Standard et Professionnelle)

    Modification des messages affichés lorsque des partages réseau sont mappés ou échouent pour une raison quelconque. Ajout également de messages concernant leur démontage à l'arrêt.

  • Sur certaines plates-formes Windows, un échec de suppression d'un fichier journal rotaté n'était pas signalé correctement. La fonction système de suppression d'un fichier renvoyait un succès même en cas d'échec. Nous vérifions désormais une seconde fois.

  • Correction d'un interblocage dans le code utilisé pour envoyer des données au processus Java. Il n'était possible que si la sortie de niveau de débogage était activée et que la rotation du fichier journal était activée. Introduit en 3.3.7.

  • Correction d'un problème où le Wrapper ne notifiait pas la JVM lorsque le fichier journal était rotaté et que le nouveau nom était identique au précédent, comme c'est le cas lorsque wrapper.logfile.rollmode a une valeur autre que NONE ou DATE.

  • Correction d'un problème où WrapperManager.getWrapperLogFile() ne renvoyait pas le nom exact du fichier journal jusqu'à la première rotation du fichier journal après chaque invocation de la JVM. Cela n'était perceptible que si wrapper.logfile contenait les jetons "ROLLNUM" ou "YYYYMMDD".

  • Correction d'un message d'erreur affiché sur les plates-formes UNIX lorsque le binaire java configuré n'était pas accessible. Le message référençait un tampon dont le contenu était indéfini sur certaines plates-formes.

  • Correction d'un problème sur z/OS où, en raison d'une différence dans l'API utilisée pour verrouiller un mutex par rapport à toutes les autres plates-formes UNIX, le code de verrouillage et de déverrouillage du mutex était effectivement ignoré. Cela signifie que plusieurs threads pouvaient accéder à du code qui n'était pas thread-safe et pouvaient provoquer un plantage du Wrapper. C'est un problème présent dans le code depuis la première version z/OS et il n'est pas connu pour avoir réellement causé de problèmes. À partir de la version 3.5.1, cela n'était un problème que si la sortie de débogage était activée. Les versions 3.3.9 à 3.5.0 pouvaient également avoir des problèmes chaque fois que le Wrapper recevait un signal système.

Version 3.5.5 : Modifications et corrections de bugs (2010-10-04)

  • Ajout d'une nouvelle action "SUCCESS" dans la propriété wrapper.filter.action.<n>. Si elle est déclenchée, le Wrapper traitera l'invocation JVM courante comme un succès et réinitialisera son compteur interne d'invocations en échec. Cela est utile pour les applications qui doivent être redémarrées fréquemment.

  • (Éditions Standard et Professionnelle)

    Ignorer les HostIds Juniper Network Connect car ils changent à chaque redémarrage et sont donc peu fiables en tant que HostIds.

  • Ajout d'un paramètre PASS_THROUGH au script shell UNIX et aux fichiers Windows AppCommand.bat.in qui leur indique de transmettre tout argument supplémentaire directement à la JVM lors de son lancement.

  • Ajout d'un paramètre FIXED_COMMAND au script shell UNIX et aux fichiers Windows AppCommand.bat.in pour permettre de s'exécuter sans spécifier de commande. Principalement utile en conjonction avec PASS_THROUGH.

  • (Éditions Standard et Professionnelle)

    Ajout d'une option --passthrough à la personnalisation de l'exe, afin d'indiquer au Wrapper de transmettre toute la ligne de commande à l'application dans la JVM.

  • (Éditions Standard et Professionnelle)

    Ajout d'une option --conf pour changer le fichier de configuration par défaut que le Wrapper tente d'ouvrir lorsqu'aucun fichier de configuration n'a été explicitement spécifié.

  • Ajout de la propriété wrapper.ntservice.account.prompt. Si elle est définie à TRUE, le Wrapper demandera tous les détails du compte (domaine, nom de compte, mot de passe) avant d'installer l'application en tant que service.

  • Correction d'un problème mineur dans les déclarations de fichiers #include où un espace en tête n'était pas requis.

  • Ajout d'une nouvelle directive #include.required qui fonctionne de la même façon que la directive #include sauf qu'elle affichera une erreur et empêchera le chargement de la configuration si le fichier inclus n'existe pas. Normalement, les fichiers inclus sont optionnels par conception.

  • Modification des messages d'erreur affichés lorsque les fichiers de configuration échouent à se charger afin qu'ils fournissent désormais plus d'informations sur l'emplacement précis du problème.

  • Désactivation du rechargement forcé du registre SYSTEM (et, s'il est défini sur un compte spécifique, de l'utilisateur) avant de lancer le Wrapper en tant que service sous Windows. Cela avait été fait à l'origine sous Windows NT car les modifications de l'environnement configuré n'étaient pas prises en compte lors de l'exécution d'un service à moins que le système n'ait d'abord été redémarré. Microsoft semble avoir résolu ce problème dans Windows XP et 2003. Sous Windows 7 et 2008, cela provoquait en réalité un problème car le registre SYSTEM contient par défaut un paramètre "USERNAME=SYSTEM" qui écrasait USERNAME lors de l'exécution en tant qu'utilisateur spécifique. Il a été décidé de désactiver ce chargement du registre pour les versions de Windows à partir de XP et 2003. Parmi les versions prises en charge, seul 2000 recharge désormais son environnement. La seule différence par rapport à la version 3.5.4 et antérieures qui a pu être identifiée est que, lors de l'exécution en tant qu'utilisateur SYSTEM sous Windows 7 ou 2008, la variable d'environnement USERNAME sera désormais définie sur le nom d'hôte suivi d'un signe dollar plutôt que SYSTEM. C'est en réalité ainsi que fonctionnent tous les autres services. Mais au cas où cela poserait un problème, il peut être résolu en ajoutant une propriété "set.USERNAME=SYSTEM" dans le fichier de configuration du Wrapper. Bug #3061490.

  • (Éditions Standard et Professionnelle)

    Correction d'un problème pour Solaris et HP-UX où les propriétés de délai d'"envoi" et de "réception" pour les notifications par e-mail étaient ignorées.

  • (Éditions Standard et Professionnelle)

    Ajout des propriétés wrapper.ntservice.recovery.<x> pour définir des actions au niveau système dans le cas où le processus Wrapper lui-même rencontre une défaillance.

  • (Éditions Standard et Professionnelle)

    Correction d'un problème dans les appels WrapperProcess.waitFor() et WrapperProcess.returnValue(), où ils ne renvoyaient pas lorsqu'ils étaient appelés après que le Wrapper avait initié l'arrêt de la JVM.

  • (Éditions Standard et Professionnelle)

    Ajout de la méthode WrapperProcessConfig.setSoftShutdownTimeout(int) pour indiquer au Wrapper combien de temps attendre après avoir demandé poliment au processus enfant de s'arrêter proprement lors de l'appel à WrapperProcess.destroy(). Une fois le délai écoulé, le processus enfant sera terminé de force. Ce délai était codé en dur à 5 secondes dans les versions antérieures.

  • Ajout d'une sortie d'utilisation plus détaillée au script shell UNIX.

  • Possibilité de faire un 'pause' et un 'resume' de la JVM depuis les scripts shell UNIX et batch Windows.

  • (Édition Professionnellel)

    Correction d'une fuite de mémoire mineure lors de l'initialisation des minuteries.

  • Correction d'une fuite de mémoire qui pouvait se produire s'il y avait des chaînes invalides dans les ressources de localisation.

  • (Édition Professionnellel)

    Correction d'un bug où les propriétés wrapper.event.<event_name>.command.argv.<n> n'étaient pas correctement analysées sous Windows. Ce problème a été introduit en 3.5.0.

  • (Édition Professionnellel)

    Ajout de la possibilité de définir des propriétés wrapper.event.default.command.argv.<n> qui seront utilisées si les commandes spécifiques à l'événement ne sont pas définies. Principalement utile pour les tests.

  • Correction d'un problème se produisant lorsque le Wrapper échouait à rotater le fichier journal, ce qui provoquait l'écriture dans le fichier journal par défaut du Wrapper (wrapper.log) plutôt que de continuer à écrire dans le fichier journal courant.

  • (Éditions Standard et Professionnelle)

    Correction d'un problème de put dans l'implémentation interne de table de hachage utilisée pour la localisation, où des valeurs pouvaient être perdues. Ce n'était pas un problème visible en raison des données utilisées.

  • Ajout de la nouvelle propriété wrapper.filter.allow_wildcards.<n> et possibilité de spécifier des motifs wrapper.filter.trigger.<n> contenant des jokers '*' et '?'.

  • Ajout d'une alternative commentée dans la configuration de filtre OutOfMemoryError par défaut pour la rendre plus spécifique afin de ne se déclencher que sur les traces de pile d'exceptions non interceptées. Cela vise à éviter que des sorties comme celles de l'argument JVM -XX:+PrintClassHistogram ne provoquent le redémarrage de la JVM avec un faux avertissement de manque de mémoire. Consultez l'exemple wrapper.filter.trigger.<n> OutOfMemoryError pour plus de détails.

  • Localisation du message de filtre par défaut.

  • Ajout de la prise en charge de l'encodage ISO-8859-* et de quelques autres encodages. Pour un aperçu complet, veuillez vous reporter à la page Internationalisation / Localisation.

  • (Éditions Standard et Professionnelle)

    Correction d'un problème sur les versions UNIX, lors de l'analyse des dates dans les clés de licence, introduit en 3.5.0. Les versions Windows n'avaient pas ce problème. Tous les termes de mise à niveau de licence et les termes de bail qui contenaient "08" ou "09" comme mois ou jour étaient analysés incorrectement. Cela amenait le Wrapper à interpréter ces composantes de date comme "00". Si le nombre était le jour, cela faisait définir la date au dernier jour du mois précédent. S'il s'agissait du mois, cela faisait définir la date à décembre de l'année précédente. Par exemple, "2010-08-20" était interprété comme "2009-12-20", et "2010-10-08" était interprété comme "2009-09-30". Cela aurait empêché certaines licences de démarrer car les termes de mise à niveau étaient en vigueur avant la date de publication du Wrapper. Certaines licences d'essai auraient également pu s'arrêter trop tôt car la fin de leur terme de bail était antérieure à ce qu'elle aurait dû être. Pour les licences normales, cela n'aura aucun effet sur les installations une fois qu'elles sont en cours d'exécution car elles n'utilisent pas le terme de bail.

  • Correction d'un problème sous Windows lorsqu'un service recevait plusieurs codes de contrôle de service en succession rapide. Depuis la version 3.5.1, le Wrapper ne traitait qu'un seul code de contrôle à chaque cycle de sa boucle principale. Cela produisait des messages comme "Previous control code (4) was still in queue, overwriting with (4)." dans les journaux. Le Wrapper peut désormais gérer jusqu'à 25 codes de contrôle par cycle de 10 ms.

  • Correction d'un problème où il n'était pas possible d'envoyer des arguments de passthrough à la JVM lors de l'installation ou de la mise à jour d'un service Windows. Le passthrough utilisant l'argument "--" a été ajouté en 3.5.2.

  • Ajout d'une nouvelle propriété wrapper.pause_on_startup qui permet d'indiquer au Wrapper de passer directement dans un état en pause sans jamais lancer de JVM.

  • Correction d'un problème où la commande STOP définie dans un fichier de commandes était ignorée si le Wrapper était actuellement dans un état en pause.

  • Possibilité de spécifier DEFAULT pour l'encodage du fichier de configuration. Cela fera charger le fichier en utilisant l'encodage système par défaut. Nous avons ajouté cela sur demande, mais recommandons d'utiliser un encodage portable comme UTF-8 pour garantir que le fichier de configuration se chargera correctement sur tous les systèmes.

  • Ajout d'une WRAPPER_LANG variable d'environnement qui permet de référencer le code de langue de la locale courante dans le fichier de configuration. Un usage courant est de faire de la localisation à l'aide d'inclusions. (p. ex. #include ../conf/wrapper-%WRAPPER_LANG%.conf pour charger #include ../conf/wrapper-en.conf ou #include ../conf/wrapper-de.conf)

Version 3.5.4 : Modifications et corrections de bugs (2010-08-25)

  • Ajout d'une prise en charge optionnelle de méthodes public static personnalisées dans les classes d'aide WrapperSimpleApp et WrapperStartStopApp. Feature Request #2812276.

  • Ajout d'une nouvelle directive spéciale de fichier de configuration "#properties.debug" qui active la sortie de débogage concernant les propriétés au fur et à mesure qu'elles sont chargées par le fichier de configuration. Cela peut être utile pour savoir si et pourquoi certaines propriétés sont écrasées. Feature Request #3042959.

  • Correction d'un problème mineur où la directive de fichier de configuration "#include.debug" était persistante, de sorte qu'elle restait activée lors du rechargement du fichier de configuration même si le fichier rechargé n'avait plus cette directive. Cela n'était un problème que si la propriété wrapper.restart.reload_configuration était définie.

  • Les messages concernant les fichiers de configuration inclus manquants qui étaient émis lorsque la directive de fichier de configuration "#include.debug" était active étaient journalisés au niveau ERROR alors qu'il ne s'agissait pas de problèmes.

  • Correction d'un problème mineur où la variable d'environnement WRAPPER_JAVA_HOME n'était pas correctement définie comme finale lorsqu'elle était définie en interne par le Wrapper. Cela pouvait conduire à des résultats inattendus si l'utilisateur l'écrasait plus tard dans son fichier de configuration.

  • Correction d'un problème sur AIX et z/OS, lors de l'exécution du Wrapper sans aucun argument. Le Wrapper tentait d'utiliser le fichier wrapper.conf par défaut mais la vérification du fichier échouait, ce qui faisait continuer le Wrapper même si le fichier n'existait pas. Cela provoquait l'affichage d'un message d'erreur confus, mais était par ailleurs sans conséquence.

  • Nettoyage de code de débogage associé à l'endormissement où la sortie de journalisation était mise en file d'attente alors que ce n'était pas nécessaire.

  • (Éditions Standard et Professionnelle)

    Consolidation de code redondant associé à l'attente des interfaces au démarrage.

  • (Édition Professionnellel)

    Correction d'un problème dans la fonctionnalité e-mail du Wrapper lorsqu'un sujet faisait plus de 27 octets de long une fois encodé en UTF-8. Cela était causé par un mauvais calcul dans la conversion Base64 du sujet.

  • (Édition Professionnellel)

    Correction d'un problème lorsque la méthode WrapperManager.exec qui prend un tableau d'éléments de commande était appelée sous Windows. Les éléments de commande doivent être combinés en une seule ligne de commande, mais si l'un des éléments contenait des espaces, la ligne de commande résultante n'était pas correctement quotée.

  • Ajout d'une nouvelle propriété wrapper.java.command.resolve pour contrôler si le Wrapper tente ou non de résoudre les liens symboliques dans la commande Java, spécifiée avec la propriété wrapper.java.command. Historiquement, il l'a toujours fait, mais certaines applications démarrées par la JVM comme run-java-tool sur Gentoo échoueront si elles sont exécutées directement car elles vérifient qu'elles sont lancées via un lien symbolique.

  • Correction d'un problème sur les versions Windows où un chemin vers le binaire Wrapper, y compris le binaire Wrapper lui-même, de plus de 100 caractères provoquait un débordement de tampon lors de l'installation du service. Un second problème similaire se produisait si le même chemin faisait plus de 128 caractères, chaque fois que le Wrapper était lancé. Il s'agissait dans les deux cas de très anciens problèmes qui ne se produisaient que sur les versions 32 bits de Windows XP et 2000. La documentation Microsoft indique que le problème devrait également exister sur les versions 64 bits, mais nous n'avons pas pu le reproduire. Les versions plus récentes de Windows fonctionnent toutes correctement.

Version 3.5.3 : Modifications et corrections de bugs (2010-08-03)

  • Correction d'une faute de frappe dans les scripts shell UNIX qui provoquait l'affichage d'erreurs "command not found" lors de l'exécution de l'édition Community.

  • Ajout des nouvelles propriétés wrapper.console.fatal_to_stderr, wrapper.console.error_to_stderr et wrapper.console.warn_to_stderr pour contrôler si la sortie aux niveaux de journalisation FATAL, ERROR et WARN va vers stdout ou stderr. Auparavant, elles allaient toutes vers stdout. Avec cette modification, les niveaux de journalisation FATAL et ERROR vont désormais par défaut vers stderr.

  • Correction d'un problème où le script shell produisait des résultats inattendus si les scripts shell des éditions Standard ou Professional étaient utilisés avec le Wrapper Community Edition. La correction se trouve dans le binaire Wrapper en changeant la sortie console par défaut des niveaux de journalisation ERROR et FATAL vers stderr plutôt que stdout.

  • (Éditions Standard et Professionnelle)

    Correction d'un problème où la sortie des messages d'erreur du script n'était pas affichée si le fichier wrapper.conf spécifié dans le script n'existait pas.

  • Correction d'un problème où les erreurs des forks échoués sous Windows étaient toujours vidées immédiatement plutôt que de respecter la valeur de la propriété wrapper.console.flush.

  • Correction d'un problème sur les systèmes Windows 2000 où une nouvelle fonctionnalité ajoutée en 3.5.2 empêchait le Wrapper de s'exécuter car l'API utilisée était trop récente.

  • (Éditions Standard et Professionnelle)

    Changement de la police de la boîte de dialogue wrapperw afin d'avoir un affichage plus joli des caractères multi-octets.

  • Ajout d'un saut de ligne après le premier message lors du démarrage du Wrapper depuis le script UNIX.

  • Ajout d'une note dans la sortie de débogage afin que le répertoire temporaire java configuré soit toujours journalisé pour faciliter le débogage.

  • Ajout d'une solution de contournement pour un bug dans les JVM Sun et IBM qui provoque le lancement d'une exception invalide lorsqu'un socket est déjà lié. Cela amenait le Wrapper à signaler : "Unexpected exception opening backend socket: java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind" : Bug #6965962.

  • Changement de l'encodage des sujets dans les e-mails d'événements pour qu'ils soient toujours encodés en UTF-8 Base-64.

  • (Édition Professionnellel)

    Ajout des nouvelles propriétés wrapper.event.<event_name>.email.smtp.auth.type, wrapper.event.<event_name>.email.smtp.auth.userid et wrapper.event.<event_name>.email.smtp.auth.password qui permettent d'effectuer des autorisations de connexion LOGIN et PLAIN. Les connexions SSL (STARTTLS) au serveur de messagerie ne sont pas encore prises en charge.

  • Correction d'un débordement de tampon lors du chargement du fichier de configuration sur les versions Mac OSX. Introduit en 3.5.0.

  • Correction de plusieurs fuites de mémoire sur les versions UNIX qui avaient été ajoutées en 3.5.0, ainsi que de quelques autres sur toutes les plates-formes, dont certaines provenant de versions assez anciennes.

  • Correction de quelques endroits où un chemin résolu d'exactement MAX_PATH caractères de long aurait pu provoquer un débordement de tampon.

  • (Éditions Standard et Professionnelle)

    Correction d'une fuite de mémoire lors de la destruction des packs de langue.

  • Parcours et amélioration de la cohérence des chaînes de texte.

  • Correction d'un problème sur HP-UX où le Wrapper journalisait un avertissement indiquant que la JVM configurée était invalide s'il s'agissait d'un binaire PA-RISC 2.0. Bug #3037317.

  • Correction d'un problème où le WrapperManager n'arrivait pas à intercepter et masquer les erreurs d'initialisation du serveur MBean sur certaines JVM qui ne le prenaient pas en charge.

Version 3.5.2 : Modifications et corrections de bugs (2010-07-21)

  • Ajout d'un nouvel argument de ligne de commande "--". Tous les arguments suivants seront précédés et transmis à l'application Java. Les arguments sont ajoutés après les arguments utilisés dans wrapper.app.parameter.<n>

  • Correction d'un problème dans le script shell qui pouvait conduire à signaler incorrectement des échecs de démarrage d'un démon sur la ligne de commande.

  • Implémentation d'une petite logique dans le script du Wrapper qui tente de modifier les permissions du binaire Wrapper pour le rendre exécutable si ce n'était pas le cas.

  • L'application de démonstration avait des problèmes pour localiser le bon fichier de configuration sur les plateformes UNIX et échouait à lancer le processus Wrapper de démonstration interne.

  • Amélioration du message d'erreur consigné si la version Windows du Wrapper se termine avec une erreur interne. Il consigne désormais plus d'informations sur l'état interne du Wrapper et enregistre également un fichier mini dump qui peut être envoyé au support pour faciliter le diagnostic de la cause du problème.

  • Correction d'un problème où les names et displayNames dans les instances WrapperWin32Service étaient corrompus. Cela affectait les méthodes WrapperManager.listServices(), WrapperManager.sendServiceControlCode() et WrapperManager.setConsoleTitle(). Introduit en 3.5.0.

  • Correction d'un problème sous Windows où les caractères génériques (wildcards) échouaient parfois à être résolus ou provoquaient un plantage du Wrapper. Cela affectait la génération des classpaths et la rotation du logfile. Introduit en 3.5.0.

  • Correction d'un problème où des caractères invalides dans les fichiers de configuration qui ne déclaraient pas d'encodage pouvaient provoquer un plantage du Wrapper au démarrage. Cela pouvait poser problème aux utilisateurs migrant depuis des versions antérieures à 3.5.0, car les anciennes versions n'effectuaient aucune traduction de jeu de caractères et n'auraient pas rencontré de problème.

  • Correction d'un problème dans le code vérifiant si un lecteur était un lecteur réseau mappé ou non, qui échouait. Cela pouvait parfois conduire à un faux avertissement indiquant que le lecteur ne pouvait pas être identifié. Introduit en 3.5.0.

  • Ajout d'une nouvelle commande ACCESS_VIOLATION à la propriété wrapper.commandfile pour tester le comportement du Wrapper et des systèmes externes si le Wrapper venait à planter. Activée uniquement lorsque la propriété wrapper.commandfile.enable_tests est activée.

Version 3.5.1 : Modifications et corrections de bugs (2010-07-08)

  • Utilisation d'une fonction système pour déterminer si un caractère du fichier de configuration est un caractère de contrôle ou non. Cela fonctionne ainsi sur les plateformes non ASCII.

  • (Éditions Standard et Professionnelle)

    Correction d'un plantage sur les plateformes Windows causé par la libération de mémoire non allouée lors du chargement de la configuration du Wrapper.

  • Ajout d'une sortie de débogage décrivant les pages de codes système et courantes sur les versions Windows afin d'aider à comprendre les problèmes d'encodage et de mojibake.

  • Ajout d'un fichier de configuration modèle localisé en japonais src/conf/wrapper.conf.in_ja pour aider les utilisateurs japonais. Voir la Configuration d'exemple.

  • Correction d'un interblocage potentiel sur les plateformes UNIX si la JVM se termine pendant que la journalisation a lieu et que les propriétés wrapper.debug ou wrapper.state_output (non documentée) étaient définies à TRUE.

  • Correction d'un problème où un échec d'invocation de la JVM survenant immédiatement après son lancement faisait que le Wrapper abandonnait immédiatement et s'arrêtait. Cela n'aurait pas dû être possible avec des configurations JVM normales, mais a été mis en évidence lors des tests.

  • (Éditions Standard et Professionnelle)

    Refonte de la façon dont le texte est localisé afin que tous les mallocs soient gérés à l'initialisation. La version 3.5.0 avait des problèmes de gels et de plantages occasionnels causés par des mallocs effectués dans les gestionnaires de signaux. Les problèmes étaient rares sauf si la sortie de débogage était activée.

  • Grande simplification des gestionnaires de signaux sur toutes les plateformes afin qu'ils fassent désormais le moins possible ; les actions sont maintenant mises en file d'attente puis traitées par le thread principal.

  • (Éditions Standard et Professionnelle)

    Correction d'un problème où le nom d'hôte dans la propriété wrapper.syslog.remote.host ne pouvait pas résoudre un nom d'hôte (l'adresse IP fonctionnait).

  • (Éditions Standard et Professionnelle)

    Ajout d'une sortie de débogage sur les versions Windows pour aider à déboguer les problèmes de localisation et de pages de codes.

  • (Éditions Standard et Professionnelle)

    Correction d'un problème de localisation sous Windows où le Wrapper utilisait la langue du système plutôt que celle du processus courant. Cela entraînait du mojibake si le Wrapper était lancé dans une nouvelle console qui ne prenait pas en charge la page de codes requise. Cela n'était un problème que si l'utilisateur avait modifié la page de codes active par rapport à celle par défaut de son bureau Windows.

  • Correction d'un problème sur les plateformes Windows où la sortie enfant de la JVM était consignée avec un saut de ligne supplémentaire dans certains cas.

  • Correction d'un problème d'exécution de DemoApp depuis certains partages réseau sous Windows.

  • Ajout de nouvelles méthodes WrapperManager.isWindows() et WrapperManager.isMacOSX() pour faciliter l'écriture de code conditionnel, car les deux plateformes peuvent nécessiter du code non standard.

  • (Éditions Standard et Professionnelle)

    Le fichier GetHostId.bat est désormais plus robuste afin de pouvoir être exécuté à l'aide d'une référence relative depuis la ligne de commande. Il prend également désormais en charge le nommage des binaires Wrapper de type Delta-pack et se rabat sur les binaires disponibles.

  • Modification du moment où wrapper.working.dir est défini afin que tous les messages d'erreur générés lors du chargement de la configuration soient consignés dans le bon fichier journal. Cela est également nécessaire pour les éditions Standard et Professional afin de s'assurer que le pack de langue est chargé depuis l'emplacement correct, de sorte que tous ces messages soient dans la locale correcte.

  • Correction d'un problème sur les plateformes UNIX où la commande status échouait avec une erreur en raison de la fonctionnalité de localisation ajoutée en 3.5.0.

Version 3.5.0 : Modifications et corrections de bugs (2010-07-01)

  • (Éditions Standard et Professionnelle)

    Ajout de la capacité à détecter et réagir aux interblocages de threads dans la JVM. Nécessite au moins Java 1.5. Ajout des propriétés wrapper.check.deadlock, wrapper.check.deadlock.interval, wrapper.check.deadlock.action et wrapper.check.deadlock.output pour configurer la détection.

  • Correction d'un problème où la propriété wrapper.app.parameter.1 était toujours définie à une chaîne vide lors du lancement depuis launchd sur Mac OSX. Cela fonctionnait correctement avec l'application testwrapper, mais échouait pour la plupart des applications utilisateur.

  • Correction d'un problème où les intervalles comme wrapper.ping.interval étaient tous arrondis à l'inférieur, les faisant fonctionner à un rythme d'une seconde plus court que configuré.

  • (Édition Professionnellel)

    Correction d'une fuite mémoire mineure lors de l'appel à WrapperManager.exec.

  • Ajout d'une nouvelle propriété wrapper.filter.message.<n> qui peut être utilisée pour contrôler le message consigné lorsqu'un wrapper.filter.trigger.<n> correspond.

  • Refonte de la façon dont les actions sont déclenchées pour les propriétés wrapper.filter.action.<n> et wrapper.timer.<n>.action afin qu'il n'y ait plus de code dupliqué.

  • Modification du fonctionnement des propriétés wrapper.filter.action.<n> et wrapper.timer.<n>.action afin qu'il soit désormais possible de spécifier une liste d'actions qui se produiront dans l'ordre indiqué. Cela permet d'effectuer un thread dump puis un redémarrage en réponse à une erreur.

  • Ajout de l'action DEBUG à la propriété wrapper.filter.action.<n> pour plus de cohérence.

  • (Édition Professionnellel)

    Implémentation de la capacité à déclencher des événements définis par l'utilisateur comme actions des propriétés wrapper.filter.action.<n>, wrapper.timer.<n>.action et wrapper.check.deadlock.action.

  • Correction d'un problème dans la fonction WrapperProcess.destroy(), lorsqu'un processus enfant n'avait pas pu être tué de force.

  • Ajout du fichier GetHosdID.bat pour les plateformes Windows. Ce fichier ouvrira une boîte de dialogue affichant le HostId de la machine.

  • Correction d'un problème dans le script shell qui, sur un OS basé sur rc, pouvait entraîner des problèmes de démarrage du Wrapper lorsque APP_NAME dans le script contenait des majuscules.

  • (Éditions Standard et Professionnelle)

    Ajout d'un ensemble de propriétés wrapper.share.<n>.* qui permet de configurer le Wrapper pour mapper des ressources réseau spécifiques avant de lancer la JVM sous Windows.

  • Correction de la façon dont le Wrapper s'installe en tant que service Windows lorsque le binaire et/ou le fichier de configuration se trouvent sur un lecteur mappé.

  • Amélioration de l'analyse de la ligne de commande pour la commande WrapperManager.exec. La version à un seul commandLine de l'appel exec gérera les guillemets de façon plus sophistiquée.

  • Modification de la propriété wrapper.syslog.ident afin que sa valeur soit désormais tronquée silencieusement à 32 caractères. Cela est nécessaire pour éviter des problèmes avec les serveurs syslog. (Voir RFC 3164 section 4.1.3)

  • (Éditions Standard et Professionnelle)

    Ajout des nouvelles propriétés wrapper.syslog.remote.host, wrapper.syslog.remote.port et wrapper.syslog.local.host qui peuvent être utilisées pour rediriger toute la sortie syslog (UNIX) ou Journal des événements (Windows) vers un serveur syslog distant.

  • Ajout de la prise en charge de la propriété wrapper.syslog.facility sous Windows afin que des entrées syslog distantes puissent être envoyées depuis les versions Windows du Wrapper.

  • Ajout d'une sortie de débogage de la classe WrapperManager qui affiche des informations sur le wrapper.jar actuel, y compris sa taille, son emplacement et son hash MD5.

  • Ajout d'une vérification des entrées wrapper.java.classpath.<n> contenant des guillemets. Les guillemets sont désormais retirés et un avertissement de débogage est consigné.

  • (Éditions Standard et Professionnelle)

    Augmentation de la taille de la boîte de dialogue d'erreur de wrapperW.exe afin qu'elle soit un peu plus facile à lire. La police a également été changée pour la même raison.

  • (Éditions Standard et Professionnelle)

    Modification du titre de la boîte de dialogue d'erreur de wrapperW.exe afin qu'il inclue désormais la valeur de la propriété wrapper.displayname.

  • Ajout d'une nouvelle vérification de l'accessibilité en écriture du répertoire temporaire Java configuré. Lors de l'exécution sous Vista, il ne sera pas accessible en écriture et cela peut entraîner des erreurs.

  • Ajout des nouvelles propriétés wrapper.java.tmpdir.required et wrapper.java.tmpdir.warn_silently pour contrôler si le répertoire temporaire est requis.

  • Ajout d'une note dans le modèle de configuration du Wrapper indiquant aux utilisateurs comment configurer une version Java spécifique à utiliser.

  • Ajout d'une nouvelle commande CLOSE_SOCKET à la propriété wrapper.commandfile et ajout d'une nouvelle propriété wrapper.commandfile.enable_tests pour contrôler si elle peut être utilisée.

  • Correction d'un avertissement de débogage lors de l'arrêt, causé par un thread fermant le socket backend alors qu'un autre s'attendait à ce qu'il soit ouvert.

  • Si le socket backend entre la JVM et le Wrapper est fermé d'une manière ou d'une autre, faire en sorte que la JVM réagisse rapidement en redémarrant immédiatement la JVM pour se resynchroniser avec le Wrapper. Ajout d'informations dans le journal pour indiquer clairement quand cela se produit.

  • Ajout d'une nouvelle propriété wrapper.use_tick_mutex pour contrôler si le minuteur de ticks interne est protégé par un mutex. (Expérimental)

  • (Éditions Standard et Professionnelle)

    Ajout de la prise en charge de zLinux 32 et 64 bits sur les systèmes s390 et s390x.

  • Modification de l'encodage interne du Wrapper, passant des caractères natifs à UNICODE. Cela permettra au Wrapper de gérer correctement tous les caractères dans son fichier de configuration et en interne.

  • (Éditions Standard et Professionnelle)

    Implémentation d'une nouvelle classe WrapperResources qui permet aux applications utilisateur de localiser leurs applications en utilisant les mêmes méthodes courantes pour les applications natives. Le Wrapper l'utilise en interne pour fournir des versions localisées du Wrapper.

  • Suppression de l'ancien package org.tanukisoftware.wrapper.resources car il n'est plus utilisé.

  • (Éditions Standard et Professionnelle)

    Ajout d'un pack de langue japonais pour localiser le Wrapper en japonais.

  • Correction d'un problème dans la classe WrapperManager où les exceptions inattendues levées dans la boucle principale du socket étaient ignorées sans être consignées.

  • Le Wrapper est désormais plus robuste face aux échecs de suppression du shutdown hook du Wrapper lors de l'arrêt. Cela provoquait l'échec de l'arrêt propre de la JVM, considéré comme une sortie inattendue.

  • (Éditions Standard et Professionnelle)

    Correction d'un problème dans le code de personnalisation du Wrapper où les icônes multicouches personnalisées pouvaient être redimensionnées incorrectement par Windows. Bug #3015848.

  • Modification de la propriété wrapper.on_exit.<n> afin qu'il soit désormais possible de PAUSE le Wrapper lorsqu'une JVM se termine. Cela retarde le redémarrage de la JVM jusqu'à ce que le Wrapper soit repris.

  • Ajout d'un nouveau format de journal, 'U', qui consigne le temps approximatif en secondes depuis le lancement du Wrapper. Il est basé sur le minuteur de ticks interne et sera de quelques pourcents inférieur au nombre réel de secondes écoulées. Ajouté aux propriétés wrapper.console.format, wrapper.logfile.format et wrapper.logdialog.format.

  • Correction d'un problème où la suppression du fichier d'ancrage configuré n'était pas reconnue si la JVM n'était pas en cours d'exécution à ce moment. Le Wrapper ne remarquait son absence qu'au lancement de la JVM suivante.

  • (Éditions Standard et Professionnelle)

    Ajout d'un nouveau niveau de journal NOTICE utilisé pour consigner les messages liés à la licence. Ceux-ci n'apparaîtront que dans la sortie journal des licences d'essai.

  • (Éditions Standard et Professionnelle)

    Ajout d'une nouvelle licence d'essai de 15 minutes par défaut qui peut être utilisée immédiatement sur n'importe quelle machine sans avoir besoin de s'enregistrer et d'obtenir une licence d'essai ou d'acheter une licence.

  • Ajout d'une nouvelle propriété wrapper.environment.dump qui affichera toutes les variables d'environnement dans le journal, ainsi que leur origine.

  • Forcer le Wrapper à vider (flush) toute la sortie du fichier journal pour chaque ligne jusqu'à ce que le fichier de configuration ait été chargé. Il n'y a normalement aucune sortie jusqu'à ce point, mais cela garantit que toutes les erreurs sont consignées à un emplacement cohérent.

  • Déplacement un peu plus tôt de l'enregistrement du thread principal auprès du système de journalisation afin de permettre une journalisation de débogage de bas niveau plus tôt.

  • Ajout d'un ensemble de vérifications pour afficher une erreur et empêcher le Wrapper de démarrer si les scripts batch ou shell utilisés sont basés sur l'application de démonstration TestWrapper. Il est important que l'utilisateur parte des fichiers modèles par défaut dans les répertoires src/bin et src/conf de la distribution pour s'assurer que l'intégration se déroule sans accroc.

Version 3.4.1 : Modifications et corrections de bugs (2010-05-11)

  • Correction d'un problème où la propriété wrapper.app.parameter.1 était toujours définie à une chaîne vide lors du lancement depuis launchd sur Mac OSX. Cela fonctionnait correctement avec l'application testwrapper, mais échouait pour la plupart des applications utilisateur.

  • (Édition Professionnellel)

    Correction d'un problème potentiel de synchronisation dans la sortie journal du minuteur de ticks, des commandes d'événements et du code d'e-mail d'événements. Cela était présent dans le code depuis la version 3.3.0 sans aucun rapport de problème.

  • Amélioration du message d'erreur affiché lorsque le wrapper.java.command configuré ne peut pas être trouvé dans le PATH.

  • Consigne le nom du signal dans les journaux lorsqu'un SIGSEGV est détecté depuis la JVM. Il était consigné comme Unknown.

  • Ajout de quelques commentaires au modèle wrapper.conf.in pour aider les utilisateurs à démarrer avec un nouveau fichier de clé de licence.

  • Ajout de quelques propriétés par défaut au fichier modèle wrapper.conf.in pour faciliter la mise en place des vérifications de mémoire insuffisante (out of memory), ainsi que l'envoi d'e-mails d'alerte.

  • Ajout d'un petit message de débogage lors de l'exécution de wrapperW.exe afin qu'il soit clair quel binaire Wrapper est utilisé.

  • (Édition Professionnellel)

    Correction d'un problème dans la fonction WrapperProcess.destroy(), où la fonction échouait à tuer de force le processus enfant.

  • (Éditions Standard et Professionnelle)

    Ajout d'un nouveau fichier GetHostID.bat pour les plateformes Windows. Ce fichier ouvrira une boîte de dialogue affichant le HostId de la machine pour aider les nouveaux utilisateurs à démarrer.

  • Ajout d'une nouvelle méthode WrapperManager.appearOrphan() qui peut être utilisée pour tester comment le WrapperManager arrête la JVM dans le cas où le processus Wrapper planterait ou se figerait. Cela n'était dû à aucun problème particulier et a été ajouté pour compléter notre couverture de tests.

  • Correction d'un problème où wrapper.logfile.maxfiles n'était pas appliqué au démarrage lorsque le fichier journal actuel n'existait pas encore. Cela était vrai pour toute valeur de wrapper.logfile contenant une valeur unique comme un PID.

  • (Édition Professionnellel)

    Correction d'un bug laissant une commande d'événement dans un état défunt après son exécution.

  • (Édition Professionnellel)

    Ajout de la propriété wrapper.event.<event_name>.command.block.action, avec laquelle le comportement du Wrapper vis-à-vis d'une commande dont le délai est écoulé peut être spécifié. Les valeurs possibles sont KILL ou CONTINUE, la valeur par défaut est CONTINUE.

  • (Édition Professionnellel)

    Correction d'un problème où les commandes d'événements étaient laissées dans un état défunt après exécution sur les plateformes UNIX.

  • Correction d'un problème potentiel sur les versions 64 bits où le minuteur de ticks interne ne bouclait pas de la même façon que sur les versions 32 bits. Cela était présent dans toutes les versions précédentes mais n'est pas connu pour avoir causé de problèmes. Cela a été corrigé pour plus de cohérence.

  • Modification de la classe WrapperManager afin qu'elle demande désormais une sortie forcée de la JVM seulement après 4 fois le délai d'expiration du ping, en secondes, depuis le dernier contact avec la JVM. C'était auparavant 90 secondes de plus que le délai d'expiration du ping, ce qui n'était pas toujours assez long lorsque wrapper.ping.timeout était très grand.

  • Décalage du point de départ initial du compteur de ticks afin qu'il boucle 50 secondes après le démarrage. Cela ne devrait pas être perceptible pour l'utilisateur, mais garantit que ce bouclage est beaucoup mieux testé car il se produit toujours la première fois au démarrage.

  • Ajout d'une nouvelle propriété wrapper.java.classpath.use_environment qui permet de définir le classpath en utilisant la variable d'environnement CLASSPATH plutôt que de l'inclure sur la ligne de commande Java.

  • Correction d'un problème où les demandes d'arrêt du Wrapper, lorsqu'il était sur le point de lancer une JVM, étaient ignorées. Cela a été corrigé dans toutes les éditions, mais n'était un problème que dans l'édition Professional lorsque la propriété wrapper.event.jvm_prelaunch.command.on_exit.<n>=SHUTDOWN était utilisée avec la propriété wrapper.event.jvm_prelaunch.command.block=TRUE et que la commande se terminait avec un code déclenchant le SHUTDOWN.

  • (Édition Professionnellel)

    Ajout d'une nouvelle propriété wrapper.event.<event_name>.command.block.action pour contrôler le comportement du Wrapper lorsqu'une commande n'achève pas son exécution dans le délai d'expiration configuré. Les valeurs acceptées sont CONTINUE, KILL, KILL_SHUTDOWN et KILL_RESTART. La valeur par défaut est CONTINUE.

  • (Édition Professionnellel)

    Il est désormais possible d'utiliser le type d'événement "default" avec les propriétés wrapper.event.<event_name>.command.loglevel, wrapper.event.<event_name>.command.block, wrapper.event.<event_name>.command.block.timeout, wrapper.event.<event_name>.command.on_exit.<n> et wrapper.event.<event_name>.command.on_exit.default.

  • Correction d'un débordement de tampon d'un seul octet qui se produit juste avant le lancement de la JVM sur les plateformes Windows. Cela a été introduit en 3.4.0.

  • Ajout d'un message indiquant à l'utilisateur le fichier journal du Wrapper lorsque le service échoue à démarrer après avoir été lancé.

  • Mise à jour du message de débogage affiché lors de la tentative d'ouverture du socket backend si le port n'est pas disponible, afin que cela ne paraisse pas être un problème. Il réessaiera avec un autre port.

  • Contournement d'un problème sur certains Solaris où le script shell échouait si /usr/ucb/ps n'était pas installé.

  • Correction d'un problème sur les versions UNIX où le Wrapper échouait à résoudre l'emplacement correct de java s'il était localisé via le PATH système, et que cet élément du PATH pointait vers un binaire via un lien symbolique relatif. Cela a été introduit en 3.4.0.

Version 3.4.0 : Modifications et corrections de bugs (2010-03-16)

  • Augmentation de la version Java minimale prise en charge de 1.2 à 1.4.

  • Suppression du code de réflexion utilisé pour gérer le shutdown hook du Wrapper. Les méthodes Runtime sont désormais appelées normalement.

  • Ajout d'une note dans le script shell TestWrapper pour indiquer clairement que l'utilisateur doit toujours utiliser les scripts du répertoire WRAPPER_HOME/src/bin/ lors de la génération de scripts pour ses propres applications. Cela est devenu plus important en raison des modifications du script TestWrapper à partir de la version 3.3.8. Bug #2902843.

  • Ajout des commandes d'installation et de suppression au script shell UNIX afin qu'il soit désormais beaucoup plus facile d'installer et de supprimer le Wrapper sur de nombreuses plateformes UNIX pour le démarrer et l'arrêter au démarrage et à l'arrêt du système. Merci à Leo Leung pour le correctif.

  • (Édition Professionnellel)

    Ajout de nouvelles méthodes WrapperManager.exec et d'une nouvelle classe WrapperProcess pour permettre le lancement et la gestion de processus enfants via le Wrapper plutôt qu'en utilisant la classe Runtime standard. Cela permet de nettoyer les processus enfants lorsque la JVM plante ou est redémarrée, et résout également de graves problèmes de mémoire liés à la façon dont les processus sont forkés sur certaines plateformes UNIX.

  • Correction d'un problème avec les méthodes WrapperManager.getUser et getInteractiveUser qui nous empêchait d'utiliser le dernier compilateur sur Windows 32 bits. (Le compilateur utilisé pour construire les versions Windows 32 bits a été ramené dans la 3.3.9 à la version utilisée jusqu'à la version 3.3.5 pour contourner le problème qui faisait que ces méthodes retournaient toujours null.) Le changement dans cette version ne devrait pas affecter le fonctionnement du Wrapper.

  • L'ancien compilateur utilisé en 3.3.9 pour les builds Windows 32 bits provoquait une fausse alerte sur le logiciel de sécurité Symantec. Le nouveau compilateur permet au Wrapper de passer à nouveau sans aucun avertissement.

  • Ajout d'un avertissement au démarrage de la JVM qui sera affiché si la commande Java dans wrapper.java.command ne pointe pas vers un fichier binaire java valide.

  • Modification des scripts et fichiers batch pour tenter de charger l'exécutable Wrapper selon le système, c.-à-d. que sur les systèmes 64 bits, le binaire 64 bits du Wrapper est tenté d'être exécuté en premier et, en cas d'échec, le 32 bits est tenté d'être chargé. Ce comportement est principalement utile avec le delta-pack du Wrapper.

  • Ajout d'une sortie de débogage consignant le fuseau horaire actuel pour aider à diagnostiquer les problèmes liés au temps.

  • (Éditions Standard et Professionnelle)

    Ajout d'une nouvelle propriété wrapper.license.debug qui consignera des informations sur la ou les clés de licence testées au démarrage.

  • (Éditions Standard et Professionnelle)

    Correction d'un problème où la validation de licence échouait à certains moments de la journée pour les serveurs dont le fuseau horaire est à l'est du Japon. Les clés de licence de développement dont les heures de mise à jour sont obfusquées n'étaient pas affectées. C'était un problème introduit en 3.3.7.

  • Correction d'un bug dans le script shell du Wrapper qui se produisait lors de l'exécution du script sur Solaris dans une locale non mono-octet. Bug #2910327.

  • Correction d'un bug potentiel dans le script du Wrapper où, lors d'une demande de Thread Dump, le shell envoyait la console du Wrapper en arrière-plan et revenait avec une invite.

  • Correction d'un problème où la sortie journal Java recevait parfois des sauts de ligne supplémentaires sous charge élevée.

  • Correction d'un problème qui entraînait une erreur de ressource introuvable lors de la tentative de démarrage d'un service, s'il était installé sur un lecteur réseau mappé sous Windows.

  • Ajout de quelques messages de conseil recommandant l'utilisation de chemins UNC si une ressource située sur un lecteur réseau mappé est utilisée dans le fichier de configuration sur les versions Windows.

  • (Éditions Standard et Professionnelle)

    Correction d'un bug dans la personnalisation du binaire Wrapper, qui se produisait lorsque le fichier binaire source était en lecture seule.

  • Correction d'un problème de chaîne nulle dans le message d'erreur si une valeur de classpath n'était pas trouvée.

  • (Édition Professionnellel)

    Ajout de l'option d'inclure un fichier journal dans les e-mails EmailNotification du Wrapper via wrapper.event.default.attach_log=TRUE

  • Amélioration du message affiché lorsqu'un utilisateur appelle WrapperManager.requestThreadDump() dans une JVM qui n'a pas de fenêtre de console sous Windows. Cela ne devrait jamais poser problème lors de l'exécution avec le Wrapper, mais peut arriver en exécution autonome sans le binaire Wrapper.

  • (Éditions Standard et Professionnelle)

    Ajout des propriétés wrapper.wait_for_hostid et wrapper.max_hostid_timeout. Ces propriétés définissent si et combien de temps le Wrapper doit attendre au démarrage jusqu'à ce que le HostId soit disponible. Cela est important pour s'assurer que les licences serveur sont validées correctement sur les plateformes UNIX lors du démarrage de l'OS.

  • (Édition Professionnellel)

    Correction d'un problème où les variables d'environnement référencées dans les valeurs de propriétés n'étaient pas développées correctement la première fois qu'elles étaient référencées si la valeur de la propriété était une valeur par défaut. La correction sous-jacente était dans toutes les éditions, mais cela ne causait un problème que dans l'édition Professional où la variable WRAPPER_HOSTNAME n'était pas développée dans le sujet et le corps des e-mails envoyés pour l'événement "wrapper_start" si les valeurs par défaut étaient utilisées.

  • (Édition Professionnellel)

    Correction d'un problème où les barres obliques inverses dans le corps des e-mails, configurés avec la propriété wrapper.event.<event_name>.email.body, n'étaient pas gérées correctement lors de l'affichage d'éléments comme des chemins provenant de références de variables d'environnement.

  • Correction d'un problème sur les plateformes UNIX où le Wrapper affichait une erreur indiquant qu'il ne pouvait pas localiser le fichier de configuration lorsque le Wrapper était exécuté sans aucun argument.

  • (Éditions Standard et Professionnelle)

    Amélioration du message affiché lorsqu'une clé de licence n'est pas trouvée.

  • Ajout d'un nouveau message à l'édition Community lorsque l'utilisateur demande un HostId.

  • Ajout de WAIT_FOR_STARTED_STATUS et WAIT_FOR_STARTED_TIMEOUT au script. Cela permet au script d'attendre (jusqu'à timeout sec.) lors du démarrage d'un processus démonisé jusqu'à ce que le processus ait démarré. Merci à Dobes V. Demande de fonctionnalité #2917391.

  • Amélioration du message d'erreur affiché lorsque l'utilisateur tente d'exécuter le Wrapper avec les commandes internes -s ou --service.

  • Correction d'un problème où la méthode WrapperSystemPropertyUtil.getBooleanValue() ne retournait pas correctement la valeur par défaut spécifiée lorsque la propriété recherchée était absente. Ajout également d'une nouvelle méthode getStringValue().

  • Amélioration du message d'erreur affiché lorsque l'utilisateur tente d'installer et de supprimer le Wrapper en tant que service sur les versions de Windows postérieures à Windows Vista.

  • Ajout d'un message de conseil lorsque des applications Mac OS X lancées avec launchd rencontrent une erreur "Returning nil _server" lors de l'affichage d'une interface graphique.

Version 3.3.9 : Modifications et corrections de bugs (2009-11-16)

  • Modification de la façon dont les fonctions JNI sont appelées depuis la bibliothèque native afin qu'elles fonctionnent correctement sur les plateformes qui ne sont pas basées sur ASCII.

  • (Édition Professionnellel)

    Ajout de la prise en charge des serveurs IBM z/OS 390. Il s'agit encore d'une version alpha qui sera mise à disposition sur demande.

  • Amélioration du message affiché lorsqu'une clé de licence serveur est utilisée sur un serveur différent.

  • Ajout d'une taille maximale minimale de fichier de 1024 octets à la propriété wrapper.logfile.maxsize pour éviter que le fichier journal ne tourne trop souvent si l'utilisateur saisit une valeur très petite.

  • Ajout d'un message qui s'affiche dans la console lorsque le Wrapper échoue à écrire dans le fichier journal configuré. Comme dans les versions précédentes, il se rabat alors sur l'écriture dans wrapper.log dans le répertoire de travail courant.

  • Sur les plateformes UNIX, définition automatique de la propriété wrapper.disable_console_input lorsque wrapper.daemonize est défini.

  • Correction d'un problème introduit en 3.3.8 où les inclusions relatives de fichiers de configuration échouaient à se résoudre correctement lorsque les propriétés wrapper.working.dir et wrapper.daemonize étaient utilisées ensemble. La propriété wrapper.daemonize provoque le chargement de la configuration deux fois au démarrage et le répertoire de travail n'était pas réinitialisé correctement avant le second chargement.

  • Correction d'un problème introduit en 3.3.8 où la sélection de fichiers par caractères génériques sous Windows échouait dans certains cas.

  • Correction d'un problème introduit en 3.3.8 où le fait de définir la propriété wrapper.logfile.maxfiles à 0 provoquait la suppression de tous les fichiers journaux plutôt qu'aucun lorsque le motif de fichier ROLLNUM était utilisé.

  • Rétablissement de la façon dont les fichiers journaux rotés sont supprimés lors de l'utilisation du motif de fichier ROLLNUM, conformément à la fonctionnalité utilisée en 3.3.7 et antérieures. Des fichiers tels que wrapper.log.bak ou d'autres fichiers créés manuellement avec le même nom de base de fichier journal étaient également supprimés avec la version 3.3.8.

  • (Éditions Standard et Professionnelle)

    Correction d'un problème où le bouton de fermeture de fenêtre dans le titre de la boîte de dialogue de journal WrapperW n'annulait pas correctement la boîte de dialogue.

  • (Éditions Standard et Professionnelle)

    Correction d'un problème où la boîte de dialogue de journal WrapperW échouait parfois à s'afficher au-dessus des autres fenêtres si l'écran de démarrage avait été affiché au lancement.

  • Correction d'un problème sur les versions Windows 32 bits où, en démarrant avec le Wrapper, les méthodes WrapperManager.getUser() et getInteractiveUser() retournaient toujours null. Ce problème a été introduit en 3.3.6.

  • (Édition Professionnellel)

    Correction d'un débordement de tampon lors de l'envoi d'e-mails d'alerte à plusieurs adresses. Cela provoquait parfois des plantages en 3.3.7 et 3.3.8 même lors de l'envoi d'e-mails d'alerte à un seul destinataire. En raison de la nature du débordement, dans la plupart des cas cela ne causait aucun problème.

Version 3.3.8 : Modifications et corrections de bugs (2009-11-06)

  • (Éditions Standard et Professionnelle)

    Ajout du nouveau type de démarrage DELAY_START pour les services NT, qui démarre le service après le démarrage des autres services en démarrage automatique, plus un court délai.

  • Correction d'un problème où le fichier PID du Wrapper n'était pas défini avec le PID correct lorsque le Wrapper était lancé en mode démon. Avec les scripts shell fournis avec le Wrapper, cela signifie qu'il n'était pas possible d'arrêter le Wrapper à l'aide du script car le PID attendu n'existait pas. Ce problème a été introduit dans la version 3.3.7.

  • (Éditions Standard et Professionnelle)

    Modification du timing de l'écran de démarrage du Wrapper lorsque le mode d'écran de démarrage était défini sur JVM_STARTING. Désormais, l'écran de démarrage disparaît lorsque la JVM a été initialisée.

  • (Éditions Standard et Professionnelle)

    Correction d'un problème où l'écran de démarrage s'affichait lors du démarrage d'un service ou de l'exécution d'autres opérations en ligne de commande.

  • Suppression de certaines sorties de débogage supplémentaires au démarrage pour les versions Mac.

  • Correction d'un plantage dans l'édition Community sur les plateformes PPC de la version Mac OSX. Ce plantage a été reproduit dans toutes les versions à partir de 3.3.1. La distribution OSX est un binaire universel mais ne semble pas provoquer de plantage sur les serveurs x86. Les éditions Standard et Professional n'étaient pas affectées.

  • Correction d'un problème sur les versions Windows où les problèmes d'accès au registre ne rapportaient pas le message d'erreur correct. Cela ne causait pas de problèmes en soi, mais rendait difficile le suivi de la cause.

  • Lorsque des caractères génériques sont utilisés dans les éléments du classpath, la liste des fichiers jar correspondants inclus dans le classpath est désormais triée afin de garantir que leur ordre soit cohérent d'une installation à l'autre. Normalement, cela n'aurait pas d'importance, mais si certaines classes ou ressources sont redéfinies dans plusieurs jars, cela garantit que l'application fonctionne désormais toujours de la même manière.

  • Correction d'un problème où wrapper.logfile.maxfiles était ignoré lorsque wrapper.logfile.rollmode=JVM était défini.

  • Modification du fonctionnement de la propriété wrapper.logfile.maxfiles avec le jeton ROLLNUM. Désormais, lorsque les fichiers journaux font l'objet d'une rotation, tous les fichiers dont le numéro dépasse le nombre maxfiles seront supprimés. Auparavant, le Wrapper effectuait la rotation dans la limite de maxfiles et ignorait les fichiers supplémentaires s'ils existaient. Cela laissait des fichiers supplémentaires si la valeur de la propriété maxfiles était diminuée.

  • Ajout des nouvelles propriétés wrapper.logfile.purge.pattern et wrapper.logfile.purge.sort qui permettent de limiter le nombre de fichiers journaux dans certains cas avancés. Veillez à lire la documentation avant de les utiliser.

  • Correction d'un plantage potentiel lors de la référence à des variables d'environnement inexistantes dans la valeur de wrapper.logfile.

  • Modification du comportement de toutes les propriétés utilisées pour définir des noms de fichiers afin que les références à des variables d'environnement non définies aient désormais leurs caractères '%' remplaçés par '_'. Ceci afin d'éviter les problèmes causés par des noms de fichiers contenant des caractères '%' sur certaines plateformes.

  • Correction d'un problème introduit dans la version 3.3.6 où les fenêtres affichées par la JVM ou ses processus enfants ne pouvaient pas être affichées en mode interactif.

  • Retravail de l'application TestWrapper afin qu'elle puisse désormais être exécutée en mode headless pour les tests.

  • Correction d'un problème sur certaines plateformes UNIX où le script shell affichait un '-n' supplémentaire lorsqu'il était exécuté avec la commande "start".

  • Correction d'un problème sous FreeBSD qui pouvait empêcher le Wrapper d'arrêter le démon Wrapper si la taille du tampon de la commande ps (kern.ps_arg_cache_limit) était trop petite pour contenir la ligne de commande du Wrapper.

Version 3.3.7 : Modifications et corrections de bugs (2009-10-20)

  • (Éditions Standard et Professionnelle)

    Ajout de la possibilité de personnaliser les binaires wrapper.exe et wrapperW.exe sous Windows avec une icône et un écran de démarrage spécifiés par l'utilisateur.

  • (Éditions Standard et Professionnelle)

    Ajout d'une nouvelle propriété wrapper.splashscreen.mode pour contrôler la durée d'affichage de l'écran de démarrage.

  • Correction d'un problème sous SELinux où une politique de sécurité stricte pouvait empêcher le Wrapper de charger la bibliothèque libwrapper. Merci à Jean pour l'indication.

  • (Éditions Standard et Professionnelle)

    Correction d'un problème dans la date de licence obfusquée, qui faisait qu'une licence était signalée comme invalide si elle était exécutée dans un fuseau horaire à l'ouest du Japon. Cette fonctionnalité a été implémentée dans la version 3.3.6, mais désactivée sur le site jusqu'à la sortie de 3.3.7. Merci à Leo pour l'indication.

  • Correction d'un problème sous SELinux où une politique de sécurité stricte pouvait empêcher le Wrapper de charger la bibliothèque libwrapper. Merci à Jean pour l'indication.

  • Ajout d'une nouvelle variable d'environnement WRAPPER_PID. Feature Request #2870136.

  • Ajout d'une nouvelle méthode WrapperManager.getWrapperLogFile() et d'une classe WrapperLogFileChangedEvent pouvant être utilisées pour recevoir des notifications des modifications du fichier journal du Wrapper actuellement utilisé. Feature Request #2870133.

  • (Édition Professionnellel)

    Amélioration de la propriété wrapper.event.<event_name>.email.recipient afin qu'elle prenne désormais en charge la possibilité de spécifier plusieurs destinataires.

Version 3.3.6 : Modifications et corrections de bugs (2009-08-29)

  • (Éditions Standard et Professionnelle)

    Introduction de la propriété wrapper.timezone. Cette propriété permet de définir le fuseau horaire dans lequel le Wrapper sera exécuté.

  • Correction d'un problème potentiel sur les plateformes Windows où un échec d'enregistrement du gestionnaire de contrôle n'était pas consigné. Si cela se produisait, les déconnexions utilisateur n'étaient pas interceptées correctement, mais aucun autre problème ne se serait produit.

  • Correction d'un petit problème dans le script shell sur les plateformes Solaris où une structure de répertoires profonde faisait que le script indiquait incorrectement que le Wrapper n'était pas en cours d'exécution. Cela pouvait conduire à plusieurs copies zombies du Wrapper et de son application en mémoire. Bug #1664303.

  • Correction d'un problème dans le script shell sur les plateformes HP-UX où une structure de répertoires profonde faisait que le script indiquait incorrectement que le Wrapper n'était pas en cours d'exécution. Cela pouvait conduire à plusieurs copies zombies du Wrapper et de son application en mémoire. Bug #2812207.

  • Amélioration du message d'erreur affiché en cas de problèmes d'initialisation de la classe principale spécifiée pour les classes d'aide WrapperSimpleApp, WrapperStartStopApp ou WrapperJarApp.

  • (Édition Professionnellel)

    Ajout des nouvelles propriétés wrapper.event.<event_name>.loglevel et wrapper.event.<event_name>.message qui peuvent être utilisées pour afficher un message personnalisable comme "Event: <event_name>" dans les journaux à un niveau de journalisation arbitraire.

  • Ajout d'une sortie de débogage dans la version Windows pour consigner le chemin complet de la bibliothèque native.

  • Ajout d'une nouvelle propriété wrapper.java.detect_debug_jvm qui contrôle si le Wrapper désactive ou non les délais d'attente lorsque le débogueur Java est utilisé. Le Wrapper désactive automatiquement les délais d'attente dans ce cas depuis la version 3.2.1. Merci à Ruslan Gainutdinov pour le correctif.

  • Correction d'un problème de débordement de tampon pour les valeurs de wrapper.ntservice.name.

  • Correction d'un problème où la propriété wrapper.syslog.ident ne fonctionnait pas comme documenté. Il était nécessaire d'utiliser wrapper.ntservice.name à sa place.

  • Ajout d'une nouvelle propriété wrapper.ignore_sequence_gaps qui permet d'avoir des valeurs de propriétés numérotées non séquentielles. Cela affecte les propriétés wrapper.app.parameter.<n>, wrapper.event.<event_name>.command.argv.<n>, wrapper.filter.trigger.<n>, wrapper.java.additional.<n>, wrapper.java.classpath.<n>, wrapper.java.library.path.<n>, wrapper.ntservice.dependency.<n> et wrapper.timer.<n>.interval. La valeur par défaut conserve le fonctionnement antérieur. Feature Request #1930298.

  • (Édition Professionnellel)

    Correction d'un problème où les variables du gestionnaire d'événements n'étaient pas définies correctement dans les valeurs des propriétés wrapper.event.<event_name>.command.argv.<n>.

  • (Édition Professionnellel)

    Correction d'une violation d'accès potentielle si les allocations de mémoire échouent lors de l'envoi d'e-mails d'événement ou de l'exécution de commandes d'événement.

  • Ajout d'une nouvelle variable d'environnement par défaut WRAPPER_HOSTNAME en tant qu'alias de la variable WRAPPER_HOST_NAME existante.

  • (Édition Professionnellel)

    Dépréciation de l'utilisation de la propriété wrapper.event.<event_name>.set_environment. Elle restera dans le produit pour des raisons de compatibilité, mais son utilisation est déconseillée car elle ne fonctionne pas toujours correctement lorsque le fichier de configuration est rechargé. Consultez la documentation de la propriété pour plus de détails.

  • Ajout d'une nouvelle action DUMP à la propriété wrapper.filter.action.<n> pour permettre d'invoquer un dump de threads en réponse à une chaîne spécifique dans la sortie console de la JVM.

  • Correction d'un problème où la méthode WrapperManager.stopAndReturn se bloquait (deadlock) si elle était appelée lorsque la JVM s'exécutait en mode autonome sans le Wrapper. Bug #2711872.

  • (Éditions Standard et Professionnelle)

    Modification du fonctionnement des délais de licence afin que le Wrapper compare la période de mise à niveau de la licence à une date de publication officielle plutôt qu'à la date de compilation. Cela permet de publier des plateformes supplémentaires à une date ultérieure tout en conservant une utilisation cohérente de la licence.

  • (Éditions Standard et Professionnelle)

    Possibilité d'obfusquer la période de mise à niveau dans les fichiers de clé de licence pour les licences de développement afin qu'un utilisateur final ne puisse pas voir quelle est la période de mise à niveau du détenteur de la licence de développement. Cette fonctionnalité est accessible depuis la page de gestion des licences lors du téléchargement d'un fichier de clé de licence nouveau ou existant.

Version 3.3.5 : Modifications et corrections de bugs (2009-06-09)

  • Correction d'un problème sur certaines plateformes UNIX introduit dans la version 3.3.4 où le Wrapper plantait au démarrage si la JVM configurée ne pouvait pas être trouvée.

  • Correction d'un problème introduit dans la version 3.3.2 où le Wrapper pouvait planter si le nom d'hôte du système dépassait 27 caractères.

  • Correction d'un problème potentiel dans la façon dont les identifiants de threads étaient comparés sur les systèmes UNIX.

  • Ajout d'une nouvelle propriété wrapper.java.additional.auto_bits qui ajoutera automatiquement les arguments -d32 ou -d64 à la JVM pour les plateformes dont les JVM attendent généralement cet argument.

  • (Édition Professionnellel)

    Correction d'un problème avec le champ Date des e-mails d'événement sortants.

Version 3.3.4 : Modifications et corrections de bugs (2009-05-15)

  • (Éditions Standard et Professionnelle)

    Mise à jour de la licence de développement vers la version 1.1 afin qu'un nouveau fichier d'avis de copyright puisse être livré avec les applications utilisateur plutôt que le texte complet de la licence.

  • L'édition Community peut être sous licence Community basée sur GPL2, ou sous licence de développement. Le code source des éditions Standard et Professional du Wrapper est propriétaire. Aperçu des licences.

  • Correction d'un problème introduit dans la version 3.3.2 où l'interrogation de l'état d'un service Windows avec les commandes -q ou -qs entraînait une violation d'accès. L'état d'exécution du service était rapporté correctement, mais les informations de configuration supplémentaires échouaient. Bug #2644515.

  • Ajout d'une nouvelle propriété wrapper.disable_restarts.automatic pour désactiver uniquement les redémarrages causés par des délais d'attente de la JVM, des plantages, etc. Les redémarrages manuels ou configurés resteront autorisés.

  • Passage à l'utilisation de make pour les compilations HPUX IA 32/64.

  • Ajout de commentaires de conseil lorsque le Wrapper ne parvient pas à lancer le processus JVM.

  • Correction d'un problème sur les plateformes UNIX où les entrées de journal faites par le processus Wrapper forké entraînaient deux blocs d'entrées dans le fichier journal car le processus Wrapper parent pensait qu'il s'agissait de la sortie console du processus JVM.

  • Ajout d'un ensemble de nouvelles variables d'environnement Wrapper pouvant être référencées dans le fichier wrapper.conf pour générer des nombres aléatoires ou des horodatages destinés à générer des noms de fichiers uniques, etc. Consultez la section Définitions des variables d'environnement par défaut pour plus de détails.

  • (Éditions Standard et Professionnelle)

    Correction d'un problème empêchant les licences de développement d'autoriser les applications utilisant la méthode d'intégration n°4 ajoutée dans la version 3.3.3.

  • Ajout du nombre de bits du Wrapper actuel à la bannière de démarrage pour faciliter les demandes de support.

  • (Éditions Standard et Professionnelle)

    Correction d'un problème de plantage sur les versions HPUX qui se produisait de manière fiable sur certaines machines au démarrage.

Version 3.3.3 : Modifications et corrections de bugs (2009-03-08)

  • Modification de la propriété wrapper.ignore_signals afin qu'elle accepte désormais les valeurs WRAPPER, JAVA et BOTH, en plus de TRUE et FALSE.

  • Modification du WrapperManager afin qu'il ne sonde plus jamais la bibliothèque native une fois que la JVM est marquée comme prête à s'arrêter. Ceci afin de s'assurer que la JVM ne se termine jamais au milieu d'un appel, ce qui pourrait entraîner un plantage de la JVM.

  • Ajout d'une paire de méthodes permettant aux threads de demander et de libérer des verrous qui empêcheront le Wrapper de laisser la JVM se terminer pendant que certaines opérations sont en cours. Voir WrapperManager.requestShutdownLock() et WrapperManager.releaseShutdownLock().

  • Correction d'un problème où les services interactifs laissaient parfois une fenêtre de console visible après le démarrage. Le Wrapper est désormais plus résilient pour fermer la fenêtre même s'il échoue à le faire initialement.

  • Ajout d'une nouvelle méthode d'intégration (n°4), qui facilite la configuration du Wrapper pour exécuter un fichier jar exécutable.

  • Correction d'un problème où le générateur aléatoire n'était pas initialisé correctement avant de nommer la fenêtre de console du Wrapper lors de l'exécution en tant que service Windows. Cela entraînait des problèmes d'identification de la console du Wrapper lorsque plusieurs services s'exécutaient sur la même machine.

Version 3.3.2 : Modifications et corrections de bugs (2009-01-13)

  • Ajout d'un enregistrement d'informations de fichier aux binaires wrapper.exe et wrapperW.exe afin que l'onglet Version s'affiche correctement dans la boîte de dialogue Propriétés du fichier.

  • (Éditions Standard et Professionnelle)

    Correction d'un problème avec le binaire wrapperW.exe où la boîte de dialogue de journal n'était pas affichée correctement lorsque le Wrapper était lancé avec les arguments "-?", "-v" ou "-h".

  • (Éditions Standard et Professionnelle)

    Correction d'un problème avec le binaire wrapperW.exe où un message s'affichait dans la boîte de dialogue avec l'emplacement du fichier journal complet même s'il n'y avait pas eu d'entrées écrites dans le journal.

  • (Édition Professionnellel)

    Amélioration de la sortie de débogage produite lors de l'envoi d'e-mails d'événement lorsque la propriété wrapper.event.<event_name>.email.debug est activée.

  • (Édition Professionnellel)

    Ajout des propriétés wrapper.event.<event_name>.email.send.timeout et wrapper.event.<event_name>.email.receive.timeout pour éviter que le Wrapper ne reste bloqué en attendant une réponse d'un serveur de messagerie distant. Bug #2064885.

  • (Édition Professionnellel)

    Correction d'un problème où le Wrapper se bloquait et ne parvenait pas à envoyer des e-mails avec certains serveurs de messagerie. Le problème était causé par des sauts de ligne incorrects dans le corps de l'e-mail.

  • Ajout d'un avertissement si le '#' initial est manquant dans un '#include' du fichier de configuration pour aider les utilisateurs avec les problèmes de fichiers inclus.

  • Ajout d'une nouvelle propriété wrapper.ntservice.generate_console qui fera toujours générer une console au Wrapper lorsqu'il s'exécute en tant que service, puis la masquer immédiatement. Cela provoquera un léger clignotement mais est nécessaire pour prendre en charge les dumps de threads. Bug #2060181.

  • Correction d'un problème dans la version Windows où la fenêtre de console restait parfois visible lors de l'exécution en tant que service interactif même lorsqu'elle était configurée pour être masquée.

  • Ajout de la prise en charge des PowerEvents afin que les services Windows puissent répondre aux événements de mise en veille et de reprise.

  • Correction d'un problème où la propriété wrapper.key system transmise à la JVM était générée de manière incorrecte de façon aléatoire, 1 fois sur 2048 lors du lancement de la JVM. Cela entraînait l'échec du démarrage de la JVM et l'arrêt du Wrapper.

  • Ajout d'une nouvelle propriété wrapper.disable_console_input pour désactiver la fonctionnalité qui permet au Wrapper de transmettre l'entrée console au processus Java.

  • Correction d'un problème de débordement de tampon dans le code de journalisation qui se produisait une fois au démarrage. Cela était bénin sur la plupart des plateformes mais provoquait des plantages intermittents dans la version AIX 32 bits.

  • Modification de l'analyse des propriétés de configuration afin que leurs noms ne soient plus sensibles à la casse.

  • Modification de WrapperServiceException afin qu'une nouvelle méthode getErrorCode puisse être utilisée pour obtenir le code d'erreur entier qui a causé l'exception. Feature Request #2188280.

  • (Éditions Standard et Professionnelle)

    Correction d'un problème où, sur certaines machines Windows, le Wrapper renvoyait un HostId aléatoire qui changeait à chaque redémarrage du système.

  • (Éditions Standard et Professionnelle)

    Possibilité de définir des clés de licence de sorte que leurs noms de propriétés soient encodés en utilisant soit le nom d'hôte, soit le HostId. Cela permet de définir plusieurs clés dans le même fichier de configuration, visibles sur le même hôte. Cela était nécessaire pour prendre en charge certains adaptateurs réseau en équilibrage de charge où le HostId visible change selon l'adaptateur réseau physique actif.

  • Retravail du moteur d'état côté Java afin qu'il soit désormais possible pour le côté Java du Wrapper de répondre aux événements d'arrêt pendant que la méthode WrapperListener.start est encore en cours.

  • Ajout d'une nouvelle propriété wrapper.listener.force_stop qui permet de contrôler si la méthode WrapperListener.stop est appelée à l'arrêt même si la méthode WrapperListener.start n'est pas encore terminée.

  • Correction d'un problème sous Windows où la possibilité de démarrer et d'arrêter le Wrapper en tant que service en utilisant le Wrapper lui-même nécessitait l'autorisation Administrateur alors qu'une autorisation inférieure aurait dû être possible. Le Wrapper devrait désormais permettre le contrôle du service dans la mesure de ce qui est possible depuis le panneau de configuration Services.

  • Correction d'une erreur de corruption de mémoire si la valeur de wrapper.java.maxmemory dépassait 4 chiffres. wrapper.java.initmemory n'avait aucun problème.

  • (Édition Professionnellel)

    Ajout d'une nouvelle propriété wrapper.event.<event_name>.email.client.host qui permet de configurer le nom d'hôte envoyé dans les commandes EHLO et HELO au serveur SMTP.

  • Ajout d'une nouvelle variable d'environnement par défaut, WRAPPER_HOST_NAME, qui stocke le nom de la machine où le Wrapper s'exécute.

Version 3.3.1 : Modifications et corrections de bugs (2008-08-19)

  • Ajout d'une sortie de débogage indiquant le nom et l'architecture du système d'exploitation actuel pour aider au débogage des problèmes.

  • (Éditions Standard et Professionnelle)

    Amélioration du message affiché lorsqu'une clé de licence est trouvée mais considérée comme invalide.

  • Modification du fichier modèle wrapper.conf pour aider les utilisateurs à déboguer les problèmes de fichiers inclus.

  • Désactivation de la fonctionnalité de titre de console sur toutes les plateformes UNIX autres que Linux car le titre de la console n'est pas réinitialisé correctement lorsque le processus Wrapper se termine.

  • Ajout de la prise en charge des processeurs HP-UX IA64.

  • Mise à jour de la bannière de licence dans les fichiers source afin qu'il soit plus clair que l'utilisateur est limité par la licence qu'il a acceptée.

  • Modification de l'édition Community afin qu'elle affiche désormais une bannière Licensed to au démarrage si elle est livrée avec une licence de développement. Ceci est nécessaire pour permettre la distribution de l'édition Community sous licence de développement.

  • (Édition Professionnellel)

    Correction d'un problème où les versions UNIX de l'édition Professional se bloquaient parfois (deadlock) au démarrage lorsqu'elles étaient exécutées en tant que processus démon. Bug #1989355.

  • (Édition Professionnellel)

    Ajout de deux nouveaux événements : jvm_failed_invocation et jvm_max_failed_invocations. Feature Request #1994718.

  • Correction d'un problème où le code de sortie du service Windows n'était pas défini correctement lorsque la JVM se terminait avec un code de sortie non nul. Le problème pouvait être observé en exécutant "sc query {service}" depuis la ligne de commande. Bug #1859061.

  • (Éditions Standard et Professionnelle)

    Correction d'un problème sur les versions Windows où les serveurs qui rapportaient un grand nombre d'identifiants d'hôte possibles pouvaient provoquer un débordement de tampon au démarrage. Ce plantage était possible lors de l'utilisation de licences Development ou Server. Suppression des identifiants d'hôte en double de la liste des identifiants possibles.

  • Ajout d'une nouvelle commande "condrestart" au script shell qui redémarre le Wrapper uniquement s'il est déjà en cours d'exécution. Feature Request #1928045.

  • Correction d'un problème où la version Solaris x86 64 bits était incapable de charger sa bibliothèque JNI. Bug #1992039.

  • Correction d'un problème sur les versions Windows où un processus JVM figé n'était pas toujours tué. Cela pouvait entraîner la persistance de processus JVM zombies qui consommaient de la mémoire et d'autres ressources.

  • Ajout d'une nouvelle propriété wrapper.ignore_user_logoffs qui permet au Wrapper et à la JVM de survivre aux déconnexions lorsqu'ils sont lancés en tant qu'application console depuis un autre service.

  • (Éditions Standard et Professionnelle)

    Ajout d'un binaire wrapperW.exe dans les implémentations Windows qui permet d'exécuter le Wrapper sans console. Une console clignote encore un instant lorsque le Wrapper démarre. Il s'agit du même problème qui existait lors de l'exécution en tant que service interactif et qui est nécessaire pour rendre possible le dump de threads.

  • (Éditions Standard et Professionnelle)

    Ajout des nouvelles propriétés wrapper.logdialog.enable, wrapper.logdialog.format, wrapper.logdialog.lines et wrapper.logdialog.loglevel utilisées pour configurer l'affichage d'une boîte de dialogue de journal lorsque le binaire wrapperW.exe se termine dans un état d'erreur.

  • Correction d'un problème où le Wrapper tentait de rouvrir son port backend même lorsque la JVM était arrêtée. Cela n'était un problème que lorsque la plage de ports définie était limitée à un seul port avec les propriétés wrapper.port.min et wrapper.port.max. Dans ce cas, un ou plusieurs messages d'avertissement s'affichaient car le port est verrouillé pendant quelques instants après sa fermeture.

  • (Éditions Standard et Professionnelle)

    Les propriétés wrapper.java.initmemory.percent et wrapper.java.maxmemory.percent n'étaient pas calculées correctement par rapport à un maximum de 2048 Mo pour les versions 32 bits du Wrapper. Bug #2053167.

Version 3.3.0 : Modifications et corrections de bugs (2008-03-27)

  • Ajout d'une nouvelle propriété wrapper.ping.interval.logged qui permet de réduire la sortie de débogage causée par les transactions ping entre le Wrapper et la JVM.

  • Correction d'un problème sous Windows où le Gestionnaire de services Windows n'attendait pas le délai complet configuré des propriétés wrapper.jvm_exit.timeout et wrapper.shutdown.timeout. Cela entraînait un dépassement de délai de la commande net stop et l'arrêt du système sans que l'application Java se soit complètement arrêtée. Bug #1582568.

  • Si des pare-feu internes empêchaient la création du socket backend, la cause n'était pas clairement indiquée. Il était également possible que la JVM se bloque (deadlock) à l'arrêt. Ce second problème était récupéré lorsque le Wrapper tuait la JVM.

  • Refonte de la sortie console de toutes les classes Wrapper pour rendre beaucoup plus évident qu'elles en sont la source.

  • Intégration d'un correctif au script sh UNIX par Chris Dance qui permet d'indiquer au shell d'attendre quelques secondes le démarrage du Wrapper. Inclut également quelques modifications pour fonctionner correctement sur les anciens systèmes Debian et RedHat.

  • Correction d'un problème où la copie locale d'ant n'était pas toujours utilisée correctement sur les systèmes UNIX qui ont une copie par défaut d'ant installée. Merci à Robey Pointer pour le correctif.

  • Ajout de -lm à la ligne de commande lors de la compilation des versions Linux 32 et 64 bits du Wrapper sous Linux. Ceci afin de prendre en charge la compilation sur les versions récentes de Debian et Ubuntu. Merci à Robey Pointer pour le correctif.

  • Ajout de la prise en charge des signaux SIGUSR1 et SIGUSR2 afin qu'ils puissent désormais déclencher un arrêt, un redémarrage ou être transmis à la JVM pour une fonctionnalité personnalisée. Voir les propriétés wrapper.signal.mode.usr1 et wrapper.signal.mode.usr2. Basé sur un correctif de Robey Pointer. Notez que le processus JVM n'intercepte pas les signaux SIGUSR1 ou SIGUSR2 car ils sont utilisés en interne par la JVM dans le cadre du processus de garbage collection.

  • Correction d'un problème où les variables d'environnement WRAPPER_OS, WRAPPER_ARCH et WRAPPER_BITS n'étaient pas initialisées correctement pour les différentes plateformes UNIX.

  • Suppression de la limite supérieure de 4096 Mo définie sur les propriétés wrapper.java.initmemory et wrapper.java.maxmemory. Les utilisateurs 64 bits ont besoin d'aller bien au-delà.

  • Correction d'un problème où les références relatives aux fichiers d'inclusion dans le fichier de configuration ne fonctionnaient pas correctement si wrapper.working.dir était utilisé pour changer le répertoire de travail. Le répertoire de travail est désormais toujours réinitialisé à sa valeur d'origine pendant le chargement du fichier de configuration.

  • Ajout d'une nouvelle propriété wrapper.registry.java_home qui permet de spécifier l'emplacement de Java dans le registre.

  • Définition d'une nouvelle variable d'environnement WRAPPER_JAVA_HOME si JAVA_HOME se trouve dans le registre Windows.

  • Modification de la façon dont les propriétés sont recherchées afin que toute référence de variable d'environnement non remplaçée soit réévaluée au cas où elle aurait été définie après la définition initiale de la propriété. Ceci est possible avec certaines variables d'environnement WRAPPER_* ou selon l'emplacement des propriétés set.* dans le fichier de configuration.

  • Définition interne de toutes les propriétés non définies à leurs valeurs par défaut. Ceci est nécessaire pour que la méthode WrapperManager.getProperties() retourne l'ensemble correct des propriétés actives.

  • Correction d'un plantage occasionnel sous UNIX 64 bits causé par un problème de synchronisation native lors de l'interception des signaux système. Bug #1614010.

  • Correction d'un problème sur les versions Solaris, où le Wrapper ne récupérait pas correctement et n'essayait pas un autre port backend lorsque le premier était déjà utilisé. Bug #1594073.

  • Correction d'un problème sous Solaris et AIX où la fonctionnalité RUN_AS_USER du script shell ne fonctionnait pas en raison du manque de prise en charge de l'option "-m" de su. Le script shell utilise désormais "su -". Bug #1590168.

  • Ajout de Makefiles HP-UX pour la compilation avec make. Correction de quelques problèmes dans le script shell pour qu'il fonctionne mieux sous HP-UX. Merci à David Brown et Nicolas Varney pour les correctifs.

  • Correction d'un problème où tout signal reçu par la JVM et déclenchant un signal SIGCHLD dans le Wrapper était interprété comme l'arrêt de la JVM. Ce n'était pas toujours le cas. Bug #1643666.

  • Le Wrapper est désormais capable de détecter lorsque le processus JVM est arrêté et repris. Il expirera toujours en cas d'arrêt, mais un avertissement descriptif est désormais consigné.

  • Augmentation du nombre maximal d'entrées de journal pouvant être mises en file d'attente afin d'éviter de les perdre. Elles ne sont utilisées que pour les entrées de journal en dehors du thread principal.

  • Correction d'un problème dans le script shell qui rendait impossible l'arrêt du Wrapper ou l'interrogation de son état sous OSX.

  • Ajout de la prise en charge d'AIX 64 bits. Merci à Nicolas Varney pour avoir fourni un Makefile.

  • Correction de l'extension de bibliothèque AIX pour qu'elle soit ".a".

  • Renommage des Makefiles UNIX afin qu'il soit plus évident quel outil doit être utilisé pour compiler avec eux.

  • Correction d'un problème où la bibliothèque native HP-UX n'était pas localisée correctement pour certains types de processeurs si le fichier avait un nom spécifique à la plateforme.

  • Renommage interne de l'état WRAPPER_JSTATE_LAUNCH en WRAPPER_JSTATE_LAUNCH_DELAY pour plus de clarté.

  • Correction d'un problème où les versions UNIX du Wrapper s'arrêtaient plutôt que de redémarrer une JVM figée si l'arrivée du signal SIGCHLD du processus JVM précédent était retardée de plus d'une ou deux secondes.

  • Refonte de la compilation Windows afin d'utiliser désormais nmake et un Makefile plutôt que vcbuild. Ce n'est probablement pas aussi propre, mais c'était nécessaire pour faire fonctionner la compilation 64 bits.

  • Correction d'un problème sur les versions Windows où les valeurs entre guillemets spécifiées depuis la ligne de commande n'étaient pas toujours requotées correctement lors de la génération de la ligne de commande Java.

  • Ajout de contrôles de validation pour les versions Windows afin de s'assurer que tous les paramètres supplémentaires, les arguments de l'application, le classpath et le chemin des bibliothèques contiennent des valeurs correctement entre guillemets. Les valeurs incorrectement quotées entraîneront désormais un message d'avertissement qui aidera à résoudre le problème.

  • Correction d'une fuite mémoire lors de l'appel à WrapperManager.listServices() sous Windows. Bug #1665947.

  • Correction d'un problème de débordement de tampon si le Wrapper était lancé sans spécifier explicitement un fichier de configuration.

  • Ajout de tests des valeurs de retour de tous les appels malloc afin de détecter les erreurs de mémoire insuffisante et de récupérer aussi proprement que possible. Bug #1649880.

  • Modification des méthodes WrapperManager.signalStarting et signalStopping afin qu'elles n'aient jamais pour effet de raccourcir le délai d'attente existant.

    Mise à jour des javadocs des deux méthodes afin qu'ils reflètent plus précisément ce que font les méthodes.

  • Déplacement de la bannière de copyright du Wrapper dans le processus Wrapper afin qu'elle soit affichée de manière plus cohérente.

  • Branchement du code pour prendre en charge les éditions Community, Standard et Professional du Java Service Wrapper.

  • (Éditions Standard et Professionnelle)

    Ajout de la prise en charge des licences Server (Fixed) ainsi que Development (basées OEM).

  • (Éditions Standard et Professionnelle)

    Ajout de versions 64 bits de la version Windows. L'édition Community 64 bits ne sera pas distribuée initialement afin de soutenir les coûts de développement en cours.

  • (Édition Professionnellel)

    Ajout de rappels (callbacks) de gestion d'événements pour les événements de démarrage/arrêt du Wrapper, de démarrage/arrêt de la JVM, de JVM démarrée/arrêtée, de redémarrage de la JVM, de JVM tuée et de sortie inattendue de la JVM.

  • (Édition Professionnellel)

    Ajout de la possibilité d'envoyer des e-mails en réponse à n'importe quel callback d'événement.

  • (Édition Professionnellel)

    Ajout de la possibilité d'exécuter une commande configurée par l'utilisateur en réponse à n'importe quel callback d'événement.

  • Ajout des variables d'environnement WRAPPER_BIN_DIR et WRAPPER_WORKING_DIR qui sont désormais disponibles pour une utilisation dans le fichier wrapper.conf ainsi que par tout processus enfant.

  • Ajout de documentation aux pages d'intégration concernant les propriétés système existantes qui peuvent être utilisées pour contrôler la façon dont WrapperSimpleApp et WrapperStartStopApp gèrent le démarrage de l'application.

  • Suppression de la prise en charge des distributions natives PPC et x86 du Wrapper pour MAC OSX au profit de la distribution universelle X-Code. Cela semble être le standard du marché et permet de gagner beaucoup de temps de test.

  • Ajout d'une nouvelle commande '-it' à la version Windows qui permet d'installer et de démarrer un service en une seule commande.

  • Correction d'un problème où la variable d'environnement PATH n'était pas définie correctement sur les versions Windows lorsqu'elles s'exécutaient en tant que service si wrapper.ntservice.account était défini et qu'un PATH était défini à la fois pour les comptes SYSTEM et utilisateur. Bug #1702274.

  • Modification du script shell pour définir JAVA_HOME à l'emplacement JVM par défaut sur les systèmes OSX s'il n'est pas déjà défini. OSX place toujours la JVM dans un emplacement connu, ce qui rend cela possible. Merci à Andrew Williams pour le correctif.

  • Correction d'un problème où le script shell UNIX échouait si APP_NAME était défini à une valeur contenant des espaces. Merci à Andrew Williams pour le correctif. Bug #1695678.

  • Correction d'un problème où DIST_ARCH n'était pas résolu correctement sur les systèmes HP-UX. Merci à Matej Kraus pour le correctif. Patch #1697421.

  • La sortie de journal du thread timer n'était pas mise en file d'attente correctement, ce qui aurait pu entraîner des problèmes de timing s'il y avait des retards d'écriture sur disque.

  • Ajout d'une prise en charge partielle d'OS/400 dans le fichier de compilation. Un Makefile est encore nécessaire.

  • Correction d'un problème où WrapperActionServer se bloquait (deadlock) dans sa méthode stop si l'arrêt de la JVM était initié par un appel aux actions shutdown ou restart.

  • Ajout de la prise en charge de wrapper.console.title sur les plateformes UNIX. Ajout d'un ensemble de propriétés wrapper.console.title.<platform> qui permettent de définir le titre en fonction de la plateforme.

  • Correction d'un problème où les propriétés wrapper.ntservice.account et wrapper.ntservice.password étaient stockées dans le registre système si elles étaient spécifiées sur la ligne de commande lorsque le Wrapper était installé en tant que service. Cela était cassé dans la version 3.2.2. Bug #1538725.

  • Correction d'un problème où la commande DUMP ne fonctionnait pas avec la propriété wrapper.commandfile lors de l'exécution en tant que service sous Windows. Bug #1644421.

  • Correction d'un problème où les jokers comme "*.*" ou "*" dans une propriété classpath incluaient les fichiers "." et ".." sur les versions Windows. Bug #1517928.

  • Modification de la sortie de journal de débogage lorsque le Wrapper tente de charger sa bibliothèque native afin de rendre les échecs attendus moins alarmants.

  • Intégration d'un correctif de Rob Oxspring qui ajoute les commandes start_msg et stop_msg au script shell. Celles-ci sont attendues par les scripts init sous HP-UX. Patch #1750027.

  • Ajout d'un indicateur DETAIL_STATUS au script shell UNIX qui fera afficher par les commandes status, start_msg et stop_msg l'état interne actuel des processus Wrapper et Java.

  • Intégration d'un correctif de Rob Oxspring qui ajoute un bloc init au script shell UNIX pour le faire fonctionner avec les scripts install_initd et remove_initd utilisés par SUSE Linux. Patch #1750028.

  • Intégration d'un correctif de Travis Carlson : les systèmes ia64 étaient regroupés comme des systèmes "x86". Ils se voient désormais attribuer le nom "ia", ce qui permet de créer une distribution pour eux. Patch #1663887.

  • (Éditions Standard et Professionnelle)

    Ajout des nouvelles propriétés wrapper.java.initmemory.percent et wrapper.java.maxmemory.percent qui permettent de définir les valeurs de mémoire initiale et maximale relativement à la quantité de mémoire physique du système. Feature Request #1741051.

  • Ajout d'une nouvelle déclaration #include.debug dans le fichier de configuration du Wrapper qui facilite grandement le débogage des problèmes avec les fichiers d'inclusion en cascade.

  • Ajout des commandes -l et -controlcode à la version Windows qui facilitent l'envoi de codes de contrôle définis par l'utilisateur au Wrapper s'exécutant en tant que service.

  • Correction d'un problème de synchronisation dans le code de journalisation qui pouvait entraîner une corruption de données ou des violations d'accès.

  • Ajout de numéros de version aux scripts bat et sh pour faciliter leur prise en charge.

  • Les propriétés wrapper.ntservice.name, wrapper.ntservice.displayname et wrapper.ntservice.description deviennent des alias des nouvelles propriétés wrapper.name, wrapper.displayname et wrapper.description car elles sont désormais utilisées sur les plateformes UNIX ainsi que sous Windows.

  • Correction d'un problème où le Wrapper échouait parfois à envoyer un paquet à la JVM car l'envoi du paquet se bloquait. Merci à Peter Gorgon pour le correctif.

  • Correction d'un problème où les processeurs s'identifiant comme 'ia64n' ou 'ia64w' n'étaient pas correctement classés comme 'ia'. Merci à Stirling Chow pour le correctif. Patch #1859412.

  • Ajout des commandes -d et --dump à la version Windows qui permettent d'envoyer des demandes de dump de threads au Wrapper lorsqu'il s'exécute en tant que service. Fonctionne en association avec la nouvelle propriété wrapper.thread_dump_control_code. Feature Request #1118110.

  • (Édition Professionnellel)

    Ajout des propriétés wrapper.timer.<n>.interval et wrapper.timer.<n>.action qui permettent de planifier des arrêts du Wrapper, des redémarrages de la JVM et des dumps de threads à des moments arbitraires.

  • Correction d'un problème où le nom du fichier de configuration par défaut était corrompu par un débordement de tampon. Merci à Rob Joyce pour le correctif. Patch #1879049.

  • Correction d'un problème où WrapperManager tentait parfois de désenregistrer son shutdown hook après que celui-ci ait été initié. Bug #1799489.

  • Correction d'un problème où les fichiers journaux étaient limités à 2 Go sur les systèmes Linux. Bug #1881038.

Version 3.2.3 : Modifications et corrections de bugs (2006-10-16)

  • Ajout de la prise en charge des distributions x86 Mac OS X.

  • La version Windows 3.2.2 a été accidentellement publiée avec ses bibliothèques MFC liées dynamiquement. Cela signifiait que quiconque n'avait pas VS8 installé ne pouvait pas exécuter le Wrapper en raison de DLL manquantes. Cette version corrige cette bévue en utilisant correctement des bibliothèques liées statiquement comme c'était le cas dans les versions précédentes compilées avec VS6. Bug #1578554.

Version 3.2.2 : Modifications et corrections de bugs (2006-10-13)

  • Correction d'une faute de frappe dans l'affichage d'utilisation de WrapperStartStopApp. Merci à Michael Giroux de l'avoir signalée.

  • Correction d'un problème sur les systèmes OSF1 où le socket backend n'écoutait pas correctement en raison d'un backlog de 0. Cela était cassé dans la version 3.2.0. Merci à Phillip Gussow pour avoir fourni un correctif.

  • Suppression des classes du package com.silveregg.wrapper qui avaient été dépréciées dans la version 3.0.0.

  • Correction d'un problème potentiel dans le script UNIX où les permissions du fichier de verrouillage n'étaient pas définies correctement si les variables LOCKFILE et RUN_AS_USER sont spécifiées mais que le groupe de l'utilisateur spécifié ne pouvait pas être résolu.

  • Correction d'un problème où le code de sortie retourné par WrapperListener.stop était ignoré dans certains cas.

  • Correction d'un problème où le script shell ne fonctionnait pas correctement lorsque le Wrapper ou ses fichiers de configuration se trouvaient dans un chemin de répertoire contenant des espaces.

  • Application d'une série de correctifs de Michael Saya pour faire fonctionner la compilation Windows 64 bits.

  • Correction d'un problème dans les versions UNIX où le gestionnaire de signal TERM était désactivé lorsqu'un signal CHLD était reçu.

  • Ajout de la prise en charge du signal HUP dans les versions UNIX.

  • Ajout d'une nouvelle propriété wrapper.signal.mode.hup pour permettre à l'utilisateur de contrôler ce qui se passe lorsque le processus Wrapper reçoit un signal HUP

  • Migration du code source de CVS vers Subversion. Nettoyage du code source, suppression des balises spécifiques à CVS.

  • Correction d'un problème dans les versions UNIX où le fichier pid spécifié par la propriété wrapper.java.pidfile contenait le pid du Wrapper plutôt que le pid de la JVM. Bug #1565011.

  • Correction d'un problème dans les versions UNIX où le fichier spécifié par la propriété wrapper.java.pidfile n'était pas toujours supprimé lorsque le processus JVM disparaissait.

  • Un utilisateur a rencontré un bug de la JVM où les appels à System.exit entraînaient le lancement d'une IllegalThreadStateException. Ajout de code pour intercepter cela et arrêter la JVM par d'autres moyens afin d'éviter un blocage pendant l'arrêt.

  • Correction d'une NullPointerException causée par des utilisateurs implémentant incorrectement une classe de méthode d'intégration n° 3 puis appelant WrapperManager.start avec une valeur null pour le paramètre args.

  • Mise à jour de la bannière affichée par le Wrapper au démarrage pour inclure un avis de copyright.

  • Ajout d'un nouveau format de journal 'Z' qui consigne l'heure avec une précision à la milliseconde.

  • Correction d'un problème où le code de sortie de la JVM n'était pas défini correctement lorsque la JVM était arrêtée à l'aide de WrapperManager.stopImmediate(). Le code de sortie du Wrapper était toutefois défini correctement par d'autres moyens.

  • Correction d'un problème potentiel de synchronisation dans le code de journalisation si une JVM se termine avec la sortie de débogage activée.

  • Mise à jour des javadocs de la méthode WrapperListener.stop pour mieux expliquer la valeur exitCode dans certains modes de sortie.

  • Sur les versions UNIX, ajout d'un message de journal qui enregistre le signal ayant provoqué la sortie du processus JVM lorsqu'il se termine de manière inattendue.

  • Correction d'un problème où la propriété wrapper.on_exit.<n> ne fonctionnait pas correctement dans certains cas sous UNIX. Avec l'aide d'Andreas Schafer.

  • Ajout de la prise en charge de la compilation du Wrapper avec Visual Studio 8 pour Windows. Les versions seront désormais réalisées avec ce compilateur.

  • Correction d'un bug CRITIQUE dans les versions Windows 3.2.0 et 3.2.1 du Wrapper où le Wrapper plantait dans de rares circonstances lorsqu'il s'exécutait en tant que service. Si le gestionnaire de services interrogeait le service au même instant que le Wrapper pingait la JVM, le Wrapper plantait parfois en raison d'un problème de synchronisation. Le problème n'existait pas avant la version 3.2.0. Bug #1574537.

  • Correction d'un problème mineur de journalisation où le format 'D' n'affichait pas le nom de thread correct pour les messages de journal en file d'attente.

Version 3.2.1 : Modifications et corrections de bugs (2006-07-20)

  • Correction d'un problème avec le makefile solaris-sparc-64.

  • Ajout d'un makefile solaris-x86-64.

  • Intégration d'un correctif de Hugo Weber pour permettre de configurer le Wrapper afin qu'il récupère le JRE depuis le registre système sous Windows.

  • Correction d'un bug de fichier batch ajouté dans la version 3.2.0 où les scripts ne fonctionnaient pas correctement si le chemin complet vers le fichier batch contenait des espaces. Bug #1450601.

  • Modification du message affiché lorsqu'une bibliothèque native échoue à se charger afin que le texte du message d'exception soit désormais affiché dans le journal sans avoir à activer la sortie de journal de débogage.

  • Modification du script shell UNIX pour qu'il soit plus informatif si le script est incapable de localiser un binaire Wrapper en raison d'un problème de permission du bit exécutable.

  • Correction d'un problème mineur de permissions avec la compilation du delta-pack.

  • Intégration d'un correctif de Juergen Hermann pour rendre plus claire l'erreur affichée lorsque realpath échoue.

  • Ajout de la possibilité d'utiliser un fichier wrapper.conf par défaut se trouvant dans le même répertoire que le binaire Wrapper. Le fichier sera nommé d'après le nom du binaire Wrapper.

  • Synchronisation de la ligne de commande afin que les versions Windows et UNIX soient désormais identiques. Les anciennes syntaxes de ligne de commande sont désormais prises en charge partout, il n'y aura donc pas de problèmes de compatibilité.

  • Il n'est plus possible de spécifier des arguments en utilisant la syntaxe '/c'. Celle-ci n'était pas documentée, donc on espère qu'elle n'est pas utilisée. La syntaxe documentée '-c' doit désormais être utilisée. Ce changement était nécessaire pour synchroniser la ligne de commande entre les plateformes UNIX et Windows.

  • La compilation HP-UX 32 bits 3.2.0 générait un fichier libwrapper.so plutôt que libwrapper.sl.

  • Les méthodes WrapperManager.setConsoleTitle, getWrapperPID et getJavaPID sont désormais disponibles via JMX.

  • Correction d'un problème du moteur d'états introduit dans la version 3.2.0 qui faisait que les propriétés wrapper.on_exit.<n> étaient ignorées dans la plupart des cas.

  • Correction d'un problème potentiel qui aurait pu provoquer des plantages lorsque la journalisation de débogage était activée.

  • Correction d'un problème où les signaux n'étaient pas gérés correctement sur certaines plateformes UNIX, y compris AIX. Cela rendait impossible l'arrêt propre du Wrapper avec le signal TERM. Bug #1477619.

  • Ajout de nouvelles variables d'environnement par défaut qui peuvent être référencées dans un fichier de configuration pour configurer des répertoires et noms de fichiers spécifiques à la plateforme. WRAPPER_OS, WRAPPER_ARCH et WRAPPER_BITS.

  • Ajout d'un argument -v pour permettre de demander la version d'un binaire Wrapper.

  • Ajout de la prise en charge de l'enregistrement du MBean WrapperManager auprès du PlatformMBeanServer lors de l'exécution sur une JVM 1.5+. Voir la section JMX de la documentation pour plus de détails.

  • Refonte de la façon dont les propriétés de délai d'attente sont gérées. Les valeurs de 0 désactivent désormais réellement les délais d'attente plutôt que de les définir à une grande valeur. Pour éviter les problèmes de débordement lors de la conversion en ticks de minuteur internes, les délais d'attente sont désormais limités à un maximum de 20 jours, soit 1728000 secondes. Le changement affecte les propriétés wrapper.cpu.timeout, wrapper.startup.timeout, wrapper.ping.timeout, wrapper.shutdown.timeout et wrapper.jvm_exit.timeout. Pour les valeurs inférieures à 20 jours, il ne devrait y avoir aucun changement de fonctionnalité.

  • Ajout de la prise en charge des débogueurs. Le Wrapper affichera désormais un avertissement au démarrage puis à nouveau la première fois qu'un délai d'attente se produit. Mais tous les délais d'attente seront ignorés. Ceci afin d'éviter que le Wrapper ne redémarre une JVM suspendue au milieu d'une session de débogage. Le Wrapper entre dans ce mode si wrapper.java.command se termine par la chaîne "jdb" ou "jdb.exe", ou si le paramètre "-Xdebug" est passé à la JVM.

  • Ajout de 'athlon' à la liste des architectures prises en charge.

  • Correction d'un problème où les variables d'environnement chargées au démarrage d'un service étaient toujours celles du système même si le service s'exécutait sous un compte spécifique. L'environnement d'un compte spécifique sera désormais chargé par-dessus l'environnement système si la variable d'environnement USERNAME est définie par le système. Bug #1491138.

  • Ajout des nouvelles propriétés wrapper.ntservice.pausable et wrapper.ntservice.pausable.stop_jvm pour permettre de mettre en pause et de reprendre le Wrapper lorsqu'il est installé en tant que service Windows.

  • Ajout de nouveaux fichiers batch Pause et Resume ainsi que modification du fichier batch de commandes pour prendre en charge la pause et la reprise.

  • Ajout des commandes PAUSE et RESUME pour une utilisation par la propriété wrapper.commandfile.

  • Correction d'un problème avec les propriétés wrapper.pidfile, wrapper.java.pidfile, wrapper.anchorfile, wrapper.commandfile, wrapper.statusfile, wrapper.java.statusfile, wrapper.java.idfile et wrapper.lockfile.umask où les barres obliques dans les chemins n'étaient pas converties en barres obliques inverses sur les versions Windows.

  • Simplification du code utilisé pour charger une bibliothèque native en utilisant la méthode System.mapLibraryName plutôt que de faire la même chose manuellement.

  • Ajout d'une nouvelle propriété wrapper.syslog.facility qui permet de spécifier la facility syslog sur les systèmes UNIX. Merci à Bruce Pennypacker pour le correctif.

  • Suppression du comptage de threads personnalisé utilisé pour suivre le moment où l'application Java encapsulée s'est terminée. Cela se fait désormais d'une manière différente qui fonctionnera sur toutes les implémentations Java sans nécessiter de considération particulière de la JVM actuelle. Dépréciation des propriétés wrapper.monitor_thread_count et wrapper.thread_count_delay. Bug #1470265.

  • La classe d'aide WrapperStartStopApp nécessite toujours un comptage de threads si le paramètre stopWait est défini à true. Les versions précédentes avaient toutes le nombre de threads système codé en dur à 1, ce qui fonctionnait pour la plupart des JVM. Une nouvelle propriété système, org.tanukisoftware.wrapper.WrapperStartStopApp.systemThreadCount, a été ajoutée pour permettre la personnalisation. Elle vaut actuellement 1 par défaut.

  • Il est désormais possible d'étendre les classes d'aide WrapperSimpleApp et WrapperStartStopApp. Feature Request #1510274.

  • Ajout de messages d'avertissement si les anciennes classes du package org.silveregg.wrapper sont encore utilisées. Elles seront supprimées dans la prochaine version.

Version 3.2.0 : Modifications et corrections de bugs (2006-03-29)

  • Refonte du cycle de publication afin que le fichier wrapper.jar publié pour toutes les plates-formes soit désormais compilé sur la même machine. Cela résout quelques problèmes d'incompatibilité causés par des jars compilés sur des JVM très récentes mais exécutés sur d'anciennes JVM.

  • Ajout d'une sortie supplémentaire lorsque la JVM ne peut pas être lancée en raison de restrictions de sécurité sous Windows.

  • Amélioration considérable des performances de la journalisation dans un fichier. Sur une machine de test Windows, la version 3.1.2 pouvait journaliser 67210 lignes de sortie en 20 secondes avec une répartition 80-15 % de l'utilisation CPU entre les processus Wrapper et JVM. Elle produit désormais 215214 lignes avec une répartition 64-34 %, montrant également une charge moindre sur le processus système. Il s'agit d'une augmentation des performances de 220 %. Dans les deux cas, la JVM était complètement inactive en dehors de la sortie console, ce qui fait paraître le Wrapper un peu gourmand en CPU. En réalité, c'est le seul processus qui effectue du travail dans ce cas. Cette amélioration a été réalisée en maintenant le fichier journal ouvert sauf en cas d'inactivité. Le délai d'inactivité peut être contrôlé à l'aide de la nouvelle propriété wrapper.logfile.inactivity.timeout. L'augmentation de vitesse sur les plates-formes UNIX était beaucoup plus faible, d'environ 10 %.

  • Ajout d'une nouvelle propriété, wrapper.disable_restarts, qui désactive complètement la capacité du Wrapper à redémarrer les JVM.

  • Ajout d'une paire de nouvelles propriétés, wrapper.port.min et wrapper.port.max, qui permettent de définir la plage de ports utilisée lorsqu'un wrapper.port spécifique n'est pas spécifié.

  • Correction d'un problème où certains caractères comme les trémas étaient supprimés des valeurs de propriétés. Bug #1049528.

  • Accès facilité aux PID du Wrapper et du processus Java en fournissant une nouvelle paire de propriétés système ; wrapper.pid et wrapper.java.pid, ainsi qu'une nouvelle paire de méthodes ; WrapperManager.getWrapperPID() et WrapperManager.getJavaPID().

  • Ajout d'une nouvelle classe WrapperEventListener qui peut être implémentée pour recevoir une grande variété d'événements du Wrapper.

  • Ajout d'une classe WrapperServiceControlEvent qui signale tous les codes de contrôle de service reçus par le Wrapper lorsqu'il s'exécute en tant que service NT. Ceci a été ajouté pour permettre à d'autres applications d'envoyer des codes personnalisés au Wrapper via le Gestionnaire de services Windows.

  • Ajout d'une méthode WrapperManager.listServices() qui peut être utilisée pour obtenir l'état de tous les services sur un système Windows.

  • Ajout d'une méthode WrapperManager.sendServiceControlCode() qui permet de démarrer, arrêter, mettre en pause, reprendre n'importe quel service sur les systèmes Windows. Il est également possible d'envoyer des codes utilisateur personnalisés via le gestionnaire de services.

  • Ajout de commentaires dans le script sh pour prendre en charge la commande chkconfig.

  • Implémentation de la capacité à lire depuis l'entrée standard via System.in. Feature Request #1024693.

  • Le minuteur basé sur les ticks est désormais le défaut en changeant la valeur par défaut de la propriété wrapper.use_system_time à false. La plupart des utilisateurs devraient constater une amélioration de la fiabilité sous charges élevées avec ce nouveau paramètre. Si vous avez étendu des délais d'attente dans le passé, vous pourriez souhaiter revenir aux valeurs par défaut car ils n'ont peut-être plus besoin d'être étendus.

  • Ajout d'une nouvelle propriété wrapper.restart.reload_configuration qui amène le Wrapper à recharger son fichier de configuration immédiatement avant un redémarrage de la JVM. Les propriétés qui ne peuvent pas être rechargées ont des commentaires indiquant ce fait dans leur documentation. Feature Request #981060.

  • Correction d'un problème dans le script shell UNIX qui empêchait le script de localiser les fichiers PID et d'ancrage lorsque la propriété wrapper.working.dir était utilisée.

  • Modification des versions UNIX afin que le binaire Wrapper force désormais son répertoire de travail à l'emplacement du binaire Wrapper. Cette modification a été effectuée pour que la version UNIX fonctionne de la même manière que la version Windows et ainsi que les fichiers de configuration qui modifient leur répertoire de travail fonctionnent correctement de manière multiplateforme. Les utilisateurs qui ont utilisé les scripts fournis avec le Wrapper ne devraient rencontrer aucun problème. Les autres utilisateurs pourraient nécessiter de légères modifications de leur fichier de configuration pour gérer la nouvelle façon dont le Wrapper traite son répertoire de travail initial.

  • Ajout d'une nouvelle méthode WrapperManager.getProperties() qui permet d'accéder à n'importe quelle propriété du fichier de configuration du Wrapper.

  • Correction d'un problème où les signaux TERM n'étaient pas correctement ignorés par le processus JVM sur les plates-formes UNIX même si la propriété wrapper.ignore_signals était définie à true. Les versions antérieures du Wrapper généraient un WRAPPER_CTRL_SHUTDOWN_EVENT lorsqu'un signal TERM était reçu. Sous Windows, ce signal ne devrait jamais être ignoré. Pour résoudre cela, un nouveau WRAPPER_CTRL_TERM_EVENT a été ajouté, permettant d'ignorer sélectivement les signaux TERM. Cette modification peut affecter les implémentations utilisateur de la méthode WrapperListener.controlEvent(). Bug #1086344.

  • La version Windows dispose d'une fonctionnalité qui permet à l'utilisateur de tuer immédiatement le Wrapper et son application Java sans attendre un arrêt propre en appuyant deux fois sur CTRL-C. Windows envoie le signal CTRL-C à la fois aux processus Wrapper et Java. En raison d'un rare problème de timing, il était possible que le processus Java reçoive le signal en premier et initialise un arrêt avant que le Wrapper ne puisse répondre au signal. Dans ce cas, le Wrapper interprétait cela comme un second signal CTRL-C même si l'utilisateur n'avait appuyé qu'une seule fois.

  • Si les propriétés wrapper.anchorfile ou wrapper.pidfile sont utilisées sous Windows, elles étaient involontairement supprimées si les commandes -t, -p, -i ou -r étaient utilisées alors qu'une autre instance du Wrapper était en cours d'exécution. Dans le cas du fichier d'ancrage, cela entraînait l'arrêt involontaire du Wrapper. Ce n'était pas un problème sur les versions non-Windows. Bug #1108517.

  • Correction d'un problème de sécurité où la valeur des propriétés wrapper.ntservice.account et wrapper.ntservice.password était stockée en texte clair dans le registre si elles étaient spécifiées sur la ligne de commande lors de l'installation du Wrapper en tant que service Windows. Bug #1110183.

  • Ajout d'une paire de propriétés wrapper.ntservice.password.prompt et wrapper.ntservice.password.prompt.mask qui amènent le Wrapper à demander à l'utilisateur un mot de passe de compte lorsqu'il est installé en tant que service NT.

  • Ajout de propriétés système pour permettre de configurer si les classes d'aide WrapperSimpleApp et WrapperStartStopApp attendront que les méthodes main configurées se terminent avant de signaler que l'application a démarré. Consultez les javadocs de ces classes pour plus de détails.

  • Modification de la compilation HP-UX afin qu'elle soit désormais liée dynamiquement à la bibliothèque pthread. Ceci était destiné à faire fonctionner les binaires avec HP-UX 11.00. Merci à Sun Kun Choi pour le correctif.

  • Ajout des nouvelles propriétés wrapper.statusfile et wrapper.java.statusfile qui peuvent être utilisées par des applications externes pour surveiller l'état interne du Wrapper ou de la JVM à tout moment. Celles-ci ne seront pas utiles à la plupart des utilisateurs.

  • Ajout d'une nouvelle propriété wrapper.commandfile qui peut être utilisée par des applications externes pour contrôler le Wrapper et sa JVM.

  • Ajout d'une nouvelle propriété wrapper.java.idfile qui peut être utilisée par des applications externes pour surveiller l'état interne de la JVM à tout moment.

  • Ajout d'un avertissement au démarrage si la JVM a un SecurityManager défini mais que le wrapper.jar n'a pas reçu la permission AllPermissions. Ne pas le faire mènera presque certainement le Wrapper à lancer un certain nombre d'erreurs et cela aide à indiquer la cause.

  • Ajout d'un modèle de sécurité qui protège la plupart des appels de méthodes du Wrapper lorsqu'un SecurityManager a été enregistré. Consultez la section Modèle de sécurité pour plus de détails.

  • Ajout d'une nouvelle paire de fichiers batch qui peuvent être utilisés pour démarrer et arrêter le Wrapper lorsqu'il est installé en tant que service.

  • Ajout des nouvelles commandes -q et -qs à la version Windows du Wrapper qui permettent d'interroger l'état actuellement installé du service. Consultez la section Interroger l'état du service pour plus de détails.

  • Correction d'un problème où la propriété wrapper.java.library.path.append_system_path ne fonctionnait pas correctement sous Windows lorsque le PATH système contenait des guillemets. Bug #1238726.

  • Modification de la sortie d'utilisation du Wrapper sur toutes les plates-formes afin que la version du Wrapper soit désormais incluse. Il n'était auparavant pas possible d'obtenir la version du Wrapper utilisé sans lancer une JVM.

  • Ajout d'une paire de nouvelles méthodes WrapperManager.stopAndReturn() et WrapperManager.restartAndReturn() qui permettent au code d'arrêter ou de redémarrer la JVM puis de continuer jusqu'à ce que la JVM soit arrêtée. Cela peut être utile pour les arrêts initiés dans des endroits comme les servlets, dont l'opération est censée se terminer.

  • Correction d'un problème sous UNIX où la JVM enfant laissait parfois des processus zombies après un redémarrage. Le signal SIGCHLD n'était pas géré correctement. Merci à Traun Leyden pour le correctif. Bug #1291201.

  • Implémentation de la capacité à intercepter les événements de contrôle à l'aide du WrapperEventLisener. Feature Request #836975.

  • Ajout des nouvelles propriétés wrapper.jvm.port, wrapper.jvm.port.min et wrapper.jvm.port.max qui permettent de contrôler le port que la JVM utilise pour ouvrir une connexion en retour vers la JVM. Le Wrapper laissait auparavant cela à l'OS, mais certains utilisateurs avaient des problèmes avec le port par défaut en conflit avec d'autres ports.

  • Passage de ftime() à gettimeofday() sur les plates-formes UNIX pour contourner un problème où le Wrapper ne s'exécutait pas sur les nouvelles versions d'OSX car elles ont déprécié l'appel de fonction ftime(). Merci pour le correctif de Michael Macaluso. Bug #1313162.

  • Suppression du délai d'arrêt du script shell UNIX. Il n'est pas nécessaire et peut provoquer une JVM zombie si le délai d'arrêt interne du wrapper était plus long que celui du script shell.

  • Ajout de la possibilité de spécifier des valeurs de propriétés entières en base 8 ou 16 en plus de la base 10. Les valeurs en base 8 commencent par un '0' et les valeurs en base 16 commencent par un '0x'.

  • Possibilité de définir l'umask sur tous les fichiers créés par le Wrapper ainsi que l'umask par défaut des fichiers créés par la JVM. Ajout des nouvelles propriétés wrapper.umask, wrapper.java.umask, wrapper.pidfile.umask, wrapper.lockfile.umask, wrapper.java.pidfile.umask, wrapper.java.idfile.umask, wrapper.statusfile.umask, wrapper.java.statusfile.umask, wrapper.anchorfile.umask et wrapper.logfile.umask.

  • Amélioration du message lorsque la bibliothèque native ne peut pas être chargée pour mentionner la possibilité d'une incompatibilité 32/64 bits.

  • Ajout d'une nouvelle propriété wrapper.monitor_thread_count qui permet de désactiver le comptage par le Wrapper des threads non-daemon et ainsi l'arrêt de la JVM lorsqu'ils se sont tous terminés.

  • Ajout de la prise en charge des options BELOW_NORMAL et ABOVE_NORMAL pour la propriété wrapper.ntservice.process_priority. Feature Request #1373922.

  • Les caractères '#' inclus entre guillemets doubles dans la valeur d'une propriété du fichier de configuration sont désormais ignorés. Les valeurs non citées doivent être échappées avec un second caractère '#' sinon elles seront interprétées comme un commentaire.

  • Affichage de la bannière du Wrapper dans la JVM plus tôt afin qu'elle soit affichée même en cas d'erreurs de démarrage.

  • Modification des classes WrapperSimpleApp et WrapperStartStopApp afin que le WrapperManager soit toujours initialisé immédiatement. Cela rend la sortie plus claire en cas d'erreurs de démarrage.

  • Correction d'un problème où le Windows ServiceManager ne signalait pas correctement une erreur de démarrage si un service échouait au démarrage. Le service était signalé comme ayant démarré même s'il n'avait pas réussi à démarrer.

  • Correction d'un problème sur les versions UNIX où le Wrapper entrait dans un état récursif de tentative de lancement de la JVM à partir de processus enfants en échec s'il y avait des problèmes d'exécution du processus java configuré.

  • Refonte du fonctionnement du paramètre RUN_AS_USER dans le script shell UNIX afin que l'utilisateur spécifié soit désormais défini quelle que soit la commande exécutée. Pour s'assurer que l'utilisateur n'ait jamais à saisir le mot de passe deux fois lors de l'exécution du script, celui-ci s'appelle désormais récursivement après le changement d'utilisateur. Le script s'exécute alors entièrement en tant qu'utilisateur configuré.

  • Amélioration du message affiché lors de la tentative de démarrage, d'arrêt ou de suppression d'un service Windows qui n'est pas installé.

  • Ajout de la nouvelle propriété wrapper.lockfile qui permet de spécifier un fichier de verrouillage contenant un pid.

  • Modification du script sh afin qu'il crée désormais un fichier de verrouillage au démarrage dans le répertoire /var/lock/subsys s'il existe. Ceci est nécessaire pour les systèmes Fedora lors de l'arrêt.

  • Stockage des javadocs dans les distributions tar dans un fichier tar imbriqué pour éviter les problèmes avec les noms de fichiers longs dans certaines distributions tar.

  • Correction d'un problème avec les classes d'aide WrapperSimpleApp et WrapperStartStopApp où, sur des systèmes fortement chargés, il était possible que le Wrapper obtienne un nombre de threads en cours d'exécution de 0 et s'arrête avant que le thread principal n'ait eu la chance de démarrer.

  • Ajout d'une nouvelle propriété wrapper.thread_count_delay qui force le WrapperManager à attendre le nombre de secondes spécifié avant de commencer à vérifier le nombre de threads en cours d'exécution.

  • Correction d'un problème où la propriété wrapper.java.library.path.append_system_path ajoutait PATH plutôt que la variable d'environnement LD_LIBRARY_PATH sur les systèmes UNIX. PATH est correct pour les systèmes Windows.

  • Ajout d'une nouvelle propriété wrapper.logfile.rollmode qui permet de contrôler comment et quand le fichier journal est soumis à une rotation. Feature Requests #864463, #1085097 et #1085850.

  • Correction d'un problème sous Linux où le test de l'état du processus enfant Java échouait parfois, provoquant l'arrêt du Wrapper avec l'erreur « Critical error: wait for JVM process failed (No child processes) » plutôt que de redémarrer la JVM enfant. Les utilisateurs qui ont rencontré ce problème l'ont trouvé facile à reproduire, mais il ne se produisait que sur certains systèmes.

  • Modification de la façon dont le script shell UNIX teste l'existence d'un processus correspondant au pid dans un fichier pid existant. Il vérifie désormais la commande du processus ainsi que le pid pour corriger un problème de redémarrage système où un pid obsolète a été réutilisé par une autre application, faisant croire au script que le Wrapper était déjà en cours d'exécution.

  • Ajout de la prise en charge de la GNU libgcj JVM. Comme JRocket, elle nécessite un comptage de threads légèrement différent.

  • Ajout de la prise en charge des versions Linux 64 bits PPC et Solaris 32 bits x86.

  • Ajout d'une nouvelle syntaxe set.default.ENV dans le fichier de configuration permettant de définir des valeurs de variables d'environnement qui n'écrasent pas les valeurs existantes, c.-à-d. pour spécifier une valeur par défaut.

  • Ajout d'une nouvelle propriété wrapper.console.flush qui force le Wrapper à vider explicitement stdout après chaque ligne de sortie de journal.

  • Modification de l'erreur affichée lorsque la JVM s'arrête prématurément pendant un arrêt en un message d'avertissement.

  • Correction d'un problème où le Wrapper affichait le message d'erreur suivant si le code utilisateur appelait System.exit depuis la méthode de rappel WrapperListener.stop. Cela se produisait si la méthode main de la classe d'arrêt enregistrée avec WrapperStartStopApp appelait System.exit. « JVM exited unexpectedly while stopping the application. » Bug #945976.

  • Ajout d'une nouvelle propriété wrapper.syslog.ident qui permet de spécifier l'identité utilisée dans les entrées syslog sous UNIX. Cela était possible dans les versions plus anciennes mais était défini à l'aide de la propriété wrapper.ntservice.name. Bug #1432855.

  • Ajout de la prise en charge des distributions Mac OS X Universal Binary.

  • Ajout de la prise en charge des distributions Delta Pack. Il s'agit d'une distribution qui contient

Version 3.1.2 : Modifications et corrections de bugs (2004-10-09)

  • Modification de la façon dont les propriétés système booléennes sont résolues par le WrapperManager afin qu'il soit désormais possible de les définir à true ou false plutôt que de les considérer comme true si elles sont définies.

  • Correction d'un problème où certains messages d'erreur localisés n'avaient pas leurs jetons replacés correctement.

  • Correction d'un problème lors de l'utilisation de la classe d'aide WrapperStartStopApp. Le texte d'utilisation était incorrectement affiché dans la console si une exception était levée lors de l'exécution de la méthode main de la classe d'arrêt configurée. Cela ne changeait pas le fonctionnement de l'application, mais causait une certaine confusion.

  • Correction d'un problème sous Windows où un chemin de bibliothèque ou un chemin de classes se terminant par un antislash empêchait le Wrapper de lancer la JVM. L'OS Windows utilisait l'antislash pour échapper le guillemet utilisé pour fermer le chemin. La correction consistait à ajouter un second antislash si nécessaire.

  • Ajout d'une nouvelle propriété wrapper.java.command.loglevel qui permet de contrôler le niveau de journalisation de la commande java générée.

  • Ajout de la prise en charge des guillemets échappés lors de la suppression des guillemets sous UNIX pour les propriétés wrapper.java.additional.<n> et wrapper.app.parameter.<n>.

  • Modification de la valeur par défaut de wrapper.jvm_exit.timeout de 5 à 15 secondes. L'ancienne valeur par défaut était trop rapide pour certaines applications qui mettent du temps à se terminer. Les applications qui se terminaient rapidement ne verront aucune différence.

  • Correction d'un problème où la JVM redémarrait à certains moments lors de l'utilisation du minuteur basé sur l'heure système en raison d'une erreur de débordement. Ce problème a été introduit dans la version 3.1.0. En raison d'un bug distinct dans la 3.1.0, le Wrapper s'arrêtait plutôt que de simplement redémarrer la JVM comme c'était le cas dans la 3.1.1. Le dernier redémarrage s'est produit le 21 août 2004. Il se produira ensuite le 10 octobre 2004 et se répétera à intervalles réguliers. Il n'y a aucun problème lors de l'utilisation du nouveau minuteur basé sur les ticks. Bug #1014405.

  • Correction de la propriété wrapper.logfile.maxsize afin qu'un kilo-octet soit désormais 1024 plutôt que 1000, et qu'un mégaoctet soit un mégaoctet. Nous ne sommes pas un fabricant de disques durs après tout.

  • Ajout de blocs try-catch autour de tous les points d'entrée de threads dans la version Windows. Cela a toujours été fait dans la fonction main, mais ces blocs aideront à identifier la cause des problèmes s'ils venaient à être rencontrés dans les gestionnaires de contrôle ou de service.

  • Centralisation du code d'arrêt de la version UNIX dans une méthode appExit comme c'était déjà le cas pour les versions Windows.

  • Correction d'un problème où build.sh n'utilisait pas correctement l'ant inclus si une variable d'environnement ANT_HOME était définie.

  • Ajout d'une nouvelle propriété wrapper.single_invocation qui empêchera le démarrage de plusieurs invocations d'une application sur les plates-formes Windows. Le script shell gère cela sur les plates-formes UNIX. Feature Request #889123.

  • Correction d'un problème de plantage introduit dans la version 3.1.1, causé par une paire de pointeurs non initialisés. Le plantage était possible sur toutes les plates-formes mais ne se produisait que si le Wrapper était démarré sans aucun argument. Cela n'affecterait pas les utilisateurs exécutant le Wrapper normalement. Bug #1018481.

  • Correction d'un problème avec la fonctionnalité d'exécution en tant qu'utilisateur du script shell sous Solaris. Il fallait utiliser /usr/xpg4/bin/id plutôt que /usr/bin/in si disponible. Bug #1024008.

  • Remplacement des appels à usleep par nanosleep sur les plates-formes où il est disponible. Ceci visait à corriger un gel occasionnel sur une machine Solaris spécifique. Elle se figeait occasionnellement lors des appels à usleep. D'après les recherches, il semble qu'usleep ait des problèmes lorsque des signaux sont rencontrés pendant le sommeil. Tests encore en cours pour déterminer si cette modification a résolu le problème.

  • Mise à jour de la version d'Ant incluse avec les versions sources vers 1.6.2 pour corriger certains problèmes de génération des en-têtes jni lors de la compilation avec Java 1.4.2.

  • Mise à jour de la version de Cocoon incluse avec les versions sources vers 2.0.4 pour corriger certains problèmes de génération de la documentation avec Java 1.4.2.

  • Affichage d'un avertissement si le statut de sortie d'un processus JVM retourne jamais le statut STILL_ACTIVE sous Windows. Il n'y avait aucun problème connu ici, simplement remarqué en parcourant le code.

  • Affichage d'un message d'erreur descriptif sous Windows si le processus JVM plante en raison d'une exception non interceptée dans le code natif de la JVM.

  • Ajout d'un test pour les arguments JVM invalides définis à l'aide des propriétés wrapper.java.additional.<n>. Des arguments invalides pouvaient provoquer l'échec du démarrage du Wrapper de manière non évidente s'ils sont pris par la JVM pour la classe principale.

Version 3.1.1 : Modifications et corrections de bugs (2004-07-21)

  • Modification de la façon dont libwrapper.so est compilé sous Solaris et Linux afin qu'il ne lie plus statiquement ses bibliothèques requises.

  • Correction d'une fuite de descripteurs de fichiers lors de l'appel de WrapperManager.getUser ou WrapperManager.getInteractiveUser sur les plates-formes Windows.

  • Correction d'un problème introduit dans la version 3.1.0 où la JVM n'était pas redémarrée correctement si elle se terminait après un délai d'attente de ping pour laisser le Wrapper se resynchroniser et la redémarrer.

  • Correction d'un problème où CTRL-C n'était pas géré correctement si la console était configurée pour être affichée lors de l'exécution en tant que service NT.

  • Correction d'un problème où les signaux envoyés aux versions UNIX du Wrapper n'étaient pas gérés correctement lorsque le minuteur à ticks était utilisé.

  • Correction d'un problème de synchronisation dans le code de journalisation qui provoquait occasionnellement le plantage du Wrapper avec une Access Violation. Le problème n'était rencontré que lorsque le minuteur à ticks était activé, et n'était observé que sur les systèmes multi-CPU. Bug #949877.

  • Correction d'un problème lors de l'utilisation du minuteur à ticks où le Wrapper se terminait parfois au démarrage en raison d'un SIGALRM non intercepté. Signalé uniquement sur les systèmes Solaris multi-CPU.

  • Correction d'un problème où le Wrapper se figeait parfois à l'arrêt si un autre thread appelait System.exit pendant que le Wrapper s'arrêtait. Bug #955248.

  • Correction d'un problème introduit dans la version 3.1.0 où un message d'avertissement de délai d'attente CPU très très grand était affiché si l'heure système était reculée lors de l'utilisation du minuteur système par défaut.

  • Ajout d'une nouvelle propriété, wrapper.anchorfile, qui permet de provoquer l'arrêt du Wrapper en supprimant un fichier d'ancrage. Le script sh UNIX a été modifié pour éventuellement utiliser cette fonctionnalité.

  • Ajout d'un message de débogage au démarrage qui indique clairement quel minuteur est utilisé.

  • Un utilisateur Windows a signalé que l'utilisation de barres obliques dans le chemin du fichier journal échouait. Éviter ce problème en convertissant toujours '/' en '\' dans la propriété wrapper.logfile sous Windows.

  • Correction d'un problème où il n'était pas possible de désactiver le fichier journal du Wrapper comme documenté dans la propriété wrapper.logfile. Très probablement cassé depuis la version 2.2.5.

  • Ajout de quelques vérifications d'erreur supplémentaires après les appels de contrôle du tube entre la JVM et le Wrapper ainsi qu'amélioration des messages autour des autres messages d'erreur liés aux sockets.

  • Correction d'un problème sur certains systèmes HP-UX qui ne fonctionnaient pas correctement car les constantes EAGAIN et EWOULDBLOCK ne sont pas égales avec certains compilateurs.

  • Modification de certaines valeurs par défaut dans le fichier src/conf/wrapper.conf.in fourni avec le Wrapper pour éviter la confusion chez les nouveaux utilisateurs.

  • Réécriture de la routine qui lit et journalise la sortie console de la JVM pour les versions Windows. Les tampons internes sont désormais dimensionnés dynamiquement, corrigeant un problème où les longues lignes étaient coupées à 1024 caractères. Cette réécriture a également entraîné une augmentation de vitesse d'un facteur 4 lorsque la JVM envoie de grandes quantités de sortie vers la console.

  • Augmentation de la sortie de débogage sur les plates-formes UNIX lorsqu'un signal est intercepté. Lorsque c'est possible, des informations sur l'origine du signal sont désormais journalisées.

  • Modification de la façon dont la sortie de journal depuis les gestionnaires de signaux est traitée afin qu'elle soit désormais mise en file d'attente puis journalisée par la boucle d'événements principale.

  • Annulation d'une modification de la version 3.1.0 où une JVM qui n'avait pas réussi à se terminer proprement recevait un SIGTERM avant un SIGKILL. Le SIGTERM ne faisait aucune différence et ralentissait l'arrêt forcé. Une modification de la boucle d'événements rendait la fonctionnalité plus difficile à implémenter.

  • Ajout de la possibilité de définir l'utilisateur sous lequel le Wrapper et sa JVM s'exécuteront depuis le script sh sur les plates-formes UNIX.

  • Ajout d'une ressource d'icône au binaire Wrapper sur les versions Windows.

  • Correction d'une faute de frappe dans le script sh UNIX qui provoquait l'inclusion d'une barre oblique supplémentaire dans le chemin du fichier pid. Ne causait aucun problème connu.

  • Ajout de la prise en charge de HP-UX 64 bits. Un grand merci à Venkatesh Sellappa pour avoir fourni le correctif.

  • Correction d'un problème d'interblocage introduit dans la version 3.1.0 avec certains systèmes FreeBSD. Tous les utilisateurs ne le rencontraient pas, mais ceux qui le rencontraient pouvaient reproduire le problème de manière fiable. Le problème semble avoir été causé par FreeBSD bug #kern/64313.

  • Les variables de gestion des signaux dans la bibliothèque native du Wrapper sont désormais volatile. Directement, cela visait à corriger un avertissement du compilateur sur les systèmes HP-UX64 mais cela devrait également rendre les appels plus efficaces.

Version 3.1.0 : Modifications et corrections de bogues (2004-04-22)

  • La licence a été révisée pour cette version afin d'inclure une omission de copyright. Cette modification doit être appliquée rétroactivement à toutes les versions du Java Service Wrapper à partir de la 3.0.0. Les modifications ne devraient avoir aucun effet sur les utilisateurs.

  • La documentation en ligne et le site web ont tous deux été retravaillés. Le logo a été mis à jour de sorte que Duke n'est plus utilisé. Le nouveau site en ligne permet désormais aux utilisateurs d'ajouter des commentaires à n'importe quelle page.

  • Ajout d'un nouveau fichier batch qui accepte des commandes comme le script shell UNIX. Le nouveau fichier est proposé comme alternative aux fichiers batch par défaut, et se trouve à src/bin/AppCommand.bat.in. Merci à Mike Castle pour le don du nouveau script. Voir la nouvelle section Script basé sur les commandes pour plus d'informations.

  • La version Windows du Wrapper n'enregistrait pas correctement qu'elle accepterait les messages SHUTDOWN lors de l'exécution en tant que service. Le Wrapper recevait le message de toute façon, donc cela ne devrait pas changer le fonctionnement. Merci à Jason Tishler d'avoir remarqué cela et d'avoir envoyé un correctif.

  • Ajout d'une nouvelle propriété, wrapper.native_library, qui peut être utilisée pour spécifier le nom de base de la bibliothèque native chargée par la classe WrapperManager.

  • Modification de la classe WrapperManager afin qu'elle stocke désormais des références à System.out et System.err à l'initialisation et écrive toujours vers ces flux stockés. Cela garantit que toutes les sorties console du Wrapper vont toujours dans le fichier wrapper.log même si le code utilisateur remplace ces flux par des appels à System.setOut et System.setErr. Cela était nécessaire pour empêcher que des interblocages dans un tel code utilisateur n'affectent le fonctionnement du Wrapper.

  • Correction d'un problème où certaines variables d'environnement n'étaient pas chargées correctement depuis le registre système lors de l'exécution en tant que service NT. Un grand merci à Eric Smith d'avoir identifié cela et soumis un correctif. Il s'avère que la fonction putenv n'était pas utilisée correctement.

  • Modification de la façon dont le fichier wrapper.conf est chargé afin qu'il lise désormais le contenu correctement même si les fins de ligne du fichier sont incorrectes pour la plateforme actuelle. Les fins de ligne Windows causaient des problèmes lorsqu'elles étaient utilisées sur les plateformes UNIX. Feature Request #829896.

  • Ajout d'une nouvelle propriété, wrapper.ntservice.console, qui permet d'afficher une console lors de l'exécution en tant que service NT.

  • Correction d'un problème où la fonctionnalité demande de vidage des threads en cas d'échec de sortie de la JVM n'avait jamais fonctionné lors de l'exécution en tant que service NT. Bug #831775.

  • Ajout d'une nouvelle propriété, wrapper.console.title, qui permet de définir le titre de la console dans laquelle le Wrapper s'exécute actuellement. Cela ne fonctionne actuellement que sur les plateformes Windows.

  • Ajout d'une nouvelle méthode, setConsoleTitle, à la classe WrapperManager qui permet à l'application de définir dynamiquement le titre de la console. Comme la propriété wrapper.console.title, cela ne fonctionne que sur les plateformes Windows.

  • Amélioration de l'algorithme de la fonctionnalité demande de vidage des threads en cas d'échec de sortie de la JVM afin que les vidages de threads extrêmement volumineux ne soient pas tronqués lorsque la JVM est tuée.

  • Correction d'un problème où CTRL-C était ignoré par le WrapperManager si un WrapperListener n'est jamais enregistré. Cela n'est pas possible si le Wrapper est utilisé correctement, mais un utilisateur l'a néanmoins rencontré.

  • Ajout de sorties de débogage supplémentaires pour aider à identifier la cause des problèmes de chargement de la bibliothèque native.

  • La classe WrapperManager vérifie désormais que sa version actuelle correspond à la version de la bibliothèque native et du Wrapper. Si des écarts sont trouvés, des avertissements appropriés seront affichés, mais l'application sera tout de même autorisée à démarrer. Cela a été ajouté pour rendre évidente la cause des problèmes résultant de versions incompatibles.

  • Ajout d'une nouvelle propriété wrapper.use_system_time (heure système). En définissant cette propriété à false, le Wrapper commencera à utiliser un nouveau minuteur expérimental qui utilise un thread d'arrière-plan pour gérer le temps plutôt que l'heure système. Cela présente un certain nombre d'avantages par rapport à l'utilisation de l'heure système et devrait offrir à la plupart des utilisateurs un comportement encore plus fiable lorsque le système est sous forte charge ou que des modifications sont apportées à l'heure système. Le minuteur est très critique pour le fonctionnement du Wrapper, donc l'ancien comportement est laissé comme valeur par défaut pour le moment jusqu'à ce que cette fonctionnalité ait eu la chance d'être testée « dans le temps ». Si tout se passe bien, cela sera activé par défaut dans une version future du Wrapper. Une paire de propriétés associées, wrapper.timer_fast_threshold et wrapper.timer_slow_threshold, ont également été ajoutées pour aider au débogage.

  • Retravail du code de journalisation afin qu'il soit désormais thread-safe. L'ajout du thread minuteur signifie qu'il y a maintenant plus d'un seul thread accédant à ce code. Cela causait des problèmes car les deux threads tentaient d'utiliser les mêmes tampons. Dans le cadre de cette modification, une nouvelle variable de format 'D' a été ajoutée pour afficher le thread qui effectue la journalisation.

  • Correction d'un problème où un vidage de threads était invoqué si la fonctionnalité demande de vidage des threads en cas d'échec de sortie de la JVM était activée et que l'utilisateur forçait un arrêt immédiat en appuyant sur CTRL-C plus d'une fois.

  • Ajout des méthodes getUser et getInteractiveUser à la classe WrapperManager pour permettre au code utilisateur d'interroger des informations sur l'utilisateur exécutant le Wrapper ou l'utilisateur qui interagit avec le Wrapper et sa JVM. Feature Request #812175.

  • Le Wrapper se terminera désormais toujours avec le code de sortie utilisé pour terminer la JVM, que System.exit soit utilisé ou WrapperManager.stop. Lors de l'exécution en tant que service NT, le Wrapper retourne désormais correctement le bon code de sortie au gestionnaire de services afin que les outils de récupération après échec fonctionnent maintenant correctement. Feature Request #852491.

  • Ajout d'une commande status au script shell UNIX qui peut être utilisée pour savoir si le Wrapper est actuellement en cours d'exécution. Correctif soumis par Joseph Benavidez.

  • Modification de WrapperSimpleApp et WrapperStartStopApp afin que la méthode main d'une classe soit localisée même si elle existe dans une classe parente plutôt que dans la classe spécifiée.

  • Pour faciliter le débogage des problèmes de classpath, le Wrapper vérifie désormais toutes les entrées du classpath avant de lancer une JVM et consigne des avertissements de niveau débogage pour toute entrée qui n'existe pas.

  • Correction d'un problème où il était possible de définir un filtre de longueur nulle qui se déclenchait sur n'importe quelle sortie.

  • Ajout de sorties de débogage supplémentaires pour faciliter le débogage des problèmes de démarrage, d'arrêt et de redémarrage.

  • Modification de la façon dont le Wrapper tue de force une JVM figée sur les plateformes UNIX afin qu'il envoie désormais un SIGTERM, attende jusqu'à 5 secondes, puis envoie un SIGKILL.

  • Ajout d'une nouvelle propriété wrapper.java.library.path.append_system_path qui fera en sorte que le Wrapper ajoute le chemin système au chemin de bibliothèque généré. Feature Request #917902.

  • Correction d'un problème où les espaces autour du caractère '=' d'une définition de propriété rendaient la propriété invisible pour le Wrapper. Bug #916001.

  • Correction d'un problème où le premier délai d'attente de ping après le démarrage de la JVM était encore codé en dur à 30 secondes. Cela faisait échouer une combinaison de valeurs élevées de wrapper.ping.interval et wrapper.ping.timeout.

  • Correction d'un problème où la JVM ne s'arrêtait pas proprement si on demandait au Wrapper de s'arrêter trop tôt après le lancement d'une JVM. Cela menait à ce que la JVM soit tuée après l'expiration du délai d'arrêt. Bug #917281.

  • Ajout d'un conseiller qui affichera des messages explicatifs sur la console et dans le fichier journal du Wrapper lorsque le Wrapper rencontre une erreur de configuration courante. Cela est conçu pour réduire les demandes de support des nouveaux utilisateurs. Peut être désactivé à l'aide de la propriété wrapper.adviser.

  • Le script bash et l'utilitaire realpath sont dépréciés depuis la version 3.0.3. Ils ont été retirés dans cette version. Le script sh est recommandé sur toutes les plateformes UNIX, et l'utilitaire realpath qui était utilisé par les scripts bash et sh antérieurs à 3.0.3 n'est plus utilisé depuis.

  • Ajout de la propriété wrapper.startup.delay ainsi que de variantes spécifiques à la console et au service qui permettent de configurer un délai entre le lancement du Wrapper et le lancement de la première JVM.

  • Réhabilitation de la propriété wrapper.debug qui n'est plus « dépréciée ». Elle a continué d'être utile et méritait une documentation et un statut officiel.

  • Ajout des propriétés wrapper.on_exit.<n> pour contrôler ce qui se passe lorsqu'une JVM se termine en fonction du code de sortie.

  • Modification de la façon dont les appels à System.in.read() sont gérés afin qu'ils se bloquent désormais plutôt que de lancer une exception. Actuellement, System.in ne peut pas être utilisé avec le Wrapper en raison de la façon dont les E/S sont transmises entre le Wrapper et la JVM.

  • Modification des fichiers batch Windows pour corriger un problème où le chemin vers wrapper.exe contenait plus d'un « /bin ». Les nouveaux fichiers batch sont beaucoup plus simples et devraient être plus faciles à personnaliser si nécessaire. Bug #925308. Bug #925308.

  • Modification des propriétés wrapper.java.initmemory et wrapper.java.maxmemory afin qu'elles aient désormais une valeur par défaut de 0, ce qui fait que les paramètres -Xms et -Xmx sont omis de la commande utilisée pour lancer Java. Cela fera que la JVM utilisera ses propres valeurs par défaut et permet également de spécifier les paramètres de mémoire à l'aide des propriétés wrapper.java.additional.<n>.

  • Ajout d'une paire de variables d'environnement, WRAPPER_FILE_SEPARATOR et WRAPPER_PATH_SEPARATOR, dont les valeurs sont définies à '/' et ':' ou '\' et ';' au démarrage. Elles peuvent être utilisées dans le fichier wrapper.conf pour construire des valeurs de propriétés indépendantes de la plateforme.

  • Ajout d'une nouvelle propriété wrapper.working.dir qui permet de changer le répertoire de travail du Wrapper et de la JVM vers un emplacement autre que l'emplacement du binaire du Wrapper. Feature Request #738160.

Version 3.0.5 : Modifications et corrections de bogues (2003-09-13)

  • Ajout de la prise en charge de SGI Irix. Un grand merci à Andreas Wendt pour avoir fourni le correctif.

  • En raison d'un bogue dans la compilation, la bibliothèque native n'était pas incluse dans les versions binaires 3.0.3 ou 3.0.4 pour OSX ; la compilation à partir des sources fonctionnait correctement. Cela a été corrigé et la compilation a été grandement simplifiée pour éviter de tels problèmes à l'avenir. Bug #791755.

  • Modification de l'emplacement par défaut du fichier pid généré par le script sh afin qu'il se trouve dans le même répertoire que le script sh plutôt que dans /var/run. Cela peut être modifié en définissant la variable PIDDIR dans le script sh utilisé pour lancer le Wrapper.

  • Ajout de la prise en charge de la propriété wrapper.pidfile sur la plateforme Windows.

    AVERTISSEMENT

    (UTILISATEURS WINDOWS) Si vous utilisez un fichier wrapper.conf qui a été créé avant la version 3.0.0 du Wrapper, alors vous pouvez avoir cette propriété définie dans votre fichier de configuration. Vous obtiendrez une erreur au démarrage si le chemin spécifié n'existe pas.

  • Ajout de la propriété wrapper.java.pidfile qui fera en sorte que le pid du processus java soit écrit dans un fichier spécifié.

  • Arrêt de l'effacement du masque de création de fichiers lorsque la version UNIX du Wrapper s'exécute en tant que processus démon. Le masque de création de fichiers ne sera pas hérité du processus qui lance le Wrapper. Bug #788849.

  • Modification du script sh afin qu'il fonctionne sous Linux, puis dépréciation du script bash. Cela signifie que toutes les plateformes UNIX peuvent désormais utiliser le même script pour contrôler le Wrapper. Merci à Mike Castle pour le correctif. Le script bash se trouve encore dans la version, mais il est déprécié et sera retiré dans une version future.

  • Modification du script sh afin qu'il soit désormais possible de définir la priorité nice dans le bloc de configuration du script.

  • Suppression de la sortie vers System.out dans la méthode WrapperManager.requestThreadDump(). Si certains threads de la JVM étaient bloqués en accédant à l'objet System.out, tenter d'effectuer un vidage de threads ferait également bloquer le thread appelant. Merci à Thomas Hart pour le correctif.

  • Rendre évident dans le journal si le Wrapper a été démarré en tant que processus démon sur les systèmes UNIX.

  • Modification de la façon dont les redémarrages demandés depuis la JVM, ou causés par un filtre, sont gérés. Le Wrapper ne réinitialisera plus le compteur de redémarrages dans aucun de ces cas. Si une application s'exécute plus longtemps que le délai wrapper.successful_invocation_time, alors le compteur sera tout de même réinitialisé à 0.

  • Ajout d'une nouvelle propriété wrapper.ignore_signals qui permet de configurer le Wrapper afin qu'il ignore les signaux CTRL-C, HALT et INT.

  • Modification de la méthode WrapperManager.isLaunchedAsService() sur les systèmes UNIX afin qu'elle retourne désormais true si le Wrapper a été lancé avec l'indicateur wrapper.daemonize défini.

  • Ajout d'une paire d'interfaces MBean qui permettent de contrôler le Wrapper à l'aide de JMX. Voir la nouvelle section JMX dans la documentation pour plus de détails. Merci à Sal Ingrilli pour l'aide aux tests.

  • Modification de la compilation Windows afin que les fichiers wrapper.exe et wrapper.dll puissent désormais être compilés depuis Ant si MSVC est installé.

  • Ajout d'une nouvelle propriété wrapper.ping.interval qui permet aux utilisateurs de contrôler la fréquence à laquelle le Wrapper interroge la JVM. Feature Request #607768.

  • Lorsqu'une JVM refuse de s'arrêter, le Wrapper peut être configuré pour demander un vidage de threads à l'aide de la propriété wrapper.request_thread_dump_on_failed_jvm_exit. Le Wrapper attendait alors 1 seconde avant que le processus ne soit tué. Ce n'était pas toujours assez long, ce qui entraînait un vidage de threads tronqué. La pause a été portée à 3 secondes. Feature Request #633761.

  • Correction d'un bogue où les propriétés wrapper.app.parameter.<n> et wrapper.java.additional.<n> déclarées depuis la ligne de commande Windows ne géraient pas correctement les espaces dans leurs valeurs. Support Request #802139.

Version 3.0.4 : Modifications et corrections de bogues (2003-08-11)

  • Correction d'un problème sur les systèmes UNIX où la demande d'un second vidage de threads à n'importe quel moment pendant la vie d'un seul processus Wrapper faisait s'arrêter le Wrapper et la JVM plutôt que d'effectuer le vidage de threads.

  • Correction d'un problème où un utilisateur sans permission, tentant d'arrêter une application, pouvait supprimer le fichier pid même s'il n'était pas en mesure d'arrêter l'application elle-même. Cela faisait croire aux scripts que l'application était arrêtée alors qu'elle était en réalité toujours en cours d'exécution.

  • Correction d'un problème où une application était tuée prématurément si elle mettait plus de 6 secondes à se terminer d'elle-même. Les scripts s'assurent désormais qu' une application a toujours suffisamment de temps pour s'arrêter proprement.

  • Amélioration de la sortie de débogage afin que les codes de paquets soient désormais affichés à l'aide d'un nom plutôt que d'un numéro brut.

  • Réduction de la fréquence des messages « Waiting to stop... » affichés lors de la suppression d'un service NT actuellement en cours d'exécution. Fréquence diminuée d'une fois par seconde à une fois toutes les cinq secondes.

  • Correction d'un problème mineur où l'heure dans la date retournée par WrapperInfo.getBuildTime() n'était pas en base 24.

  • Ajout des options de ligne de commande -t et -p à la version Windows du Wrapper pour démarrer (sTart) et arrêter (stoP) le Wrapper en tant que service NT. Cela peut être utilisé à la place de « net start » et « net stop », qui ne fonctionnent pas toujours correctement lorsqu'un service met longtemps à démarrer ou à s'arrêter. Voir la section Lancement de votre application (Win32) pour plus de détails.

  • Ajout d'une nouvelle méthode WrapperManager.stopImmediate qui fera en sorte que la JVM se termine immédiatement sans appeler aucune méthode d'arrêt ni aucun hook d'arrêt.

  • Ajout d'une nouvelle classe, WrapperActionServer, qui facilite le contrôle du Wrapper à distance en ouvrant un socket et en envoyant des commandes. Voir les javadocs de la classe pour plus de détails.

  • Correction du bogue #744801. Une interface graphique Java n'était pas affichée lorsque l'application s'exécutait en mode console ou en tant que service avec wrapper.ntservice.interactive activé. Ce problème a été introduit dans la version 3.0.0 lors de l'utilisation des versions 1.2.x ou 1.3.x de Java. Pour utiliser les services interactifs avec les versions 1.2.x ou 1.3.x de Java, veuillez consulter la documentation de la propriété wrapper.ntservice.interactive.

  • Correction d'un problème où la JVM ne recevait pas les événements CTRL-C et CTRL-CLOSE lors de l'exécution sous le Wrapper sous Windows. Ce n'était pas un problème dans la plupart des cas car le Wrapper prenait en charge le traitement des événements. Mais la méthode WrapperListener.controlEvent() n'était pas appelée comme documenté.

  • Modification de la façon dont WrapperSimpleApp et WrapperStartStopApp répondent aux événements de contrôle afin que la JVM réponde et appelle WrapperManager.stop() même lorsqu'elle est contrôlée par le Wrapper.

  • Modification du comportement suggéré de la méthode WrapperListener.controlEvent(). Les utilisateurs qui ont implémenté eux-mêmes l'interface WrapperListener devraient consulter les javadocs. Les modifications ne sont pas obligatoires et les applications continueront de fonctionner comme auparavant.

  • Ajout de la prise en charge de DEC OSF1 (Alpha). Un grand merci à Andreas Wendt pour avoir fourni le correctif.

  • Correction d'un problème où les scripts sh et bash échouaient si le chemin vers le script contenait des espaces.

  • Correction d'un problème où la JVM se bloquait parfois lors de la tentative d'arrêt si le paramètre wrapper.key était passé à la JVM alors qu'elle n'était pas contrôlée par le Wrapper. Cela se produisait si un utilisateur copiait la commande depuis la sortie de débogage du Wrapper et tentait de l'exécuter telle quelle sans d'abord retirer le paramètre wrapper.key.

  • Implémentation de la possibilité de spécifier le groupe d'ordre de chargement d'un service NT en réponse à la demande de fonctionnalité #764143. Voir les javadocs de la nouvelle propriété wrapper.ntservice.load_order_group pour plus de détails.

  • Amélioration du message d'erreur affiché lorsque le journal d'événements NT est plein, en réponse à la demande de fonctionnalité #643617. La sortie vers le journal d'événements sera désormais désactivée si des erreurs sont rencontrées lors de la journalisation des événements. Cela empêche l'erreur de se répéter.

  • Amélioration du message d'erreur affiché sous Windows lorsque la commande Java configurée ne peut pas être exécutée ou n'existe pas.

  • Correction d'un problème où le Wrapper laissait un tube non fermé à chaque redémarrage de la JVM sur toutes les plateformes UNIX. Cela faisait que le Wrapper manquait de descripteurs de fichiers. Bug #767267, découvert et corrigé par David Wong.

  • Correction d'un problème où le caractère « # », qui signifie un commentaire, ne pouvait pas être inclus dans les valeurs de propriétés. Un double dièse, « ## », se résoudra désormais en un « # » dans la valeur de la propriété. Bug #777303.

  • Ajout de la prise en charge de FreeBSD. Un grand merci à Alphonse Bendt pour avoir fourni le correctif.

  • La propriété wrapper.port est désormais facultative.

  • Modification de la façon dont les variables d'environnement sont chargées depuis le registre sur les plateformes Windows afin que les utilisateurs n'obtiennent plus de messages d'avertissement indiquant qu'il n'est pas possible de gérer des variables d'environnement très volumineuses. Les versions précédentes ne pouvaient gérer que des variables d'environnement dont la valeur développée faisait moins de 2048 caractères de longueur.

  • Correction d'un problème sur les plateformes UNIX où un shell utilisé pour démarrer le Wrapper en tant que processus détaché se bloquait lorsque l'utilisateur tentait de quitter le shell. Merci à Mike Castle pour ce correctif.

Version 3.0.3 : Modifications et corrections de bogues (2003-05-14)

  • Ajout de la prise en charge de Mac OS X. Un grand merci à Andy Barnett pour avoir fourni le correctif.

  • Correction d'une faute de segmentation sur les systèmes UNIX lorsque la première sortie console de la JVM était une ligne vide. Merci à Mike Castle d'avoir trouvé cela.

  • Correction d'un problème où un malloc de longueur 0 était appelé s'il n'y avait aucun filtre configuré. Cela fonctionnait bien sur la plupart des plateformes mais provoquait un plantage sous MAC OS X.

  • Retravail de l'initialisation des scripts bash et sh afin qu'ils fonctionnent correctement lorsqu'ils sont référencés en tant que liens symboliques. Merci à Richard Emberson pour le code de résolution des liens symboliques.

  • Dépréciation du binaire realpath dans les distributions *NIX car il n'est plus utilisé par les scripts bash ou sh. Il est laissé pour le moment afin de ne pas casser les scripts de compilation d'autres projets, mais il sera retiré après quelques versions supplémentaires.

  • Ajout d'un test pour s'assurer que wrapper.ntservice.interactive n'est pas défini à TRUE lorsqu'un compte est spécifié à l'aide de wrapper.ntservice.account.

Version 3.0.2 : Modifications et corrections de bogues (2003-04-15)

  • Modification des scripts sh et bash afin que la sortie journal de la console soit désactivée par défaut lorsque les scripts sont lancés avec l'action « start ». L'exécution avec l'action « console » enverra toujours la sortie vers la console. La journalisation dans le fichier reste activée.

  • Modification de la propriété wrapper.ping.timeout afin qu'elle contrôle également le délai d'attente de ping au sein de la JVM. Auparavant, le délai d'attente des réponses au Wrapper pouvait être contrôlé, mais le délai d'attente de ping au sein de la JVM était codé en dur à 30 secondes.

  • Dans la dernière version, un travail a été effectué pour éviter les faux délais d'attente causés par de grandes quantités de sortie. Sur certains systèmes fortement chargés, des délais d'attente étaient encore rencontrés. Plutôt que de lire jusqu'à 50 lignes d'entrée, le code lira désormais pendant un maximum de 250 ms avant de revenir afin de donner à la boucle d'événements principale plus de cycles.

  • Correction d'un problème où les valeurs des variables d'environnement définies dans le fichier de configuration n'étaient pas correctes lorsque ces valeurs incluaient des références à d'autres variables d'environnement.

  • Correction d'un problème potentiel de débordement de tampon si des propriétés de configuration référençaient des variables d'environnement extrêmement volumineuses.

  • Correction d'un problème potentiel où l'incapacité à développer des variables d'environnement très volumineuses aurait mené à une violation d'accès lors de l'exécution en tant que service NT.

  • Ajout de vérifications supplémentaires dans le cas où la bibliothèque native ne peut pas être chargée afin que le WrapperManager puisse distinguer entre une bibliothèque manquante et une bibliothèque illisible en raison de problèmes de permissions.

  • Suppression de wrapper.ntservice.process_priority du fichier wrapper.conf par défaut car son utilisation peut produire des résultats inattendus si elle est mal employée. Veuillez consulter la documentation de la propriété pour plus de détails.

  • Correction d'un problème où les variables d'environnement dans le registre qui n'avaient aucune valeur faisaient planter le Wrapper avec une violation d'accès. Cela a été introduit dans la version 3.0.0 avec la fonctionnalité de chargement des variables d'environnement depuis le registre. L'entrée de registre en cause était WV_GATEWAY_CFG qui semble liée à Oracle.

Version 3.0.1 : Modifications et corrections de bogues (2003-03-26)

  • Correction d'un problème avec wrapper.disable_shutdown_hook. En raison d'une faute de frappe dans le code source, la propriété était ignorée. Cela était cassé dans la version 3.0.0.

  • Correction d'un problème avec la compilation de la version HP-UX signalé par Ashish Gawarikar.

  • Ajout de la possibilité de définir des variables d'environnement depuis le fichier de configuration ou depuis la ligne de commande. Voir la section Variables d'environnement pour plus de détails.

  • Correction d'un problème sur les machines HP-UX et AIX où la fonction stop() dans les scripts shell provoquait une erreur de syntaxe en raison d'un conflit avec une commande shell du même nom sur ces plateformes. Cela semble être un problème avec le shell Korn sur toutes les plateformes.

  • Correction d'un problème où une sortie très importante de la JVM pouvait faire que le Wrapper donne un faux délai d'attente. Le Wrapper ne lit désormais que 50 lignes d'entrée à la fois pour garantir que la boucle d'événements du Wrapper obtienne toujours des cycles.

  • Correction d'un problème sur les versions UNIX où des sauts de ligne supplémentaires étaient parfois ajoutés à la sortie journalisée lorsqu'il y avait de grandes quantités de sortie envoyées depuis la JVM.

  • Correction d'un problème où un grand nombre d'appels à WrapperManager.log() immédiatement avant la sortie de la JVM pouvait mener le Wrapper à indiquer incorrectement que la JVM s'était terminée de façon inattendue.

Version 3.0.0 : Modifications et corrections de bogues (2003-03-27)

  • Dépréciation du paquet com.silveregg.wrapper au profit de org.tanukisoftware.wrapper. Les classes et interfaces du paquet silveregg continueront de fonctionner, mais la migration vers le nouveau paquet devrait être effectuée lorsque c'est possible.

  • Sur les systèmes Windows, conversion de toutes les barres obliques dans la propriété wrapper.java.command en barres obliques inverses. Certains utilisateurs avaient signalé des problèmes sous Windows XP.

  • Implémentation de la demande de fonctionnalité #633178. Ajout de WrapperManager.requestThreadDump() pour forcer la JVM actuelle à effectuer immédiatement un vidage de threads.

  • Correction d'un bogue où wrapper.logfile.maxsize était défini à 0 si l'unité « k » ou « m » était omise.

  • Ajout de la possibilité de spécifier un nom de compte et un mot de passe lors de l'installation d'un service NT.

  • Ajout d'une propriété, wrapper.ntservice.interactive, qui permet de contrôler si le processus Java peut ou non accéder au bureau pendant qu'il s'exécute en tant que service NT.

  • Ajout d'une prise en charge limitée des versions 1.2.x de Java. Les hooks d'arrêt sont pris en charge à partir de Java 1.3, donc ces fonctions seront désactivées. Si l'application affiche une interface graphique, alors Java 1.3 devrait être utilisé car l'interface graphique ne peut pas actuellement être affichée lors de l'utilisation de Java 1.2.x.

  • Il est désormais possible d'utiliser la propriété wrapper.pidfile sur toutes les plateformes *nix. Veuillez noter que la propriété a été retirée du fichier wrapper.conf par défaut. La propriété n'est pas nécessaire lorsque le Wrapper est lancé avec le script shell bash. Le script shell sh définira wrapper.pidfile lorsque le Wrapper est lancé. Si l'un des scripts fournis avec la distribution du Wrapper est utilisé, alors wrapper.pidfile devrait toujours être retiré de votre fichier wrapper.conf.

  • Ajout d'une nouvelle propriété wrapper.daemonize qui, lorsqu'elle est définie, fera du processus Wrapper un leader de groupe de session non détaché. Cela permet de lancer le Wrapper de telle sorte qu'il ne sera pas terminé lorsque l'utilisateur lançant le processus se déconnecte. Cela avait été un problème sur les systèmes Solaris lors de l'utilisation du shell sh. Les scripts sh et bash par défaut utilisent tous deux cela par défaut. Veuillez mettre à jour vos scripts pour une utilisation avec cette version. Merci à Rajiv Subrahmanyam pour le correctif.

  • Correction d'un problème où le Wrapper comptait incorrectement le nombre de threads non-démon dans la machine virtuelle JRockit de BEA. Cela faisait s'arrêter l'application lorsque le nombre de threads non-démon tombait à 1.

  • Ajout de la prise en charge de la compilation du Wrapper sur les systèmes AIX et HP-UX. Merci pour les correctifs concernés à Ashish Gawarikar et William Lee.

  • Implémentation de la demande de fonctionnalité #653131 pour forcer la JVM à se terminer immédiatement lorsque l'utilisateur appuie plusieurs fois sur CTRL-C.

  • Ajout d'une action « console » aux scripts bash et sh pour permettre de lancer le Wrapper dans le processus shell actuel. La tâche « start » lancera le Wrapper en tant que processus démon engendré.

  • Correction d'un problème où les variables d'environnement manquantes spécifiées dans les propriétés de classpath ou de chemin de bibliothèque n'étaient pas gérées correctement.

  • Implémentation de la demande de fonctionnalité #676599 pour activer le filtrage de la sortie de la JVM afin de déclencher des redémarrages de la JVM ou des arrêts du Wrapper. Voir les nouvelles propriétés wrapper.filter.trigger.<n> et wrapper.filter.action.<n>.

  • Modification de la version Win32 du Wrapper afin que les variables d'environnement soient toujours lues depuis le registre système lorsque le Wrapper s'exécute en tant que service. En faisant cela, il est possible de modifier ou d'ajouter les variables d'environnement système et de les faire prendre effet sans avoir d'abord à redémarrer la machine.

  • Implémentation des fichiers de configuration en cascade. Voir la section Fichiers de configuration en cascade pour plus de détails.

  • Modification de la valeur par défaut de la propriété wrapper.java.initmemory à 3 Mo. La valeur par défaut sur les JVM Windows et Linux est de 2 Mo, mais la JVM Solaris nécessite un minimum de 3 Mo. La valeur minimale acceptée par le Wrapper a été changée de 8 Mo à 1 Mo pour permettre de réduire l'empreinte des applications à ce qui est possible sans utiliser le Wrapper.

  • Amélioration de l'analyse des fichiers de configuration afin que les espaces blancs de début et de fin soient désormais correctement tronqués. Il est également désormais possible d'avoir des commentaires à la fin d'une ligne contenant une propriété.

  • Modification de la façon dont les exceptions lancées par la méthode main d'une application sont présentées à l'utilisateur par WrapperSimpleApp et WrapperStartStopApp afin qu'elles ne ressemblent plus à un problème de configuration du Wrapper.

Version 2.2.9 : Modifications et corrections de bogues (2002-11-04)

  • Ajout d'une nouvelle propriété, wrapper.restart.delay, qui permet à l'utilisateur de contrôler le temps de pause entre la sortie d'une JVM et le lancement d'une nouvelle JVM.

  • Correction du bogue #611024. Le Wrapper échouait parfois à démarrer si wrapper.max_failed_invocations est défini à 1.

  • Correction d'un problème où le nombre de threads non-démon n'était pas calculé dans certains cas.

  • Implémentation de la demande de fonctionnalité #491443. Les variables d'environnement référencées dans le fichier wrapper.conf seront désormais évaluées au chargement du fichier. La syntaxe Windows des variables d'environnement est utilisée sur toutes les plateformes pour les rendre indépendantes de la plateforme.

  • Correction d'un problème où le fichier wrapper.conf était ouvert avec des verrous en lecture et en écriture alors qu'un verrou en lecture est tout ce qui est nécessaire. Le Wrapper échoue désormais au démarrage si une autre application détenait un verrou en lecture sur le fichier de configuration.

  • Modification du message affiché lorsque la bibliothèque native n'a pas pu être trouvée, afin qu'il soit beaucoup plus descriptif. Espérons que cela réduira les questions causées par des problèmes de configuration.

  • Implémentation de la demande de fonctionnalité #613539. Modification de wrapper.java.library.path.<n> pour qu'elle fonctionne comme les propriétés wrapper.java.classpath.<n> afin que plusieurs répertoires puissent être spécifiés dans le chemin de bibliothèque d'une manière indépendante de la plateforme. L'ancienne propriété est toujours prise en charge, mais dépréciée.

  • Correction du bogue #632215. La méthode WrapperManager.isLaunchedAsService() retournait toujours false, même lors de l'exécution en tant que service sous Windows. Sous Linux, le Wrapper s'exécute toujours en tant qu'application console, donc cette méthode retournera toujours false.

  • Amélioration du message lancé lorsque le code utilisateur tente d'accéder à System.in depuis une JVM contrôlée par le Wrapper. System.in ne fonctionnera pas car la JVM est un processus engendré.

Version 2.2.8 : Modifications et corrections de bugs (2002-09-15)

  • Correction d'un problème de compilateur sur certains systèmes Solaris.

  • Ajout d'une nouvelle propriété, wrapper.cpu.timeout, qui permet à l'utilisateur de contrôler le temps pendant lequel le Wrapper tolérera de ne recevoir aucun CPU avant d'afficher un message d'avertissement. La fonctionnalité de délai d'attente CPU a été ajoutée en 2.2.7 mais le délai par défaut de 10 secondes n'était pas configurable.

  • Le Wrapper n'accordait que 5 secondes entre le moment où la JVM informait le Wrapper qu'elle allait se terminer et la sortie effective du processus JVM. Cela pouvait entraîner la terminaison prématurée du processus par le Wrapper dans les cas où un thread d'arrêt de l'application prenait plus de 5 secondes pour se terminer. Le Wrapper accorde désormais wrapper.jvm_exit.timeout secondes au processus JVM pour se terminer de lui-même avant d'être arrêté de force.

  • Lorsqu'il y a un problème de configuration ou qu'une ressource est indisponible, une JVM se termine parfois de façon anormale très peu de temps après son lancement. Cela peut conduire à un redémarrage infini de la JVM à cause d'une simple mauvaise configuration du classpath. Pour contourner cela, le Wrapper a toujours eu une limite stricte de 5 redémarrages dans un court laps de temps. Si la JVM s'exécutait depuis plus de quelques minutes, le compteur était réinitialisé. Dans cette version, une nouvelle propriété wrapper.max_failed_invocations a été ajoutée pour permettre de définir la valeur maximale. La durée pendant laquelle la JVM doit désormais s'exécuter pour que le lancement de la JVM soit considéré comme un succès aux fins de redémarrage est définie à l'aide de la nouvelle propriété wrapper.successful_invocation_time.

  • Le nombre de propriétés avancées dont la plupart des utilisateurs n'ont pas besoin a augmenté à mesure que le Wrapper est devenu de plus en plus flexible. Cela a entraîné une confusion dans leur utilisation par des personnes qui les manipulent sans d'abord lire la documentation. Pour résoudre cela, les propriétés avancées ont été retirées du fichier de configuration par défaut. Elles fonctionnent toujours. Mais les utilisateurs doivent désormais consulter la documentation de configuration avancée pour découvrir leur existence. Les descriptions de ces propriétés ont été considérablement enrichies afin, nous l'espérons, de dissiper toute confusion quant à leur utilisation.

  • Lorsque la JVM se termine de façon anormale, le Wrapper fait une pause de quelques secondes avant de démarrer une autre JVM. Si l'utilisateur appuyait sur CTRL-C pendant cette pause, une nouvelle JVM était tout de même lancée. La nouvelle JVM se terminait immédiatement mais c'était une perte de temps. Le Wrapper reconnaît désormais l'événement et annule le lancement de la nouvelle JVM.

  • Ajout d'une page à la documentation qui affiche les javadocs intégrés. Cela devrait faciliter leur navigation dans l'ensemble de la documentation.

  • Ajout d'une nouvelle méthode à WrapperManager qui permet au code utilisateur de journaliser à n'importe quel niveau de journalisation.

  • Ajout d'une nouvelle classe d'aide WrapperStartStopApp qui permet aux utilisateurs d'intégrer facilement des applications comme Tomcat qui utilisent une classe distincte pour arrêter l'application.

  • Ajout d'une section d'exemples à la documentation. Elle n'inclut que Tomcat 4 pour le moment.

Version 2.2.7 : Modifications et corrections de bugs (2002-06-06)

  • Correction d'un problème où la JVM tentait de se reconnecter au Wrapper pendant son arrêt. Cela causait des problèmes si la JVM était redémarrée.

  • Ajout de la prise en charge de la suspension du système en RAM ou sur disque. Amélioration également des performances du Wrapper lorsque le système est à 100 % de charge. Voir le nouvel exemple de sortie dans la section exemple.

  • Correction d'un problème où la sortie du journal n'était pas redirigée vers un fichier nommé wrapper.log dans le même répertoire que le binaire du Wrapper lorsque le fichier journal configuré du Wrapper n'était pas accessible.

  • Correction d'un problème où le Wrapper n'arrêtait pas correctement la JVM lorsque tous les threads non démons se terminaient. Normalement, une JVM se termine lorsque tous ses threads non démons se sont terminés, ce qui causait certains problèmes. (Merci à Jung Tamas)

  • Ajout de la possibilité de définir la priorité du Wrapper et de sa JVM lorsqu'ils s'exécutent en tant que service NT ou application console. La même chose peut être mieux réalisée sur les systèmes UNIX en utilisant « nice » dans le script shell utilisé pour lancer le Wrapper. Consultez la documentation pour plus de détails.

  • Les informations de la JVM n'étaient pas affichées correctement lorsque la bibliothèque native du Wrapper ne pouvait pas être chargée.

  • Ajout d'une nouvelle propriété pour que le Wrapper tente de demander un thread dump lorsque la JVM ne se termine pas sur demande.

  • Amélioration de la documentation des classes WrapperSimpleApp et WrapperListener.

  • Ajout d'une nouvelle propriété wrapper.shutdown.timeout pour permettre à l'utilisateur d'étendre le temps accordé à une application pour s'arrêter.

  • Refonte du fonctionnement du processus d'arrêt afin que System.exit ne soit jamais appelé avant que la méthode stop de WrapperListener n'ait eu la possibilité de se terminer.

  • Ajout d'un bouton Restart à l'application TestWrapper.

  • Correction d'un problème sur les versions UNIX où les caractères '%' dans la sortie Java pouvaient parfois faire planter le Wrapper. Cette correction n'avait pas été intégrée à la version précédente.

  • Ajout d'un test pour s'assurer que WrapperManager.stop n'est pas appelé de façon récursive.

  • Ajout de la prise en charge de la compilation sous Windows XP. Les installations précompilées fonctionnaient déjà.

Version 2.2.6 : Modifications et corrections de bugs (2002-04-29)

  • Correction d'un problème où les caractères '%' dans la sortie Java pouvaient parfois faire planter le Wrapper. (Merci à Frode Moe)

  • Ajout de la prise en charge de la demande d'un thread dump Java sans arrêter le processus Java.

  • Correction d'un problème sous Windows où la commande java cherchait l'exécutable java dans les répertoires system et system32 de Windows avant de vérifier le PATH lorsque le chemin complet vers l'exécutable java n'était pas spécifié dans le fichier de configuration. Cela pouvait conduire à l'exécution par le Wrapper d'une JVM différente de celle exécutée si java -version était lancé depuis la ligne de commande. Le Wrapper tentera désormais de résoudre le chemin complet de java en utilisant la variable d'environnement PATH.

  • Ajout d'une sortie de débogage affichant les informations de version Java au premier démarrage de la JVM.

  • Modification du code source C pour utiliser des commentaires de style /* */ plutôt que des commentaires de style //. Certaines personnes avaient des problèmes avec certains compilateurs.

Version 2.2.5 : Modifications et corrections de bugs (2002-02-26)

  • Correction d'un problème lors de la lecture sous UNIX de fichiers de configuration provenant de Windows.

  • La propriété wrapper.debug est dépréciée au profit des niveaux de journalisation.

  • Ajout de la prise en charge des descriptions de service pour Win2k et XP.

  • Ajout d'une nouvelle fonctionnalité de journalisation comprenant les caractéristiques suivantes : niveaux de journalisation comme Log4j, prise en charge du journal des événements NT, prise en charge de syslog UNIX et fichiers journaux rotatifs.

  • Ajout de la prise en charge des caractères génériques pour les entrées de classpath dans wrapper.conf.

  • Ajout de la possibilité de spécifier des propriétés de configuration depuis la ligne de commande.

  • Modification de la façon dont les services NT sont installés afin qu'il ne soit plus nécessaire de créer une version patchée du fichier wrapper.exe pour référencer le fichier wrapper.conf.

Version 2.2.4 : Modifications et corrections de bugs (2001-12-12)

  • La valeur de APP_NAME dans les scripts bash ou sh n'a plus besoin d'être identique au nom du script.

  • Ajout de la possibilité de formater et/ou de désactiver la journalisation dans un fichier et la sortie vers la console.

  • Définition du mode des exécutables dans les fichiers tar de la version binaire afin qu'ils puissent être exécutés sans modification après extraction.

  • Correction des fins de ligne dans la version afin que les fichiers bat soient toujours en CRLF, les scripts UNIX toujours en LF. Les autres fichiers source sont toujours en CRLF dans les archives ZIP et en LF dans les archives tar.gz.

  • Le build échoue désormais si wrapper.exe ou wrapper.dll n'existent pas pour les compilations Windows.

  • Ajout d'un fichier wrapper.log vide aux versions afin que le programme d'exemple TestWrapper fonctionne immédiatement.

Version 2.2.3 : Modifications et corrections de bugs (2001-12-07)

  • Ajout de scripts et de fichiers de configuration modèles pour faciliter l'intégration avec d'autres applications.

  • Nettoyage du build.

  • La méthode WrapperSimpleApp de lancement des applications ne fonctionnait pas correctement avec les applications dont la méthode main ne retournait pas.

  • Ajout de scripts d'exemple et de fichiers wrapper.conf dans les répertoires bin et lib. Ces scripts sont utilisés pour démarrer une application d'exemple qui fonctionne immédiatement. Consultez la nouvelle page example.html dans la documentation pour plus de détails.

  • Suppression des répertoires spécifiques à la plateforme dans les répertoires bin et lib.

  • Activation des chemins relatifs pour la version Windows. Dans les versions précédentes du Wrapper, il était nécessaire d'utiliser toujours des chemins absolus car le répertoire de travail du Wrapper était alors le répertoire System32 de NT lorsqu'il s'exécutait en tant que service.

  • Dans la version Windows, le Wrapper définit toujours le répertoire de travail courant à l'emplacement de l'exécutable du Wrapper immédiatement après le démarrage.

  • Améliorations de la documentation / page web.

Version 2.2.2 : Modifications et corrections de bugs (2001-11-30)

  • Ajout d'une documentation au format HTML.

Version 2.2.1 : Modifications et corrections de bugs (2001-11-26)

  • Ajout des fichiers de compilation Linux et Solaris.

  • Ajout de la documentation Linux et Solaris.

Version 2.2.0 : Modifications et corrections de bugs (2001-11-08)

  • Première version publique.