IP Library Granted Patent US 9,535,666
Granted Patent B2
US 9,535,666 · App. 14/609,298 · Granted Jan 3, 2017

Dynamic agent delivery

Inventors: Vinay Srinivasaiah (San Francisco, CA); Bradley Winslow (Torrance, CA)
Assignee: AppDynamics, Inc.
G06F8/315G06F8/30G06F8/33G06F9/4406G06F9/44589G06F9/45533
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 9,535,666
App. No.
14/609,298
Granted
Jan 3, 2017
Kind
B2
Abstract

The present technology utilizes agents to monitor and report data from Java virtual machines (JVM) to a controller as part of application performance monitoring. When a JVM is loaded, code defining an interface for agents is loaded as well. A determination may be made as to whether the loaded agent implements the interface defined at the JVM. If the loaded agent does not implement the interface, for example if it is missing one or more methods defined by the interface, the agent class may be modified to define the missing methods. The modification to the agent class may be made after compilation but before the class is loaded into the JVM.

Claims (38)

1. A method for delivering an agent on a machine, comprising:

compiling at a machine an agent class for an agent, the agent monitor a distributed business transaction on the machine once the agent is loaded in a Java virtual machine;

loading an interface definition to be implemented by the agent on the machine, wherein the interface definition is bootstrap loaded onto the Java virtual machine at startup time;

analyzing the agent class intended to implement an interface complying with the interface definition; and

modifying the agent class to comply with the interface definition to be implemented by the agent when the loaded agent monitors the distributed business transaction.

2. The method of claim 1 , wherein the agent class is analyzed in byte code form after compilation.

3. The method of claim 1 , wherein the agent class is modified by byte code injection.

4. The method of claim 1 , wherein agent class modification includes adding methods to the agent class that are in the interface definition but not included in the agent class at the time the agent is analyzed.

5. The method of claim 4 , wherein the added methods throw an exception.

6. The method of claim 1 , further comprising:

retrieving environment information by a .jar agent file; and

selecting a version of an agent to load into the machine.

7. The method of claim 1 , wherein the machine is a java virtual machine.

8. A non-transitory computer-readable storage medium having embodied thereon a program, the program being executable by a processor to perform a method for delivering an agent on a machine, the method comprising:

compiling at a machine an agent class for an agent, the agent monitoring a distributed business transaction on the machine once the agent is loaded in a Java virtual machine;

loading an interface definition to be implemented by the agent on the machine, wherein the interface definition is bootstrap loaded onto the Java virtual machine at startup time;

analyzing the agent class intended to implement an interface complying with the interface definition; and

modifying the agent class to comply with the interface definition to be implemented by the agent when the loaded agent monitors the distributed business transaction.

9. The non-transitory computer-readable storage medium of claim 8 , wherein the agent class is analyzed in byte code form after compilation.

10. The non-transitory computer-readable storage medium of claim 8 , wherein the agent class is modified by byte code injection.

11. The non-transitory computer-readable storage medium of claim 8 , wherein agent class modification includes adding methods to the agent class that are in the interface definition but not included in the agent class at the time the agent is analyzed.

12. The non-transitory computer-readable storage medium of claim 11 , wherein the added methods throw an exception.

13. The non-transitory computer-readable storage medium of claim 8 , the method further comprising:

retrieving environment information by a .jar agent file; and

selecting a version of an agent to load into the machine.

14. The non-transitory computer-readable storage medium of claim 8 , wherein the machine is a java virtual machine.

15. A system for delivering an agent on a machine, comprising:

a processor;

memory; and

one or more modules stored in memory and executable by the processor to compile at a machine an agent class for an agent, the agent monitoring a distributed business transaction on the machine once the agent is loaded in a Java virtual machine, load an interface definition to be implemented by the agent on the machine, wherein the interface definition is bootstrap loaded onto the Java virtual machine at startup time, analyze the agent class intended to implement an interface complying with the interface definition, and modify the agent class to comply with the interface definition to be implemented by the agent when the loaded agent monitors the distributed business transaction.

16. The system of claim 15 , wherein the agent class is analyzed in byte code form after compilation.

17. The system of claim 15 , wherein the agent class is modified by byte code injection.

18. The system of claim 15 , wherein agent class modification includes adding methods to the agent class that are in the interface definition but not included in the agent class at the time the agent is analyzed.

19. The system of claim 18 , wherein the added methods throw an exception.

20. The system of claim 15 , further comprising:

retrieving environment information by a .jar agent file; and

selecting a version of an agent to load into the machine.

21. The system of claim 15 , wherein the machine is a Java virtual machine.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 10, 2017
From: APPDYNAMICS LLC
To: CISCO TECHNOLOGY, INC.
Reel/Frame 044173/0050 →
CHANGE OF NAME Recorded Jun 23, 2017
From: APPDYNAMICS, INC.
To: APPDYNAMICS LLC
Reel/Frame 042964/0229 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 28, 2015
From: SRINIVASAIAH, VINAY; WINSLOW, BRADLEY
To: APPDYNAMICS, INC.
Reel/Frame 035737/0320 →
Continuity (1)
Related Publication 20160224322A1 · Aug 4, 2016