Migrated and upgraded highly complex product tech stack, consisting of hundreds (300+) of OSGi bundles and thousands of 3rd party dependencies, to enable development of new event driven features.

Some of the problems included:

  • Company’s product highly complex tech stack, consisting of hundreds (300+) of OSGi bundles and thousands of 3rd party dependencies, required migration and upgrade to enable development of new event driven features
  • Message broker used in Company’s product lacked support for event driven capabilities required for new features
  • Integration of new message broker required upgrade of large number 3rd party dependencies comprising Company’s product tech stack as a prerequisite step
  • Spring Dynamic Modules used for dependency injection within OSGi container in Company’s product was no longer maintained, which prevented upgrade of related 3rd party dependencies
  • It was not known if and how framework which is to be used as replacement for Spring Dynamic Modules can be integrated with Apache Camel / RabbitMQ
  • Some required 3rd party dependencies were not packaged for use in OSGi container
  • One of the required 3rd party dependencies, “Aries Blueprint Spring”, had bugs which prevented its usage in Company’s product
  • One of the required 3rd party dependencies, “Aries Blueprint Webosgi”, had bugs which prevented its usage in Company’s product
  • There was no existing integration between “Spring Security” and “Aries Blueprint Spring” – both required 3rd party dependencies – preventing proper working of servlet filters
  • AOP configuration was completely ignored, preventing proper initialization of Company’s product
  • Some of the migrated 3rd party dependencies did not initialize properly when there was no internet access
  • Some services retrieved from dependency injection container failed method invocation

Some of the solutions applied included:

  • Developing proof of concept of Apache Camel / RabbitMQ integration via Aries Blueprint in OSGi container to understand steps needed for integration of these new technologies into Company’s product
  • Identifying 3rd party dependencies which need to be upgraded
  • OSGifying any 3rd party dependencies not packaged for use in OSGi container
  • Upgrading any required 3rd party dependencies comprising Company’s product tech stack
  • Migrating Company’s product tech stack dependency injection within OSGi container framework from Spring Dynamic Modules to Apache Aries Blueprint
  • Debuging and patching “Aries Blueprint Spring” 3rd party dependency so it can be used in Company’s product as required
  • Debuging and patching “Aries Blueprint Webosgi” 3rd party dependency so it can be used in Company’s product as required
  • Creating new implementation of ‘DelegatingFilterProxy’ which allows to retrieve FilterChainsProxy from Blueprint container instead of WebApplicationContext
  • Specifying which packages should be enabled and which disabled via system properties passed to Apache Aries Proxy 3rd party dependency
  • Defining schemas for all namespaces used by a given component in META-INF/spring.schemas so they’re picked up from classpath instead of fetched from outside
  • Switching those services which fail method invocation after being retrieved from dependency injection container to use CGLIB proxying

Technology stack

  • Java
  • Spring
  • Spring Dynamic Modules
  • Spring Security
  • OSGi
  • Apache Aries Blueprint
  • Apache Camel
  • RabbitMQ
  • ActiveMQ
  • Apache CXF

Industry

IT