Hello again. Just to be sure : pax jms uses the provider to create the actual connection factory, and in our case it's "org.apache.activelmq.ActiveMQConnectionFactory", and this implementation doesn't provide a "close" method, right ?
So,with no help from pw jms itself, how can we handle this, even if it's just a workaround ? I suppose we could code something to close connections, but how can we get reference on the pool or the connection factory ? Thanks again. Le mer. 25 mars 2026 à 12:22, Grzegorz Grzybek <[email protected]> a écrit : > Hello > > śr., 25 mar 2026 o 12:12 Ephemeris Lappis <[email protected]> > napisał(a): > >> Hello. >> >> Thanks for your answer... >> >> I don't actually understand when you say that application are in >> charge of closing connections : in ou world, application are Camel routes >> in feature that are all uninstalled when the pax jms itself is removing, >> and logs show clearly how routes are stopped and removed when each Camel >> feature is uninstalled. >> > > This is just a typical case - even with Camel - JMS connection is taken > from the pool, used and "closed" (which with the pool usually means > returning to the pool without closing it). > And I see that it may be a problem, because Pax JMS creates the pool based > on JMS provider specific implementation of javax.jms.ConnectionFactory, but > there's no "close" method on the factory... > > I'm afraid this scenario would require extending generic Pax JMS support > for dynamic reconfiguration... > > regards > Grzegorz Grzybek > > >> >> When the pax-jms-config feature is removed, we expect that it delete the >> pool, and thus close any remaining connection, but in some random case, it >> doesn't do it, and when all the features are installed back, a new pool is >> created, and 256 connections are potentially added on the broker, until it >> fails... >> >> Thanks again. >> >> Le mer. 25 mars 2026 à 11:22, Grzegorz Grzybek <[email protected]> a >> écrit : >> >>> Hello >>> >>> While I was involved in maintenance of Pax JMS library I don't remember >>> any issues related to hanging connections... >>> >>> To be honest this project is in kind of awaiting state, almost killed by >>> the unnecessary move from "javax" to "jakarta"... There's still no >>> jakarta.jmx version of this library (would require similar change in Pax >>> Transx project..). >>> >>> I see that Pax JMS does some special treatment if the implementation of >>> javax.jms.ConnectionFactory is AutoCloseable, >>> but org.apache.activemq.ActiveMQConnectionFactory is not. >>> So it's the responsibility of the application to properly close the >>> connections... >>> >>> That's all I can help with ;( >>> >>> kind regards >>> Grzegorz Grzybek >>> >>> śr., 25 mar 2026 o 10:45 Ephemeris Lappis <[email protected]> >>> napisał(a): >>> >>>> Hello. >>>> >>>> We use pax-jms-config to manage JMS (ActiveMQ) connection factories. It >>>> basically works as expected, but we've recently observed a critical issue : >>>> it seems that with some unidentified conditions, when the features are >>>> installed/uninstalled, or connection factories cfg files updated, the >>>> current connections are not closed, and new ones are created. We can see >>>> the corresponding sockets on both Karaf and ActiveMQ (or in activemq >>>> console). When the maximum configured connection count is exceeded, all the >>>> system (including other JMS clients) fails. >>>> >>>> Is it a known issue ? If not, is there any way to force the jms pool to >>>> be cleaned ? >>>> >>>> Below are our feature structure and configuration file... >>>> Thanks again. >>>> >>>> Best regards. >>>> >>>> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> >>>> >>>> <features >>>> >>>> xmlns="http://karaf.apache.org/xmlns/features/v1.6.0" >>>> >>>> name="${project.artifactId}"> >>>> >>>> >>>> <repository> >>>> mvn:org.apache.activemq/activemq-karaf/${version.of.activemq}/xml/features >>>> </repository> >>>> >>>> >>>> <feature >>>> >>>> name="${project.artifactId}" >>>> >>>> version="${project.version}"> >>>> >>>> <feature prerequisite="true" version="${version.of.activemq}"> >>>> activemq-client</feature> >>>> >>>> <feature prerequisite="true">base-system</feature> >>>> >>>> <feature prerequisite="true">pax-jms-activemq</feature> >>>> >>>> <feature prerequisite="true">pax-jms-pool-pooledjms</feature> >>>> >>>> <feature prerequisite="true">pax-jms-config</feature> >>>> >>>> </feature> >>>> >>>> >>>> </features> >>>> >>>> >>>> # Connection configuration >>>> type=activemq >>>> connectionFactoryType=ConnectionFactory >>>> >>>> # Names >>>> name=xxx-jmsosgi.jndi.service.name=jms/xxx >>>> >>>> # Connection factory properties >>>> jms.url=tcp://amq-service:61616 >>>> jms.user=application >>>> jms.password=secret >>>> jms.clientIDPrefix=ID >>>> >>>> # Set XA transaction >>>> xa=false >>>> >>>> # Connection pooling >>>> pool=pooledjms >>>> pool.maxConnections=256 >>>> >>>>
