Synthetic Bundle Deployment for OSGi Dependency Isolation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Unintended dependencies between application programs and libraries can cause instability and unexpected behavior in host computer systems during deployment, particularly when using OSGi bundles and Java virtual machines.

Innovation Solution

A deployment mechanism that converts export statements from application bundles into import statements, creating a synthetic bundle with a thread context class loader to delegate class loading, thereby ensuring that only explicitly exported packages are loaded, preventing unintended dependencies and enhancing system reliability and stability.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If the application is deployed with standard class loading mechanisms, then the deployment process is simple and fast, but unintended dependencies between the application and libraries arise causing instability

Engineering Contradiction:
Improvesystem stabilityVSAvoiddeployment mechanism complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent introduces a synthetic bundle as an intermediary component that sits between the application bundles and the class loading mechanism. This synthetic bundle contains import statements that explicitly declare dependencies, acting as a mediator that controls and filters class loading to prevent unintended dependencies while maintaining system stability.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The deployment mechanism performs preliminary actions by automatically generating the synthetic bundle with appropriate import statements before the application runs. This pre-configured dependency declaration structure prevents unintended dependencies from arising during runtime, ensuring system stability before issues can occur.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If all classes are loaded into the runtime environment, then the application has full functionality, but unintended dependencies cause unexpected behavior and instability

Engineering Contradiction:
Improvedeployment reliabilityVSAvoidclass loading automation
Core Design Contradiction:
ReliabilityVSEase of operation

Solution Approach 1:

The deployment mechanism employs self-service by automatically analyzing application bundles, extracting export statements, converting them to import statements, and generating the synthetic bundle without manual intervention. This automated process maintains deployment reliability while preserving ease of operation, as the system serves itself by configuring dependencies correctly without requiring manual setup.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The mechanism uses feedback by analyzing the export statements from application bundles and using this information to generate appropriate import statements in the synthetic bundle. This feedback loop ensures that only explicitly exported packages are imported, preventing unintended dependencies while maintaining automated ease of operation.

Inventive Principle:
Principle #23Feedback

3Reliability

If export statements are converted to import statements and a synthetic bundle is created, then unintended dependencies are prevented, but the deployment process becomes more complex

Engineering Contradiction:
Improvedependency managementVSAvoiddeployment time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The conversion of export statements to import statements and creation of the synthetic bundle is performed as a preliminary action during the deployment phase, before the application executes. This upfront processing prevents unintended dependencies from arising during runtime, ensuring reliable dependency management while minimizing the impact on overall deployment time by completing the work before execution begins.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentEP2113839B8A computer system and a method of deploying an application in a computer system
Publication Date: 2017.10.04 PIVOTAL SOFTWARE INC

AI summary

A computer system (1) has a runtime environment (e.g. Java) and a deployment unit (e.g. in a Spring framework layer) arranged to deploy the application into the runtime environment. The application comprises bundles (e.g. OSGi bundles) with manifest metadata having export statements defining exported packages. The deployment unit (3) comprises a receiver unit (31) to receive the bundles (110), an extractor unit (32) to examine the metadata and extract the export statements, a converter unit (33) to convert each of the export statements into a corresponding import statement, and a creator unit (34) to add an additional synthetic bundle (120) having the import statements inserted in its metadata. The deployment unit sets a thread context class loader to delegate class loading to a class loader of the synthetic bundle. Thus, at runtime, classes of the application are only loaded when they are explicitly exported packages as defined by the synthetic bundle.