JMS 2.0 support on sol-jms

Tomasz
Tomasz Member Posts: 5

Spring Boot 3+ is using JMS 2.0 and packages jakarta.jms.* instead of javax.jms.* (check for example:

Thus solace spring boot starters cannot be used with spring boot 3 applications.

https://github.com/SolaceProducts/solace-spring-boot/pull/60

Are there any plans to mitigate this obstacle ? Or any way to fix it ?

Tagged:

Answers

  • amackenzie
    amackenzie Member, Employee Posts: 260 Solace Employee

    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.

  • amackenzie
    amackenzie Member, Employee Posts: 260 Solace Employee
    edited January 2023 #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?

  • Tomasz
    Tomasz Member Posts: 5

    Yes - I'm looking forward for those updates !

  • spyroid
    spyroid Member Posts: 8

    I'm also looking forward for those updates :)

  • ulysses
    ulysses Member Posts: 2

    I'm also looking forward for those updates !

  • amackenzie
    amackenzie Member, Employee Posts: 260 Solace Employee

    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.

  • amackenzie
    amackenzie Member, Employee Posts: 260 Solace Employee

    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.

  • amackenzie
    amackenzie Member, Employee Posts: 260 Solace Employee

    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.

  • ulysses
    ulysses Member Posts: 2

    I'm looking forward for the permanet solution! 

  • kemalerden
    kemalerden Member Posts: 2

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

  • marc
    marc Member, Administrator, Moderator, Employee Posts: 914 admin

    Hi @kemalerden,

    We have created a sample for how to use the work around here: https://github.com/SolaceSamples/solace-samples-spring/tree/sample-jms-downgrade.

    Please read the disclaimer.

  • bassbonestones
    bassbonestones Member Posts: 2
    @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
  • amackenzie
    amackenzie Member, Employee Posts: 260 Solace Employee

    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

  • bassbonestones
    bassbonestones Member Posts: 2
    @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