Java Agent Runtime Deployment via Servlet Bootstrap

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current methods for deploying Java agents require restarting the JVM, making it difficult to update or detach the agent during runtime, which is time-consuming and inefficient.

Innovation Solution

A system and method for deploying a Java agent in real-time by creating a .WAR file associated with a servlet, determining the existence of a reference holder class in a bootstrap class loader, and connecting the servlet to the JVM using an open source library, allowing for real-time deployment and unloading of the agent without JVM restarts.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If the agent jar file is loaded during launch time using the -javaagent directive, then the agent can manipulate Java bytecode on the fly, but it is not possible to detach or update the agent during runtime and requires a server restart

Engineering Contradiction:
Improveagent functionalityVSAvoidruntime update capability
Core Design Contradiction:
ReliabilityVSAdaptability or versatility

Solution Approach 1:

The patent segments the agent deployment process by separating the agent jar file from the traditional launch-time loading mechanism. Instead of loading the agent directly during JVM startup, the system packages the agent in a WAR file that is deployed through a servlet container, allowing the agent to be loaded, updated, and detached independently without affecting the core JVM process.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a servlet as an intermediary component between the JVM and the agent jar file. The servlet acts as a mediator that manages the agent's lifecycle, including loading, updating, and detaching operations. This intermediary layer enables runtime management of the agent without requiring direct JVM intervention or process restarts.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Ease of manufacture

If the server is restarted to replace or detach the jar file, then the agent can be updated, but it takes a significant amount of time and reduces efficiency

Engineering Contradiction:
Improveagent replacement capabilityVSAvoidserver restart time
Core Design Contradiction:
Ease of manufactureVSLoss of time

Solution Approach 1:

The patent performs preliminary actions by pre-packaging the agent in a WAR file format during deployment time. This preparation allows the agent to be loaded into the servlet container's memory space in advance, enabling rapid updates and detaches during runtime without requiring server restarts. The WAR file structure facilitates efficient extraction and loading of the agent jar file when needed.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent implements dynamic agent management by enabling the agent to be loaded, updated, and detached at runtime through servlet operations. The system transitions from a static, launch-time agent loading model to a dynamic model where the agent can be modified during server operation. This dynamic approach allows the agent jar file to be replaced in memory without interrupting the server process.

Inventive Principle:
Principle #15Dynamics

3Ease of operation

If the agent is loaded before any application during launch time, then the agent can manipulate bytecode, but the agent cannot be detached or updated without restarting the server

Engineering Contradiction:
Improvebytecode manipulation capabilityVSAvoiddeployment flexibility
Core Design Contradiction:
Ease of operationVSDevice complexity

Solution Approach 1:

The patent makes the WAR file package universal by designing it to serve multiple functions: it can contain the agent jar file, be deployed through standard servlet container mechanisms, and support runtime updates. This multi-functional approach allows the same deployment structure to handle both initial agent loading and subsequent runtime modifications, simplifying the overall deployment process while maintaining bytecode manipulation capabilities.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS10977027B1System and method of deploying java agents in runtime
Publication Date: 2021.04.13 HCL TECH LTD
  • US10977027B1 patent drawing
  • US10977027B1 patent drawing
  • US10977027B1 patent drawing

AI summary

The present disclosure relates to system(s) and method(s) for deploying a java agent in runtime. The method creates a .WAR file associated with a java agent. The .WAR file corresponds to a servlet configured to run the java agent. The method further determines an existence of a reference holder class in a bootstrap class loader using the servlet. Based on the determination of the reference holder class, the method connects the servlet to a Java Virtual Machine (JVM). The servlet is connected to the JVM using an open source library. Further, the method deploys the java agent in real-time based on a deployment of a bootstrap class using the servlet. The bootstrap class holds a reference to the java agent. The bootstrap class acts as the reference holder class.