Resource Proxies for Multi-Tenancy Isolation in Java EE

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing application servers face challenges in efficiently supporting multi-tenancy for enterprise Java applications, leading to redundancy and increased costs due to shared resource usage among tenants, and lack of effective isolation between tenants.

Innovation Solution

The implementation of resource proxies and application tenancy context allows a single Java EE application instance to serve multiple tenants by using tenant-specific resources, enabling transparent communication and management of resources on a per-tenant basis, supporting both shared and tenant-specific runtimes, and allowing for separate instantiation of customizations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Quantity of substance

If a single Java EE application instance serves multiple tenants using shared resources, then cost is reduced and resource efficiency is improved, but tenant isolation and data security are compromised

Engineering Contradiction:
Improveresource redundancyVSAvoidtenant isolation
Core Design Contradiction:
Quantity of substanceVSReliability

Solution Approach 1:

The patent introduces resource proxies as intermediary objects between the shared Java EE application instance and tenant-specific resources. These proxies act as mediators that transparently route resource access to the appropriate tenant-specific resources while maintaining the illusion of a single application instance. The proxies handle the mapping between shared application resources and tenant-specific resources, enabling both resource sharing and tenant isolation simultaneously.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent segments the resource access layer by introducing tenant-specific resource proxies for each tenant. While the application instance remains shared, the resource access path is segmented into tenant-specific segments through these proxies. This segmentation occurs at the resource access level rather than at the application level, allowing multiple tenants to share the same application code while having dedicated resource access paths.

Inventive Principle:
Principle #1Segmentation

2Reliability

If separate application instances are instantiated for each tenant, then tenant isolation and data security are improved, but resource redundancy and cost increase

Engineering Contradiction:
Improvetenant isolationVSAvoidapplication instances
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The patent makes the single Java EE application instance universal by enabling it to serve multiple tenants through resource proxies. The application instance is designed with multi-functionality to handle requests from different tenants while maintaining isolation through the proxy layer. This allows one application instance to perform the work of multiple separate instances while sharing common resources.

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

Solution Approach 2:

Instead of copying the entire application instance for each tenant, the patent creates copies only at the resource access layer through resource proxies. Each tenant gets their own proxy instance that copies the necessary resource access patterns, while the main application instance remains shared. This selective copying approach reduces redundancy compared to full application instance copying.

Inventive Principle:
Principle #26Copying

3Adaptability or versatility

If resource proxies are introduced for transparent resource management, then multi-tenancy capability is improved, but system complexity increases

Engineering Contradiction:
Improvemulti-tenancy capabilityVSAvoidsystem architecture
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The resource proxies serve as intermediaries that encapsulate the complexity of multi-tenancy resource management. By placing the complexity in the proxy layer rather than throughout the entire application, the proxies simplify the overall system architecture. The application code remains simple and unchanged, while the proxies handle the complex tasks of resource routing, isolation, and mapping.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent segments the complexity into separate, manageable units - individual resource proxies for each tenant. Each proxy is a self-contained unit that handles its own resource access patterns, making the complexity modular and easier to manage. This segmentation allows the complexity to be distributed across multiple simple proxy instances rather than concentrated in a single complex system.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS10091135B2System and method for multi-tenancy enablement of enterprise java applications using resource proxies and application tenancy context
Publication Date: 2018.10.02 ORACLE INT CORP
  • US10091135B2 patent drawing
  • US10091135B2 patent drawing
  • US10091135B2 patent drawing

AI summary

In accordance with an embodiment, described herein is a system and method for multi-tenancy enablement of enterprise Java™ applications using resource proxies and application tenancy context. In according with an embodiment, the system and method can provide a plurality of deployable resources which can be used within the application server environment, and one or more application deployments, wherein each application deployment includes at least one of tenant-specific code and shared-tenant code. The system and method can further determine an application tenancy context of a thread, and point to one or more resource proxies, each of the one or more resource proxies being configurable to communicate with a tenant specific resource. Each of the one or more resource proxies can use the application tenancy context of a thread to communicate with a tenant specific resource.