Building an ActiveMQ client application in OSGI. Using AMQ versions 5.16.3 through 5.17.1.
After building the application and loading it together with the ActiveMQ feature named activemq-client, a resolution error occurs with the following details:
Tracking this down, the activemq-client feature definition contains the following:
Using the karaf console command, package:exports | grep javax.jms, after loading the activemq-client feature, shows that this bundle ONLY exports the 2.0.0 version:
javax.jms │ 2.0.0 │ 73 │ org.apache.geronimo.specs.geronimo-jms_2.0_spec
The same feature in 5.16.2 contains the following definition:
All of the ACTIVEMQ modules, except for activemq-karaf are using the following dependency:
<dependency> <groupId>org.apache.geronimo.specs</groupId> <artifactId>geronimo-jms_1.1_spec</artifactId> </dependency>
In Summary, compiling an ActiveMQ client application using activemq-client from versions 5.16.3 through 5.17.1, the application fails to resovle in Karaf by loading the activemq-client feature.
STEPS TO REPRODUCE
- feature:repo-add mvn:org.apache.activemq/activemq-karaf/5.17.1/xml/features-core
- feature:install activemq-client
- bundle:install ...application-bundle...
- Successful load of the application bundle built against version 5.17.1 of ActiveMQ artifacts after loading the activemq-client feature
- Replacing the JMS 1.0 geronimo specification bundle with the 2.0 one in the activemq-client feature causes this problem. It also seems very odd since no other internals of ActiveMQ use the JMS 2.0 spec at all.