Uploaded image for project: 'ActiveMQ Classic'
  1. ActiveMQ Classic
  2. AMQ-6301

Embed spring-dm in activemq-osgi to avoid loading spring-dm in Karaf

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 5.13.0
    • 5.13.4, 5.14.0
    • OSGi/Karaf
    • Patch Available
    • Patch

    Description

      Embed spring-dm in activemq-osgi to avoid loading spring-dm in Karaf

      In commit 3a6d67e8f95320bea91b7c7106173c9b34773bc5, a test was fixed in issue AMQ-4727 by reusing the spring-dm OsgiBundleXmlApplicationContext class inside the ActiveMQServiceFactory managed service factory.

      To satisfy the import packages for activemq-osgi, the 'spring-dm' Karaf feature was added to the main 'activemq-client' feature.

      This is problematic because loading the 'spring-dm' Karaf feature enables the Spring DM deployer. This deployer is unnecessary in environments that rely on Blueprint or CDI wiring and it may unexpectedly activate Spring DM bundles in those environments. Because spring-dm was compiled against older versions of Spring 3.0 and 3.1, it can also cause older versions of Spring features to be loaded into the container.

      To avoid using the ‘spring-dm’ Karaf feature to provide the classes, I propose embedding the spring-dm bundles inside activemq-osgi. Since they are only used as library code to provide the BundleContext when parsing the BrokerService context, they can be embedded safely without any dependency issues.

      This is the root cause of the following issue:

      http://karaf.922171.n3.nabble.com/Karaf-4-0-3-unable-to-start-bundle-activemq-osgi-5-13-0-td4044640.html

      Attachments

        Issue Links

          Activity

            People

              cshannon Christopher L. Shannon
              soleger Seth Leger
              Votes:
              1 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: