Java Server Component Hot Deployment via Classloader Segmentation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Developing Java server components often requires restarting the application server, which is time-consuming and inconvenient, especially during iterative code development and testing.

Innovation Solution

Implementing components with separate interface and implementation classes, using a first classloader for the interface and a second for the implementation, and employing a factory pattern to load and instantiate the implementation class, thereby inhibiting direct access to the implementation class and allowing for updates without server restarts.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If the application server is restarted after component deployment, then the new component can be loaded and executed, but the development time is increased due to the restart process

Engineering Contradiction:
Improvecomponent loadingVSAvoiddevelopment time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent segments the component into two distinct classes: an interface class that defines the component's contract and an implementation class that provides the actual functionality. This segmentation allows the implementation class to be replaced independently without affecting the interface or requiring server restart, as the interface class remains stable while implementation can be hot-swapped through separate classloading mechanisms

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a component registry and factory pattern as intermediaries between the interface class and implementation class. The factory uses reflection and classloading to dynamically instantiate implementation classes based on interface definitions, enabling hot deployment of new implementations without server restart by mediating the creation and binding process

Inventive Principle:
Principle #24Intermediary (Mediator)

2Ease of manufacture

If direct access to the implementation class is allowed, then the component can be easily modified and deployed, but the application server must be restarted to load the new implementation

Engineering Contradiction:
Improvecomponent deploymentVSAvoiddevelopment efficiency
Core Design Contradiction:
Ease of manufactureVSProductivity

Solution Approach 1:

The patent implements dynamic component loading where the implementation class can be changed at runtime without server restart. The system uses separate classloaders and a component registry that allows new implementation classes to be loaded, registered, and activated dynamically, making the deployment process flexible and continuous rather than requiring static server restart cycles

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent establishes a predefined interface class that serves as a template before implementation is finalized. This interface class is created in advance with the component contract defined, allowing implementation classes to be developed independently and deployed later without affecting the interface structure, enabling parallel development and hot deployment

Inventive Principle:
Principle #10Preliminary action

3Adaptability or versatility

If the implementation class is updated during runtime, then continuous deployment is possible, but access control to the implementation class becomes complex

Engineering Contradiction:
Improveruntime updatesVSAvoidaccess control mechanism
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent extracts the access control logic from the implementation class itself and places it in the interface class and component registry. The interface class defines the access contract, while the registry manages which implementation classes are currently active and authorized. This separation simplifies access control during runtime updates by centralizing management in the registry rather than embedding complex control logic in each implementation

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentUS8543994B2Developing java server components without restarting the application server
Publication Date: 2013.09.24 SAP SE
  • US8543994B2 patent drawing
  • US8543994B2 patent drawing
  • US8543994B2 patent drawing

AI summary

The subject matter disclosed herein provides methods and apparatus, including computer program products, for developing components, such as Java server components, without restarting the application server hosting those components. In one aspect, there is provided a computer-implemented method. The method may include providing a component comprising an implementation class and an interface class. At the application server, access to the implementation class may be inhibited to enable the application to execute the component without restarting the application. Related apparatus, systems, methods, and articles are also described.