I added a note to the docs for the next release about not being able to use the -all clients in the same JVM as the broker: https://github.com/apache/activemq-artemis/commit/7f4cd2ac56c383e20b72ec37b12fe6f71bebed1d
Artemis moved to requiring Java 11+ from 2.20.0 back in Dec 2021. The 2.19.1 release itself was mainly only done later due to an overlapping CVE at that time, it is already over 15 months old now and there have been 10 new releases since. No more 2.19.x releases are coming. On Wed, 10 May 2023, 19:13 PAS Filip, <filip....@sodexo.com.invalid> wrote: > Hi Robbie, > > Thanks for the feedback. > It was not really an inconvenience to switch to the jms-client after all. > I was able to use the transitive dependencies like you mentioned to get > all I need. > I didn’t get any versioning issues which is what I was worried about. > That is why I actually liked the idea of using the shaded classes since it > reduces the chance of conflicts with the libraries I’m using. > > The application I’m working on contains several frameworks that are EOL > and incompatible with java 11. > I can’t upgrade them and don’t have the time or budget to replace them. > I hope you will keep providing critical bugfixes for the 2.19.x version > and that the client remains compatible with the latest artemis servers. > > It would be good to provide some warning in the doc about the jms all > client not being compatible with the embedded broker. > > Thanks for the feedback and confirming the issue. > > Regards, > > Filip > > > From: Robbie Gemmell <robbie.gemm...@gmail.com> > Sent: Wednesday, May 10, 2023 8:01 PM > To: users@activemq.apache.org > Subject: Re: Artemis activemq jms client all incompatible with artemis > server > > The artemis-jms-client-all module is really just intended to be used > standalone, and it shades things that artemis-server / commons / etc do not > (the server itself depends on the regular artemis-jms-client etc). There > are various concessions > ZjQcmQRYFpfptBannerStart > This Message Is From an Untrusted Sender > You have not previously corresponded with this sender. > ZjQcmQRYFpfptBannerEnd > > The artemis-jms-client-all module is really just intended to be used > > standalone, and it shades things that artemis-server / commons / etc > > do not (the server itself depends on the regular artemis-jms-client > > etc). There are various concessions with it, which is why it is the > > last thing mentioned in the [current] docs and comes with a warning. > > Personally I would always recommend against using it (and have > > previously even proposed deleting it). > > > > I would never personally expect them to work together given the above, > > and I dont believe there has ever been a single attempt running them > > in the same classloader in the codebase, given all the actual tests > > use artemis-jms-client and no tests use artemis-jms-client-all. > > > > With your initial comments on the 'inconvenience' of > > artemis-jms-client, I take it you are precluding build tooling that > > can simply pick up the artemis-jms-client transitive dependencies for > > you? The classpath details in the latest docs for the clients > > 'individual dependencies' is just generated, essentially by listing > > the deps coming from having a maven dependency on artemis-jms-client. > > > > > > Obligatory words of caution even though it seems like you know: 2.28.0 > > is the current release (with 2.29.0 imminent). There are no more > > 2.19.x releases coming. There are already 2 newer >8 Java LTS releases > > and Java 21 becomes the next in about 4 months. > > > > On Wed, 10 May 2023 at 17:37, PAS Filip <filip....@sodexo.com.invalid > <mailto:filip....@sodexo.com.invalid>> wrote: > > > > > > Hi Domenico, > > > > > > Nope both versions are identical. > > > > > > The broker I connect to remotely is running 2.28 and that connection > works. > > > All jars and classes of activemq in my project are version 2.19.1. > > > It’s only an issue in my test suite when combining the two jars both of > the same version. > > > > > > Regards, > > > > > > Filip > > > > > > From: Domenico Francesco Bruscino <bruscin...@gmail.com<mailto: > bruscin...@gmail.com>> > > > Sent: Wednesday, May 10, 2023 6:34 PM > > > To: users@activemq.apache.org<mailto:users@activemq.apache.org> > > > Subject: Re: Artemis activemq jms client all incompatible with artemis > server > > > > > > Hi Filip, are you running the ActiveMQ Artemis jms client 2. 19. 1 and > the ActiveMQ Artemis server with a version different from 2. 19. 1 in the > same JVM? Regards, Domenico On Wed, 10 May 2023 at 18: 20, PAS Filip > <Filip. Pas@ sodexo. com. invalid> > > > ZjQcmQRYFpfptBannerStart > > > This Message Is From an Untrusted Sender > > > You have not previously corresponded with this sender. > > > ZjQcmQRYFpfptBannerEnd > > > > > > Hi Filip, > > > > > > > > > > > > are you running the ActiveMQ Artemis jms client 2.19.1 and the ActiveMQ > > > > > > Artemis server with a version different from 2.19.1 in the same JVM? > > > > > > > > > > > > Regards, > > > > > > Domenico > > > > > > > > > > > > On Wed, 10 May 2023 at 18:20, PAS Filip <filip....@sodexo.com.invalid > <mailto:filip....@sodexo.com.invalid<mailto:filip....@sodexo.com.invalid > %3cmailto:filip....@sodexo.com.invalid>>> > > > > > > wrote: > > > > > > > > > > > > > Just a small follow-up, using artemis-jms-client instead of > > > > > > > artemis-jms-client-all seems to be working fine > > > > > > > There is are no duplicate shaded classes this way when combining it > with > > > > > > > artemis-server. > > > > > > > > > > > > > > From: PAS Filip <filip....@sodexo.com.INVALID<mailto: > filip....@sodexo.com.INVALID<mailto:filip....@sodexo.com.INVALID > %3cmailto:filip....@sodexo.com.INVALID>>> > > > > > > > Sent: Wednesday, May 10, 2023 3:14 PM > > > > > > > To: users@activemq.apache.org<mailto:users@activemq.apache.org<mailto: > users@activemq.apache.org%3cmailto:users@activemq.apache.org>> > > > > > > > Subject: Artemis activemq jms client all incompatible with artemis > server > > > > > > > > > > > > > > Hello, I'm working on an application where we are migrating activemq to > > > > > > > artemis activemq. I'm running into an issue when trying to use the > artemis > > > > > > > server and jms client all together on the same classpath. I'm using > version > > > > > > > 2. 19. 1 of the artemis > > > > > > > ZjQcmQRYFpfptBannerStart > > > > > > > External sender > > > > > > > Check the sender and the content are safe before clicking links or open > > > > > > > attachments. > > > > > > > ZjQcmQRYFpfptBannerEnd > > > > > > > > > > > > > > Hello, > > > > > > > > > > > > > > > > > > > > > > > > > > > > I'm working on an application where we are migrating activemq to > artemis > > > > > > > activemq. > > > > > > > > > > > > > > > > > > > > > > > > > > > > I'm running into an issue when trying to use the artemis server and jms > > > > > > > client all together on the same classpath. > > > > > > > > > > > > > > > > > > > > > > > > > > > > I'm using version 2.19.1 of the artemis activemq server since it's the > > > > > > > last version that's compatible with java 8. > > > > > > > > > > > > > > According to the docs I should use this version and it should be able > to > > > > > > > connect fine to a remote activemq broker running java 11. > > > > > > > > > > > > > > That seems to work correctly however when running the integration test > > > > > > > suite I'm replacing the old activemq embedded broker with the one from > > > > > > > artemis activemq and am running into an issue of incompatibility. > > > > > > > > > > > > > > > > > > > > > > > > > > > > Our integration test suite uses the embedded broker so the artemis > server > > > > > > > is added to the test classpath. > > > > > > > > > > > > > > When running the tests the embedded broker seems to start fine: > > > > > > > > > > > > > > > > > > > > > > > > > > > > [2023-05-10T14:21:58,942|INFO > > > > > > > |main|org.apache.activemq.artemis.core.server] AMQ221007: Server is > now live > > > > > > > > > > > > > > [2023-05-10T14:21:58,943|INFO > > > > > > > |main|org.apache.activemq.artemis.core.server] AMQ221001: Apache > ActiveMQ > > > > > > > Artemis Message Broker version 2.19.1 [localhost, > > > > > > > nodeID=42455503-ef2d-11ed-8947-00090faa0001] > > > > > > > > > > > > > > > > > > > > > > > > > > > > However when connecting to it I get an error: > > > > > > > > > > > > > > > > > > > > > > > > > > > > [2023-05-10T14:22:13,517|WARN |Thread-5 > > > > > > > > (ActiveMQ-server-org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl$6@417a98b5 > <mailto: > ActiveMQ-server-org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl > $6@417a98b5<mailto: > ActiveMQ-server-org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl > $6@417a98b5 > %3cmailto:ActiveMQ-server-org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl$6@417a98b5 > >> > > > > > > > )|org.apache.activemq.artemis.core.server<mailto: > > > > > > > > ActiveMQ-server-org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl > > > > > > > $6@417a98b5)|org.apache.activemq.artemis.core.server<mailto<mailto: > $6@417a98b5)|org.apache.activemq.artemis.core.server%3cmailto<mailto: > $6@417a98b5 > )|org.apache.activemq.artemis.core.server%3cmailto%3cmailto:$6@417a98b5 > )|org.apache.activemq.artemis.core.server%3cmailto>>: > > > > > > > > ActiveMQ-server-org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl > > > > > > > $6@417a98b5 > > > > > > > > )|org.apache.activemq.artemis.core.server%3cmailto:ActiveMQ-server-org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl$6@417a98b5 > )|org.apache.activemq.artemis.core.server>>] > > > > > > > AMQ222225: Sending unexpected exception to the client > > > > > > > java.lang.NoClassDefFoundError: Could not initialize class > > > > > > > > org.apache.activemq.artemis.core.server.cluster.impl.MessageLoadBalancingType > > > > > > > > > > > > > > at > > > > > > > > org.apache.activemq.artemis.core.postoffice.impl.BindingsImpl.<init>(BindingsImpl.java:68) > > > > > > > > > > > > > > at > > > > > > > > org.apache.activemq.artemis.core.postoffice.impl.PostOfficeImpl.createBindings(PostOfficeImpl.java:1989) > > > > > > > > > > > > > > at > > > > > > > > org.apache.activemq.artemis.core.postoffice.impl.SimpleAddressManager.addMappingInternal(SimpleAddressManager.java:260) > > > > > > > > > > > > > > at > > > > > > > > org.apache.activemq.artemis.core.postoffice.impl.SimpleAddressManager.addBinding(SimpleAddressManager.java:99) > > > > > > > > > > > > > > at > > > > > > > > org.apache.activemq.artemis.core.postoffice.impl.WildcardAddressManager.addBinding(WildcardAddressManager.java:95) > > > > > > > > > > > > > > at > > > > > > > > org.apache.activemq.artemis.core.postoffice.impl.PostOfficeImpl.addBinding(PostOfficeImpl.java:878) > > > > > > > > > > > > > > at > > > > > > > > org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.createQueue(ActiveMQServerImpl.java:3833) > > > > > > > > > > > > > > at > > > > > > > > org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.createQueue(ActiveMQServerImpl.java:3765) > > > > > > > > > > > > > > at > > > > > > > > org.apache.activemq.artemis.core.server.impl.ServerSessionImpl.createQueue(ServerSessionImpl.java:740) > > > > > > > > > > > > > > at > > > > > > > > org.apache.activemq.artemis.core.protocol.core.ServerSessionPacketHandler.slowPacketHandler(ServerSessionPacketHandler.java:377) > > > > > > > > > > > > > > at > > > > > > > > org.apache.activemq.artemis.core.protocol.core.ServerSessionPacketHandler.onMessagePacket(ServerSessionPacketHandler.java:298) > > > > > > > > > > > > > > at > > > > > > > org.apache.activemq.artemis.utils.actors.Actor.doTask(Actor.java:33) > > > > > > > > > > > > > > at > > > > > > > > org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:65) > > > > > > > > > > > > > > at > > > > > > > > org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42) > > > > > > > > > > > > > > at > > > > > > > > org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31) > > > > > > > > > > > > > > at > > > > > > > > org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:65) > > > > > > > > > > > > > > at > > > > > > > > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > > > > > > > > > > > > > > at > > > > > > > > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > > > > > > > > > > > > > > at > > > > > > > > org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118) > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > There seems to be an incompatibility in the shaded class > > > > > > > org.apache.activemq.artemis.utils.uri.BeanSupport from commons bean > utils. > > > > > > > > > > > > > > > > > > > > > > > > > > > > I find two classes of > org.apache.activemq.artemis.utils.uri.BeanSupport in > > > > > > > two different jars: > > > > > > > > > > > > > > > > > > > > > > > > > > > > * artemis-commons 2.19.1 > > > > > > > > > > > > > > * artemis-jms-client-all > > > > > > > > > > > > > > > > > > > > > > > > > > > > In the class Beansupport in the artemis-jms-client-all 2.191 jar I see > the > > > > > > > following import: > > > > > > > > > > > > > > > > > > > > > > > > > > > > import > > > > > > > > org.apache.activemq.artemis.shaded.org.apache.commons.beanutils.BeanUtilsBean; > > > > > > > > > > > > > > import > > > > > > > > org.apache.activemq.artemis.shaded.org.apache.commons.beanutils.Converter; > > > > > > > > > > > > > > > > > > > > > > > > > > > > In the class Beansupport in the artemis-commons 2.19.1 jar I see the > > > > > > > following import: > > > > > > > > > > > > > > > > > > > > > > > > > > > > import org.apache.commons.beanutils.BeanUtilsBean; > > > > > > > > > > > > > > import org.apache.commons.beanutils.Converter; > > > > > > > > > > > > > > > > > > > > > > > > > > > > So what happens when running the tests is that the BeanSupport from jms > > > > > > > all client is loaded and not from the artemis-server. > > > > > > > > > > > > > > This results in the initialization error in the class > > > > > > > MessageLoadBalancingType. > > > > > > > > > > > > > > > > > > > > > > > > > > > > I didn't find any mention in the documentation that the activemq jms > > > > > > > client all is incompatible with the artemis server. > > > > > > > > > > > > > > This looks like a bug to me. > > > > > > > > > > > > > > For me if the artemis client and server are using a shaded import of > > > > > > > BeanSupport it would make sense to also use the shaded import for the > > > > > > > Converter and BeanUtilsBean. > > > > > > > > > > > > > > > > > > > > > > > > > > > > Can you confirm this? Is there any chance for a bugfix? > > > > > > > > > > > > > > > > > > > > > > > > > > > > I believe the only option I have to make this work is by not using the > jms > > > > > > > all client jar which is inconvenient to say the least. > > > > > > > > > > > > > > There is no BOM (Bill of Materials) and the documentation of the 2.191 > > > > > > > doesn't list the dependencies to import unlike the latest doc which > > > > > > > mentions all the dependencies to add for the client classpath. > > > > > > > > > > > > > > > > > > > > > > > > > > > > I'm not sure if this issue exists on the latest version of the artemis > > > > > > > activemq but it's not an option for me to use that version due to > > > > > > > incompatibility with java 8. > > > > > > > > > > > > > > > > > > > > > > > > > > > > Any feedback and or suggestions would be welcome. > > > > > > > > > > > > > > > > > > > > > > > > > > > > Regards, > > > > > > > > > > > > > > > > > > > > > > > > > > > > Filip > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >