IP Library › Granted Patent US 12,360,776
Granted Patent B2
US 12,360,776 · App. 18/122,004 · Granted Jul 15, 2025

Multi-tenant Java agent instrumentation system

Inventor: Walter Theodore Hulick, Jr. (Pearland, TX)
Assignee: Cisco Technology, Inc.
G06F9/445G06F8/315G06F9/44521G06F11/3409G06F11/3466G06F11/3616G06F21/51G06F21/57
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,360,776
App. No.
18/122,004
Granted
Jul 15, 2025
Kind
B2
Abstract

In one embodiment, a device launches a core agent for a Java application. The core agent loads a first tenant and a second tenant, each tenant having its own isolated class loader. The device instruments, via the core agent and by each tenant, the Java application to capture data regarding execution of the Java application. The device provides the captured data to a user interface.

Claims (45)

1. A method, comprising:

launching, by a device, a core agent, for a Java application, that comprises an agent loader;

creating, by the core agent, tenant modules for a first tenant and a second tenant of tenants, wherein the agent loader sets the tenant modules to be readable by one or more modules of the Java application;

loading, by the core agent, the first tenant having a first isolated class loader and the second tenant having a second isolated class loader, wherein the agent loader is a parent for the first isolated class loader and the second isolated class loader;

instrumenting, via the core agent and by each tenant, the Java application to capture data regarding execution of the Java application; and

providing the data regarding execution of the Java application to a user interface.

2. The method as in claim 1 , wherein the first tenant is an application performance management (APM) tenant that instruments the Java application to collect performance data regarding the Java application.

3. The method as in claim 2 , wherein the second tenant is a Runtime Application Self Protection (RASP) tenant that instruments the Java application to monitor the Java application for signs of malicious activity.

4. The method as in claim 1 , wherein the core agent is launched using a premain method.

5. The method as in claim 1 , wherein instrumenting, via the core agent and by each tenant, the Java application to capture the data regarding execution of the Java application comprises:

using a handler to capture at least one of: an object instance, one or more arguments, or a return value of a method of the Java application.

6. The method as in claim 1 , wherein instrumenting, via the core agent and by each tenant, the Java application to capture the data regarding execution of the Java application comprises:

instrumenting an anonymous class of the Java application.

7. The method as in claim 1 , wherein launching, by a device, the core agent for a Java application comprises:

setting, by the agent loader, the tenant modules to be able to export to at least one of: a boot module or a premain module of the Java application; and

setting, by the agent loader, the tenant modules to be readable by at least one of: the boot module or the premain module of the Java application.

8. The method as in claim 1 , wherein launching the core agent for the Java application comprises:

launching the core agent as a Java agent.

9. The method as in claim 1 , wherein each tenant comprises a configuration file that defines a handler to instrument the Java application.

10. A tangible, non-transitory, computer-readable medium having computer-executable instructions stored thereon that, when executed by a processor on a device, cause the device to perform a method comprising:

launching, by the device, a core agent, for a Java application, that comprises an agent loader;

creating, by the core agent, tenant modules for a first tenant and a second tenant of tenants, wherein the agent loader sets the tenant modules to be readable by one or more modules of the Java application;

loading, by the core agent, the first tenant having a first isolated class loader and the second tenant having a second isolated class loader, wherein the agent loader is a parent for the first isolated class loader and the second isolated class loader;

instrumenting, via the core agent and by each tenant, the Java application to capture data regarding execution of the Java application; and

providing the data regarding execution of the Java application to a user interface.

11. The computer-readable medium as in claim 10 , wherein the first tenant is an application performance management (APM) tenant that instruments the Java application to collect performance data regarding the Java application.

12. The computer-readable medium as in claim 11 , wherein the second tenant is a Runtime Application Self Protection (RASP) tenant that instruments the Java application to monitor the Java application for signs of malicious activity.

13. The computer-readable medium as in claim 10 , wherein instrumenting, via the core agent and by each tenant, the Java application to capture the data regarding execution of the Java application comprises:

using a handler to capture at least one of: an object instance, one or more arguments, or a return value of a method of the Java application.

14. The computer-readable medium as in claim 10 , wherein launching, by a device, the core agent for a Java application comprises:

setting, by the agent loader, the tenant modules to be able to export to at least one of: a boot module or a premain module of the Java application; and

setting, by the agent loader, the tenant modules to be readable by at least one of: the boot module or the premain module of the Java application.

15. The computer-readable medium as in claim 10 , wherein instrumenting, via the core agent and by each tenant, the Java application to capture the data regarding execution of the Java application comprises:

instrumenting an anonymous class of the Java application.

16. The computer-readable medium as in claim 10 , wherein each tenant comprises a configuration file that defines a handler to instrument the Java application.

17. The computer-readable medium as in claim 10 , wherein the core agent is launched using a premain method.

18. An apparatus, comprising:

one or more network interfaces to communicate with a network;

a processor coupled to the one or more network interfaces and configured to execute one or more processes; and

a memory configured to store a process executable by the processor, the process, when executed, configured to:

launch a core agent, for a Java application, that comprises an agent loader;

create, by the core agent, tenant modules for a first tenant and a second tenant of tenants, wherein the agent loader sets the tenant modules to be readable by one or more modules of the Java application;

load the first tenant having a first isolated class loader and the second tenant having a second isolated class loader, by the core agent, wherein the agent loader is a parent for the first isolated class loader and the second isolated class loader;

instrument, via the core agent and by each tenant, the Java application to capture data regarding execution of the Java application; and

provide the data regarding execution of the Java application to a user interface.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 15, 2023
From: HULICK, WALTER THEODORE, JR.
To: CISCO TECHNOLOGY, INC.
Reel/Frame 062994/0761 →
Continuity (2)
Continuation 16788497 · Feb 12, 2020
Related Publication 20230214229A1 · Jul 6, 2023
References Cited (31)
US 7267275B2 · Cox, Jr. · 2007 [cited by applicant]
US 7818721B2 · Sundararajan · 2010 [cited by applicant]
US 8966464B1 · Christopher · 2015 [cited by applicant]
US 9378034B2 · Matov · 2016 [cited by applicant]
US 9411616B2 · Gagliardi · 2016 [cited by applicant]
US 9442818B1 · Doe · 2016 [cited by applicant]
US 9451017B2 · Greifeneder · 2016 [cited by applicant]
US 9703551B2 · Thorat · 2017 [cited by applicant]
US 10346631B2 · Gopshtein · 2019 [cited by applicant]
US 10462031B1 · Nataraj · 2019 [cited by applicant]
US 10623440B2 · Al Hamami · 2020 [cited by applicant]
US 20050092825A1 · Cox, Jr. · 2005 [cited by applicant]
US 20070180439A1 · Sundararajan · 2007 [cited by applicant]
US 20090144714A1 · Fan · 2009 [cited by applicant]
US 20130152064A1 · Gagliardi · 2013 [cited by applicant]
US 20140344792A1 · Matov · 2014 [cited by applicant]
US 20150032884A1 · Greifeneder · 2015 [cited by applicant]
US 20150309789A1 · Thorat · 2015 [cited by applicant]
US 20160088108A1 · Felts · 2016 [cited by applicant]
US 20160269482A1 · Jamjoom · 2016 [cited by applicant]
US 20170300708A1 · Gopshtein · 2017 [cited by applicant]
US 20180189052A1 · Al Hamami · 2018 [cited by applicant]
US 20190132289A1 · Hulick, Jr. · 2019 [cited by applicant]
Application performance management, Wikipedia, 2019, 6 pages, [retrieved on Feb. 8, 2024], Retrieved from the Internet: <URL:https://web.archive.org/web/20200120063508/https://en.wikipedia.org/wiki/Application_performan… [cited by examiner]
Badakhchani, Hussein, “RASP rings in a new Java application security paradigm”, online: https://www.javaworld.com/article/3125515/rasp-rings-in-a-new-java-application-security-paradigm.html, Oct. 2016, 13 pages, Javawor… [cited by applicant]
Ritter, Simon, “What if you released a JDK and nobody used it?”, online: https://jaxenter.com/ritter-jdk-jax-london-150184.html, Oct. 2018, 8 pages, jaxenter.com. [cited by applicant]
“Java Platform Module System”, online: https://en.wikipedia.org/wiki/Java_Platform_Module_System, Apr. 2019, 4 pages, Wikimedia Foundation, Inc. [cited by applicant]
“Package java.lang.instrument”, online: https://docs.oracle.com/javase/7/docs/api/java/lang/instrument/package-summary.html, Java Platform Standard Ed. 7, 2018, 3 pages, Oracle.com. [cited by applicant]
International Search Report issued on Jun. 11, 2021 in connection with International Patent Application No. PCT/US2021/015354. [cited by applicant]
Marek, L., et al., ShadowVM: Robust and Comprehensive Dynamic Program Analysis for the Java Platform, GPCE'13: Proceedings of the 12 [cited by applicant]
Attouchi, Koutheir, et al., Memory Monitoring in a Multi-tenant OSGi Execution Environment, CBSE'14: Proceedings of the 17 [cited by applicant]