That's my point: I'm not comfortable to depend on Pax / Aries inactive
projects. I think it's easier and more "visible" to maintain in Karaf.

We can always re-add these projects later once they will be updated.

If we wait all projects to migrate to Jakarta namespace, we will release
Karaf 4.5.0 in 6 months :)

So, I propose to cleanup for now for Karaf 4.5.0 and re-add the third-party
projects when they are ready.

Regards
JB

On Wed, Mar 25, 2026 at 8:30 PM Grzegorz Grzybek <[email protected]>
wrote:

> Good evening!
>
> One more thing - Pax JMS was a JMS equivalent of Pax JDBC. However, while
> Pax JDBC is actual implementation of
> https://docs.osgi.org/specification/osgi.cmpn/8.0.0/service.jdbc.html,
> there's no related "standard" specification for JMS... So another reason to
> not maintain Pax JMS...
>
> Pax JMS is also related to Pax Transx (even lower level, but for
> transactions, which were hit even harder by javax → jakarta transition)...
> And Pax Transx depends on Geronimo TM and Aries TM which are not very
> active...
> There are some outstanding PRs related to this migration:
>
>    - https://github.com/ops4j/org.ops4j.pax.jms/pull/72
>    - https://github.com/ops4j/org.ops4j.pax.transx/pull/74
>    - https://github.com/apache/aries/pull/790
>
> kind regards
> Grzegorz Grzybek
>
> śr., 25 mar 2026 o 19:01 Jean-Baptiste Onofré <[email protected]>
> napisał(a):
>
>> By the way, while working on https://github.com/apache/karaf/pull/2476
>> (migrating from javax to jakarta), I just realized that Pax JMS is JMS 1.x
>> only for now.
>>
>> Honestly, as Pax CDI, I'm not sure it makes sense to still use/maintain
>> Pax JMS.
>> I would rather suggest using a service provider (custom): I'm updating
>> the examples as part of the PR.
>>
>> Also, we can add a new Karaf service (easier to maintain) dealing with
>> JMS ConnectionFactories (similar to Karaf URL service).
>>
>> Regards
>> JB
>>
>> On Wed, Mar 25, 2026 at 12:57 PM Grzegorz Grzybek <[email protected]>
>> wrote:
>>
>>>
>>>
>>> śr., 25 mar 2026 o 12:42 Ephemeris Lappis <[email protected]>
>>> napisał(a):
>>>
>>>> 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 ?
>>>>
>>>
>>> Yes, correct...
>>>
>>>
>>>>
>>>> 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 ?
>>>>
>>>
>>> You'd have to use OSGi service tracking to get a service of class
>>> javax.jmx.ConnectionFactory - using "standard" OSGi ServiceTracker. Then
>>> you'd have to do (I think) some reflection code to get the pool
>>> details........
>>>
>>> ~Grzegorz Grzybek
>>>
>>>
>>>>
>>>> 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