IP Library Granted Patent US 7,752,626
Granted Patent B1
US 7,752,626 · App. 10/675,479 · Granted Jul 6, 2010

System and method for RMI-IIOP request load balancing

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 7,752,626
App. No.
10/675,479
Granted
Jul 6, 2010
Kind
B1
Abstract

System and method for client-side RMI-IIOP request load balancing. Embodiments provide a vendor-independent mechanism for load balancing RMI-IIOP requests using standards-based JNDI (Java Naming and Directory Interface) SPIs. One embodiment may use an implementation of a Context Factory class such as the JNDI ContextFactory SPI (Service Provider Interface) for RMI-IIOP request load balancing. Using embodiments, a client may load-balance RMI-IIOP requests to application server instances in an application server cluster. A plurality of client-side Object Request Brokers (ORBs) may be created “up front” on a client system. After the client-side ORBs are initially created, the client-side ORBs may be selected according to a load balancing scheme in response to requests to access the application server. Note that embodiments may be adapted for use in client-side load balancing for other types of client-server systems.

Claims (48)

1. A system, comprising:

one or more host machines configured to implement a plurality of instances of an application server; and

one or more client machines each configured to implement one or more clients of the application server, wherein each client on a respective one of the one or more client machines is configured to:

create a different client-side Object Request Broker (ORB) on the client machine for each of the plurality of application server instances to generate a plurality of client-side ORBs each corresponding to a different one of the application server instances, wherein each client-side ORB is coupled to a server-side ORB of its corresponding application server instance;

select one of the plurality of client-side ORBs created by the client on the client machine according to a load balancing scheme in response to a request to access the application server; wherein the load balancing scheme comprises a random scheme, a round robin scheme, or an intelligent scheme based on feedback; wherein the load balancing scheme distributes requests to access the application server from the client among the plurality of client-side ORBs created by the client, thereby distributing the requests to access the application server from the client among the plurality of application server instances; and

access the application server instance corresponding to the selected client-side ORB via the selected client-side ORB coupled to the server-side ORB of the corresponding application server instance.

2. The system as recited in claim 1 , wherein said access of a particular one of the plurality of application server instances via the selected client-side ORB is performed according to RMI-IIOP (Remote Method Invocation—Internet Inter-ORB Protocol).

3. The system as recited in claim 1 , wherein said creation of a plurality of client-side ORBs and said selection of one of the plurality of client-side ORBs according to a load balancing scheme are performed by a Context Factory class.

4. The system as recited in claim 3 , wherein the Context Factory class is a factory class of a naming and directory interface that provides naming and directory functionality to applications.

5. The system as recited in claim 1 , wherein each client on a respective one of the one or more client machines is further configured to:

select a different one of the plurality of client-side ORBs on the client machine according to the load balancing scheme in response to another request to access the application server; and

access a different one of the plurality of application server instances using the different client-side ORB coupled to a server-side ORB of the different application server instance.

6. A client machine, comprising:

a processor; and

a memory comprising program instructions, wherein the program instructions are executable by the processor to implement:

create a plurality of client-side Object Request Brokers (ORBs) on the client machine for a client of an application server, wherein a different client-side ORB is created on the client machine for each of a plurality of instances of the application server to generate a plurality of client-side ORBs each corresponding to a different one of the application server instances, wherein the client is on the client machine, wherein each client-side ORB is coupled to a server-side ORB of its corresponding instance of the application server on one or more host machines;

select one of the plurality of client-side ORBs on the client machine according to a load balancing scheme in response to a request to access the application server; wherein the load balancing scheme comprises a random scheme, a round robin scheme, or an intelligent scheme based on feedback; wherein the load balancing scheme distributes requests to access the application server from the client among the plurality of client-side ORBs, thereby distributing the requests to access the application server from the client among the plurality of application server instances; and

access the application server instance corresponding to the selected client-side ORB via the selected client-side ORB coupled to the server-side ORB of the corresponding application server instance.

7. The client machine as recited in claim 6 , wherein said access of a particular one of the plurality of application server instances via the selected client-side ORB is performed according to RMI-IIOP (Remote Method Invocation—Internet Inter-ORB Protocol).

8. The client machine as recited in claim 6 , wherein said creation of a plurality of client-side ORBs and said selection of one of the plurality of client-side ORBs according to a load balancing scheme are performed by a Context Factory class.

9. The client machine as recited in claim 8 , wherein the Context Factory class is a factory class of a naming and directory interface that provides naming and directory functionality to applications.

10. The client machine as recited in claim 6 , wherein the program instructions are further executable by the processor to:

select a different one of the plurality of client-side ORBs on the client machine according to the load balancing scheme in response to another request to access the application server; and

access a different one of the plurality of application server instances using the different client-side ORB coupled to a server-side ORB of the different application server instance.

11. A computer-implemented method, comprising:

creating a plurality of client-side Object Request Brokers (ORBs) on a client machine for a client application on the client machine, wherein a different client-side ORB is created on the client machine for each of a plurality of instances of an application server to generate a plurality of client-side ORBs each corresponding to a different one of the application server instances, wherein each client-side ORB is coupled to a server-side ORB of its corresponding application server instance;

the client application requesting access to the application server;

selecting one of the plurality of client-side ORBs on the client machine according to a load balancing scheme in response to the request; wherein the load balancing scheme comprises a random scheme, a round robin scheme, or an intelligent scheme based on feedback; wherein the load balancing scheme distributes requests to access the application server from the client application among the plurality of client-side ORBs, thereby distributing the requests to access the application server from the client application among the plurality of application server instances; and

the client application accessing the application server instance corresponding to the selected client-side ORB via the selected client-side ORB coupled to the server-side ORB of the corresponding application server instance.

12. The computer-implemented method as recited in claim 11 , wherein said accessing a particular one of the plurality of application server instances via the selected client-side ORB is performed according to RMI-IIOP (Remote Method Invocation—Internet Inter-ORB Protocol).

13. The computer-implemented method as recited in claim 11 , wherein said creating a plurality of client-side ORBs and said selecting one of the plurality of client-side ORBs according to a load balancing scheme in response to the request are performed by a Context Factory class.

14. The computer-implemented method as recited in claim 13 , wherein the Context Factory class is a factory class of a naming and directory interface that provides naming and directory functionality to applications written in Java programming language.

15. The computer-implemented method as recited in claim 11 , further comprising:

the client application requesting another access to the application server;

selecting a different one of the plurality of client-side ORBs on the client machine according to the load balancing scheme in response to the other request; and

the client application accessing a different one of the plurality of application server instances using the different client-side ORB coupled to a server-side ORB of the different application server instance.

16. A computer-accessible storage medium comprising program instructions, wherein the program instructions are computer-executable to implement:

creating a plurality of client-side Object Request Brokers (ORBs) on a client machine for a client application the client machine, wherein a different client-side ORB is created on the client machine for each of a plurality of instances of the application server to generate a plurality of client-side ORBs each corresponding to a different one of the application server instances, wherein each client-side ORB is coupled to a server-side ORB of its corresponding application server instance;

receiving a request from the client application for access to the application server;

selecting one of the plurality of client-side ORBs on the client machine according to a load balancing scheme in response to the request; wherein the load balancing scheme comprises a random scheme, a round robin scheme, or an intelligent scheme based on feedback; wherein the load balancing scheme distributes requests to access the application server from the client application among the plurality of client-side ORBs, thereby distributing the requests to access the application server from the client application among the plurality of application server instances; and

the client application accessing the application server instance corresponding to the selected client-side ORB via the selected client-side ORB coupled to the server-side ORB of the corresponding application server instance.

17. The computer-accessible storage medium as recited in claim 16 , wherein said accessing a particular one of the plurality of application server instances via the selected client-side ORB is performed according to RMI-IIOP (Remote Method Invocation—Internet Inter-ORB Protocol).

18. The computer-accessible storage medium as recited in claim 16 , wherein said creating a plurality of client-side ORBs and said selecting one of the plurality of client-side ORBs according to a load balancing scheme in response to the request are performed by a Context Factory class.

19. The computer-accessible storage medium as recited in claim 18 , wherein the Context Factory class is a factory class of a naming and directory interface that provides naming and directory functionality to applications.

20. The computer-accessible storage medium as recited in claim 16 , wherein the program instructions are further computer-executable to implement:

receiving another request from the client application for access to the application server;

selecting a different one of the plurality of client-side ORBs on the client machine according to the load balancing scheme in response to the other request; and

the client application accessing a different one of the plurality of application server instances using the different client-side ORB coupled to a server-side ORB of the different application server instance.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Dec 16, 2015
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037306/0514 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 30, 2003
From: PANDEY, DHIRENDRA; DINKER, DARPAN
To: SUN MICROSYSTEMS, INC.
Reel/Frame 014564/0910 →