joram issueshttps://gitlab.ow2.org/joram/joram/-/issues2024-03-27T14:13:38Zhttps://gitlab.ow2.org/joram/joram/-/issues/314397Export a JMS queue to JSon2024-03-27T14:13:38ZAndre FreyssinetExport a JMS queue to JSonAllows the export in JSon format of a JMS queue and all its messages (delivered and delayed). The first objective is to be able to retrieve the state of a queue for observation purposes. The final objective could be to rebuild an identic...Allows the export in JSon format of a JMS queue and all its messages (delivered and delayed). The first objective is to be able to retrieve the state of a queue for observation purposes. The final objective could be to rebuild an identical queue at a (new) broker (possibly after correcting potential errors).
See #314394 and #314395.Andre FreyssinetAndre Freyssinethttps://gitlab.ow2.org/joram/joram/-/issues/314396Handling delayed messages in queues.2024-03-21T14:37:42ZAndre FreyssinetHandling delayed messages in queues.Currently the management of delayed messages is not scalable. Messages are not kept in the queue (memory) and a task is scheduled for each (the message is kept in this task and sent with the publication notification).
This way of handli...Currently the management of delayed messages is not scalable. Messages are not kept in the queue (memory) and a task is scheduled for each (the message is kept in this task and sent with the publication notification).
This way of handling timed messages is not scalable. We should maintain an ordered list of timed messages, and set a timer for the first timeout (see Scheduler class).https://gitlab.ow2.org/joram/joram/-/issues/314393SNI issue with Rest connector2024-03-18T08:54:27ZAndre FreyssinetSNI issue with Rest connectorSince the evolution of the version of jetty (v11) used in Joram, SNI errors appear during SSL/TLS tests of the JMS connector.Since the evolution of the version of jetty (v11) used in Joram, SNI errors appear during SSL/TLS tests of the JMS connector.https://gitlab.ow2.org/joram/joram/-/issues/314392Jersey reference in jakarta.ws2024-03-11T09:56:18ZAndre FreyssinetJersey reference in jakarta.wsWhen using Jersey in a JakartaWS application it is necessary to inject the names of the Jersey implementation classes for RuntimeDelegate and ClientBuilder.
Ideally JakartaWS discovers the implementation itself but it does not seem to wo...When using Jersey in a JakartaWS application it is necessary to inject the names of the Jersey implementation classes for RuntimeDelegate and ClientBuilder.
Ideally JakartaWS discovers the implementation itself but it does not seem to work in our case, perhaps it is due to OSGi, or to our environment.
Currently, we set specified global environment variables in all classes using JakartaWS. On the one hand it is not very practical, on the other hand it prevents any evolution of the implementation (a priori our code is almost independent of Jersey).https://gitlab.ow2.org/joram/joram/-/issues/314391Updates Maven plugins2023-10-04T13:04:21ZAndre FreyssinetUpdates Maven pluginsThe following plugin updates are available:
- maven-assembly-plugin: 3.3.0 -> 3.4.2
- maven-gpg-plugin: 1.6 -> 3.0.1
- maven-javadoc-plugin: 3.0.0 -> 3.3.1
- maven-release-plugin: 2.5.3 -> 3.0.0-M4
- maven-surefire-plugi: 2.22.2 -> 3.0.0...The following plugin updates are available:
- maven-assembly-plugin: 3.3.0 -> 3.4.2
- maven-gpg-plugin: 1.6 -> 3.0.1
- maven-javadoc-plugin: 3.0.0 -> 3.3.1
- maven-release-plugin: 2.5.3 -> 3.0.0-M4
- maven-surefire-plugi: 2.22.2 -> 3.0.0-M5
The following plugins do not have their version specified:
- maven-release-plugin: (from super-pom) 3.0.0-M4
Project inherits minimum Maven version as: 3.8.3
Plugins require minimum Maven version of: 3.1.0https://gitlab.ow2.org/joram/joram/-/issues/314390Updates Jakarta/JMS version to 3.1.02024-01-19T06:05:40ZAndre FreyssinetUpdates Jakarta/JMS version to 3.1.0Jakarta Messaging 3.1 will be a minor update with fixes and enhancements.
This version needs Java 11.Jakarta Messaging 3.1 will be a minor update with fixes and enhancements.
This version needs Java 11.https://gitlab.ow2.org/joram/joram/-/issues/314389Uppgrades OSGi specifications.2023-10-06T13:53:08ZAndre FreyssinetUppgrades OSGi specifications.Upgrades to 7.0 versions of osgi and compendium specifications.
Uses new artifact identifier.Upgrades to 7.0 versions of osgi and compendium specifications.
Uses new artifact identifier.https://gitlab.ow2.org/joram/joram/-/issues/314388Uses Jakarta/JMS API in Joram/JMS tools.2023-10-06T13:55:01ZAndre FreyssinetUses Jakarta/JMS API in Joram/JMS tools.Currently the Joram/JMS tools uses javax.jms API.
Be careful, this implies that these tools are only used with brokers that implement the Jakarta/JMS API (normally only Joram).Currently the Joram/JMS tools uses javax.jms API.
Be careful, this implies that these tools are only used with brokers that implement the Jakarta/JMS API (normally only Joram).https://gitlab.ow2.org/joram/joram/-/issues/314387Removes dependency to JMS API in Rest bridge.2023-10-06T13:55:30ZAndre FreyssinetRemoves dependency to JMS API in Rest bridge.Currently the Rest bridge needs javax.jms API.Currently the Rest bridge needs javax.jms API.https://gitlab.ow2.org/joram/joram/-/issues/314386Uses Jakarta/JMS API in JMS bridge.2023-10-06T13:56:00ZAndre FreyssinetUses Jakarta/JMS API in JMS bridge.Currently the JMS bridge uses javax.jms API.
Be careful, it implies that the remote JMS implements Jakarta/JMS API.Currently the JMS bridge uses javax.jms API.
Be careful, it implies that the remote JMS implements Jakarta/JMS API.https://gitlab.ow2.org/joram/joram/-/issues/314384Updates Jersey and Jetty libraries2024-01-16T08:17:56ZAndre FreyssinetUpdates Jersey and Jetty librariesCurrently joram embeds Jersey 2.39 and Jettu 9.4.50.
Up to date release of Jersey are 3.0.9 (JEE9) and 3.1.1 (JEE10).
Up to date release of Jetty are 10.0.14 (javax) and 11.0.14 (jakarta), they needs Java11 and websocket API has evolved.Currently joram embeds Jersey 2.39 and Jettu 9.4.50.
Up to date release of Jersey are 3.0.9 (JEE9) and 3.1.1 (JEE10).
Up to date release of Jetty are 10.0.14 (javax) and 11.0.14 (jakarta), they needs Java11 and websocket API has evolved.https://gitlab.ow2.org/joram/joram/-/issues/314383Error in dynamic change of logging level2022-11-17T11:46:49ZAndre FreyssinetError in dynamic change of logging levelVersion: Joram 1.20.0-SNAPSHOT
An attempt to change the logging level via JMX and/or SSH results in an error:
> 16/11/2022 10:43:12.360 fr.dyade.aaa.agent.SCServer WARN [RMI TCP Connection(9467)-192.168.1.90 SCServer.setLoggerLevel(181)...Version: Joram 1.20.0-SNAPSHOT
An attempt to change the logging level via JMX and/or SSH results in an error:
> 16/11/2022 10:43:12.360 fr.dyade.aaa.agent.SCServer WARN [RMI TCP Connection(9467)-192.168.1.90 SCServer.setLoggerLevel(181)]: SCServer.setLoggerLevel: Cannot set com.scalagent.jorammq.mqtt.adapter.MqttConnection.dump.level to level INFO: class java.util.logging.Level cannot be cast to class org.objectweb.util.monolog.jul.SimpleLevel (java.util.logging.Level is in module java.logging of loader 'bootstrap'; org.objectweb.util.monolog.jul.SimpleLevel is in unnamed module of loader org.apache.felix.framework.BundleWiringImpl$BundleClassLoader @743bfd53)https://gitlab.ow2.org/joram/joram/-/issues/314381Multiples implantations du wrapper de logging2022-07-07T06:00:48ZAndre FreyssinetMultiples implantations du wrapper de loggingLe remplacement de Monolog par un wrapper propriétaire dans la 5.19 force l'usage de JUL.
Ce choix est peu impactant pour la partie serveur quand Joram fonctionne en standalone. Il peut poser des problèmes pour la partie cliente, ou lor...Le remplacement de Monolog par un wrapper propriétaire dans la 5.19 force l'usage de JUL.
Ce choix est peu impactant pour la partie serveur quand Joram fonctionne en standalone. Il peut poser des problèmes pour la partie cliente, ou lorsque le serveur est embarqué dans un logiciel tiers.
La solution est d'extraire une interface du wrapper actuel pour permettre de multiples implantations.Andre FreyssinetAndre Freyssinethttps://gitlab.ow2.org/joram/joram/-/issues/314380Erreur dans la sérialisation des Strings2022-03-14T06:49:21ZAndre FreyssinetErreur dans la sérialisation des StringsLe problème se manifeste par une exception java.nio.BufferOverflowException lors de la sauvegarde d'un objet contenant des Strings. Il se manifeste dans un environnement avec un charset UTF-8. L'origine du problème semble être le calcul ...Le problème se manifeste par une exception java.nio.BufferOverflowException lors de la sauvegarde d'un objet contenant des Strings. Il se manifeste dans un environnement avec un charset UTF-8. L'origine du problème semble être le calcul de la taille de la String encodée qui est basée sur le nombre de caractère de l'objet String.https://gitlab.ow2.org/joram/joram/-/issues/314379Implantation des API Jakarta2022-02-20T20:46:13ZAndre FreyssinetImplantation des API JakartaLe version 9 de JEE impose l'évolution des API avec la transformation des packages "javax" en"jakarta". En particulier cela donne lieu à une spécification JMS 3.0 utilisant les packages "jakarta.jms".Le version 9 de JEE impose l'évolution des API avec la transformation des packages "javax" en"jakarta". En particulier cela donne lieu à une spécification JMS 3.0 utilisant les packages "jakarta.jms".https://gitlab.ow2.org/joram/joram/-/issues/314378Dump de messages binaires dans JMSTool2022-02-08T14:45:57ZAndre FreyssinetDump de messages binaires dans JMSToolL'outil JMSTool permet d'afficher les messages Text mais ne permet pas de visualisation des messages binaires. Les messages binaires pourraient faire l'objet d'un dump Hexa/ASCII, il faudrait réfléchir au traitement éventuel des autres m...L'outil JMSTool permet d'afficher les messages Text mais ne permet pas de visualisation des messages binaires. Les messages binaires pourraient faire l'objet d'un dump Hexa/ASCII, il faudrait réfléchir au traitement éventuel des autres messages.https://gitlab.ow2.org/joram/joram/-/issues/314377Object and method tracking in logging with Java 112021-12-20T07:09:55ZAndre FreyssinetObject and method tracking in logging with Java 11The% O {1}.% M sequence in Monolog patterns is used to display the class of the object, the method and the line number corresponding to the error. This trace is expensive but allows precise tracking of traces regardless of the quality of...The% O {1}.% M sequence in Monolog patterns is used to display the class of the object, the method and the line number corresponding to the error. This trace is expensive but allows precise tracking of traces regardless of the quality of the message.
It seems that this pattern no longer works with Java 11 (it works in Java 8), the displayed trace always referring to Logger.log. The problem may come from a change in the structure of the stacktraces used to retrieve information.
It seems that this pattern works for the JoramMQ tty handler in Java 8 and 11. This behavior is due to the fact that the console handler of the JavaLog wrapper is directly implemented by Monolog.
File type handlers are implemented through the GenericHandler class by wrapping the JavaLog FileHandler. This handler uses a monolog Formatter which manipulates the stack to find the elements corresponding to% O and% M. The code goes up the stack by filtering predefined method patterns. It is likely that the Java 11 implementation of JavaLog uses an unintended package.
The Monolog project is no longer maintained, the solution is to replace Monolog with a minimal wrapper to JavaLog.
See (JoramMQ #266).https://gitlab.ow2.org/joram/joram/-/issues/314376Usage de jmstool avec gitbash2021-11-22T14:37:18ZAndre FreyssinetUsage de jmstool avec gitbashL'outil jmstool sort avec une NPE lorsqu'il est utilisé avec gitbash.L'outil jmstool sort avec une NPE lorsqu'il est utilisé avec gitbash.https://gitlab.ow2.org/joram/joram/-/issues/314375Evolution des librairies pour Joram 5.192021-12-20T08:36:41ZAndre FreyssinetEvolution des librairies pour Joram 5.19Mise à jour des différentes librairies en vue de la construction de la prochaine version de Joram.Mise à jour des différentes librairies en vue de la construction de la prochaine version de Joram.https://gitlab.ow2.org/joram/joram/-/issues/314374Fiabilisation du mécanisme de verrouillage de la base de persistance2021-10-13T10:08:32ZAndre FreyssinetFiabilisation du mécanisme de verrouillage de la base de persistanceLe mécanisme de verrouillage de la base de persistance repose sur un fichier dont la destruction est demandée au runtime Java lors de la terminaison de la JVM. Ce mécanisme n'est pas sûr et en cas de terminaison brutale de la JVM il arri...Le mécanisme de verrouillage de la base de persistance repose sur un fichier dont la destruction est demandée au runtime Java lors de la terminaison de la JVM. Ce mécanisme n'est pas sûr et en cas de terminaison brutale de la JVM il arrive fréquemment que le fichier ne soit pas détruit empêchant alors le démarrage suivant. Ce problème est particulièrement ennuyeux lorsque JoramMQ est installé en tant que service.
L'utilisation d'un FileLock (nio) permettrait de résoudre ce problème, par la même occasion il faudrait rendre ce mécanisme de verrouillage générique en l'implantant au niveau de l'initialisation du serveur d'agents.