Case Studies
Migration and upgrade of highly complex product tech stack, consisting of hundreds of OSGi bundles and thousands of 3rd party dependencies
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