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
>>>>
>>>>

Reply via email to