JMS 2.0 support on sol-jms

Spring Boot 3+ is using JMS 2.0 and packages jakarta.jms.* instead of javax.jms.* (check for example:
JmsAutoConfiguration (Spring Boot 3.0.1 API)
declaration: package: org.springframework.boot.autoconfigure.jms, class: JmsAutoConfiguration Thus solace spring boot starters cannot be used with spring boot 3 applications.
Spring Boot 3 and Java 17 support (waiting for JMS 2.0 support on sol-jms) by infoShare · Pull Request #60 · SolaceProducts/solace-spring-boot · GitHub
Are there any plans to mitigate this obstacle ? Or any way to fix it ?

Hello,
We are looking to have a roadmap for Spring Boot 3 and Jakarta namespace JMS application in the next week or so. Once this roadmap is available, we will be able to give a better idea of when you can use Spring Boot 3 with Solace.
Until that time, Solace does not recommend upgrading to Spring Framework 6/Boot 3.

We are looking at a short term workaround that will allow the use of Spring framework 6/Boot 3 with our current JMS 1.1 javax provider by making changes to Maven dependencies. We would update our Spring starters to use the workarounds.
Is this an acceptable workaround to get you up and running with Spring 6/Boot 3 while we prepare a jakarta JMS provider?

Yes - I’m looking forward for those updates !

I’m also looking forward for those updates :slight_smile:

I’m also looking forward for those updates !

Hello all,
In order to get people up and running with Solace Spring Boot projects while using Spring Framework 6.x or Spring Boot 3.x, Solace is in development of a workaround as we prepare a Solace JMS provider that uses the new jakarta namespace instead of javax .
This workaround will allow you to use the existing javax -based Solace JMS provider within a project that uses Spring Framework 6/Boot 3.
This workaround will include:
new versions of the Solace JMS starter and other projects in the Solace Spring Boot project Instructions on changes needed to your application’s pom.xml a sample application demonstrating these changes to make it clear how to apply the workaround to your own application Note: if your application uses multiple JMS providers, perhaps Solace JMS + another vendor provider, in the same project, the non-Solace providers would also need to be javax and not jakarta .
This workaround is going to be available on Feb 17, 2023 . This will include the code and docs, as well as the necessary Maven artifacts on the Maven Central Repository.
As for Java 17 being the base for Spring Framework 6/Boot 3, no changes are needed. Solace Spring projects support Java 17 already.
I do not have a date at this time where the workaround will be replaced by a permanent Solace JMS Jakarta artifact. Solace will communicate that as soon as it is known.
Note that this workaround is for the Solace Spring Boot projects only . There are dependency issues within the Solace Spring Cloud projects that are not resolved by this workaround and will be addressed separately. Solace does NOT recommend upgrading to Spring Framework 6/Boot 3 when using the Solace Spring Cloud starters.

Note that the title of this thread is around support for JMS 2.0, but the support for Spring 6/Boot 3 is not about supporting JMS 2.0. For clarification, the Solace JMS provider is version 1.1 of JMS and supporting Jakarta will not change that.

The workaround has been released, but we are not doing an announcement as it is officially a workaround and Solace strongly recommends waiting for the permanent solution which would be the release of a Solace JMS provider for Jakarta. This will be coming later this year (no official date as yet).
The workaround requires downgrading certain Spring Boot dependencies and thus is only intended for Solace users who absolutely MUST move to Spring 6/Boot 3 now before the Solace Jakarta JMS release.
If you require the workaround, please log a Solace Support ticket and mention this post.

I’m looking forward for the permanet solution!

I’m looking forward to this. Could you not share the workaround without raising a support ticket? I can’t logon to the ticketing system…

Hi @kemalerden ,
We have created a sample for how to use the work around here: GitHub - SolaceSamples/solace-samples-spring at sample-jms-downgrade .
Please read the disclaimer.

@marc @amackenzie

Even with the workaround, I can’t get my application to work. I keep getting the following error:

required a bean of type ‘org.springframework.jms.config.JmsListenerEndpointRegistry’ that could not be found.

We use this Bean to help configure settings that support multitenancy. I see the class in spring-jms 5.3.24, included in the workaround pom, but the error comes nonetheless. I’m not sure if there is some issue caused by mismatched dependencies in the workaround.

It looks like there’s been talk of an upgrade to support Spring Boot 3 for a long time now. When is this supposed to be available? At my corporation we’ve been kicking critical XRAY vulnerabilities down the road that are all fixed in Spring Boot 3.x. Solace JMS seems to be the only thing blocking us from upgrading our entire microservice ecosystem the latest Spring Boot version.

Thanks,
Jeremy

The Spring 3.x support was released a few weeks ago. Apologies for not seeing this post for an update. I did communicate it to many threads and support tickets, but missed this one.
SolaceProducts/solace-spring-boot: An umbrella project containing all Solace projects for Spring Boot (github.com)
Regards,
Andrew

@amackenzie

Thank you so much for the quick reply. I’ve been working hard trying to get around the issue, so excited to try this out.

Cheers,
Jeremy