Dynamic Proxy Generation for RMI Stub Optimization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In multi-tiered enterprise networks, remote method invocations (RMI) are inefficient due to the generation of unnecessary stubs and skeletons for objects deployed on the same virtual or physical machine, leading to increased processing power consumption and network bandwidth usage.

Innovation Solution

A system and method that analyzes deployment information to remove unnecessary stubs and skeletons, allowing direct method calls between local and remote objects on the same machine, and dynamically generates proxies to manage method calls, optimizing RMI by compiling source code and using a deployment analysis module to determine object locations and block unnecessary stubs/skeletons, and generating dynamic proxies and skeletons as needed.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If stubs and skeletons are generated for all remote method invocations in multi-tiered enterprise networks, then remote objects can communicate across different virtual machines, but unnecessary stubs and skeletons are created for objects on the same machine, increasing processing power consumption and network bandwidth usage

Engineering Contradiction:
Improveremote method invocation capabilityVSAvoidprocessing power consumption
Core Design Contradiction:
ReliabilityVSUse of energy by moving object

Solution Approach 1:

The system performs preliminary analysis of deployment information during the compilation phase to determine which objects will be deployed on the same virtual machine. Based on this preliminary knowledge, the system selectively generates only the necessary stubs and skeletons, avoiding creation of unnecessary ones for same-machine objects, thus reducing processing power consumption while maintaining RMI capability where needed

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system changes the parameter of stub/skeleton generation from a blanket approach (generate for all RMI) to a conditional approach (generate only when objects are on different virtual machines). This parameter change is based on deployment location information, allowing the system to optimize processing power consumption by eliminating unnecessary stub/skeleton generation while preserving remote method invocation functionality

Inventive Principle:
Principle #35Parameter changes

2Reliability

If stubs and skeletons are generated for all remote method invocations, then remote objects can communicate across different virtual machines, but network bandwidth is increased due to unnecessary communication intermediaries

Engineering Contradiction:
Improveremote method invocation capabilityVSAvoidnetwork bandwidth usage
Core Design Contradiction:
ReliabilityVSLoss of energy

Solution Approach 1:

The system performs preliminary analysis of deployment information during compilation to identify which objects will be co-located on the same virtual machine. Based on this preliminary knowledge, it selectively omits stub and skeleton generation for those objects, thereby eliminating unnecessary network communication intermediaries and reducing network bandwidth consumption while maintaining RMI capability for cross-machine communication

Inventive Principle:
Principle #10Preliminary action

3Reliability

If stubs and skeletons are used for method calls, then remote method invocations can be performed, but response times are increased and server load is increased due to unnecessary communication intermediaries

Engineering Contradiction:
Improveremote method invocation capabilityVSAvoidresponse time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The system performs preliminary analysis of deployment information during compilation to determine which objects will be deployed on the same virtual machine. For same-machine objects, it selectively omits stub and skeleton generation, allowing direct method calls without the overhead of communication intermediaries. This eliminates unnecessary serialization, network transmission, and deserialization steps, thereby reducing response time while maintaining remote method invocation capability for cross-machine objects

Inventive Principle:
Principle #10Preliminary action

4Reliability

If stubs and skeletons are generated for all objects, then remote method invocations can be performed, but device complexity increases due to unnecessary communication intermediaries

Engineering Contradiction:
Improveremote method invocation capabilityVSAvoidsystem complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The system performs preliminary analysis of deployment information during compilation to identify which objects will be co-located on the same virtual machine. Based on this analysis, it selectively generates stubs and skeletons only for cross-machine communication scenarios, omitting them for same-machine objects. This reduces the number of communication intermediaries in the system, thereby reducing device complexity while preserving remote method invocation capability where required

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS9606846B2System and method for dynamic proxy generation
Publication Date: 2017.03.28 SAP SE
  • US9606846B2 patent drawing
  • US9606846B2 patent drawing
  • US9606846B2 patent drawing

AI summary

A system and method are described in which skeletons and/or stubs are manipulated based on deployment information. For example, a method according to one embodiment of the invention comprises: compiling source code to generate program code executable on an application server comprised of a plurality of different virtual machines, the program code containing stubs and/or skeletons; analyzing the program code to identify stubs and/or skeletons generated for objects which are located within the same virtual machine and/or the same physical machine; removing the stubs and/or skeletons for those objects which are located in the same virtual machine and/or same physical machine to generate modified program code; and deploying the modified program code.