Smart stub or enterprise javaTM bean in a distributed processing system
First Claim
1. An article of manufacture including an information storage medium wherein is stored information, comprising:
- a first set of digital information, including a Java™
virtual machine with a stub having a load balancing software component for selecting a service provider from a plurality of service providers and a failover software component for removing a failed service provider from a list identifying the plurality of service providers, wherein the Java™
virtual machine with the stub is located on a client processing device, wherein the load balancing software selects a particular service provider, from the list of plurality of service providers, if both an affinity exists for the particular service provider and the particular service provider provides a service requested, and, wherein an affinity exists for a particular service provider when that particular service provider, or the server associated with the service provider, is currently participating in a transaction between either of the service provider or server and the client processing device.
2 Assignments
0 Petitions
Accused Products
Abstract
A clustered enterprise Java™ distributed processing system is provided. The distributed processing system includes a first and a second computer coupled to a communication medium. The first computer includes a Java™ virtual machine (JVM) and kernel software layer for transferring messages, including a remote Java™ virtual machine (RJVM). The second computer includes a JVM and a kernel software layer having a RJVM. Messages are passed from a RJVM to the JVM in one computer to the JVM and RJVM in the second computer. Messages may be forwarded through an intermediate server or rerouted after a network reconfiguration. Each computer includes a Smart stub having a replica handler, including a load balancing software component and a failover software component. Each computer includes a duplicated service naming tree for storing a pool of Smart stubs at a node. The computers may be programmed in a stateless, stateless factory, or a stateful programming model. The clustered enterprise Java™ distributed processing system allows for enhanced scalability and fault tolerance.
86 Citations
74 Claims
-
1. An article of manufacture including an information storage medium wherein is stored information, comprising:
-
a first set of digital information, including a Java™
virtual machine with a stub having a load balancing software component for selecting a service provider from a plurality of service providers and a failover software component for removing a failed service provider from a list identifying the plurality of service providers, wherein the Java™
virtual machine with the stub is located on a client processing device,wherein the load balancing software selects a particular service provider, from the list of plurality of service providers, if both an affinity exists for the particular service provider and the particular service provider provides a service requested, and, wherein an affinity exists for a particular service provider when that particular service provider, or the server associated with the service provider, is currently participating in a transaction between either of the service provider or server and the client processing device. - View Dependent Claims (2, 3, 4, 5, 6, 7, 19)
a processor;
an instruction store, coupled to the processor, comprising an article of manufacture as recited in claim 1; and
a data store, coupled to the processor, wherein an application program can be stored.
-
-
8. An article of manufacture including an information storage medium wherein is stored information, comprising:
-
a first set of digital information, including a Java™
virtual machine with a Java™
bean object for selecting a service provider from a plurality of service providers;
wherein the Java™
bean object has a load balancing software component that selects a particular service provider, from the plurality of service providers, if both an affinity exists for the particular service provider and the particular service provider provides a service requested, and,wherein an affinity exists for a particular service provider when that particular service provider, or the server associated with the service provider, is currently participating in a transaction between either of the service provider or server and the client processing device. - View Dependent Claims (9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20)
a second set of digital information, including a stateless session bean.
-
-
17. The article of manufacture of claim 8, further comprising:
a second set of digital information, including a stateful session bean.
-
18. The article of manufacture of claim 8, further comprising:
a second set of digital information, including an entity session bean.
-
20. An apparatus, comprising:
-
a processor;
an instruction store, coupled to the processor, comprising an article of manufacture as recited in claim 8; and
a data store, coupled to the processor, wherein an application program can be stored.
-
-
21. A processing device implemented method, comprising the steps of:
-
obtaining, by a stub, a list of service providers; and
selecting a service provider for use in a transaction, by the stub, from the list of service providers wherein the selecting step includes selecting, by the stub, a particular service provider, from the list of plurality of service providers, if both an affinity exists for the particular service provider and the particular service provider provides a service requested, and, wherein an affinity exists for a particular service provider when that particular service provider, or the server associated with the service provider, is currently participating in the transaction. - View Dependent Claims (22, 23, 24, 25, 26, 27, 28, 29)
selecting a service provider, by the stub, from the list of service providers in a round robin manner.
-
-
25. The method of claim 21, wherein if no affinity for a service provider exists, or if the particular service provider for which the affinity exists does not provide the service requested, then the step of selecting further includes the step of:
selecting a service provider, by the stub, randomly from the list of service providers.
-
26. The method of claim 21, wherein if no affinity for a service provider exists, or if the particular service provider for which the affinity exists does not provide the service requested, then the step of selecting further includes the steps of:
-
obtaining the load of each service provider, by the stub, in the list of service providers; and
,selecting a service provider, by the stub, based upon the load of each service provider.
-
-
27. The method of claim 21, wherein if no affinity for a service provider exists, or if the particular service provider for which the affinity exists does not provide the service requested, then the step of selecting further includes the steps of:
-
determining the type of data requested; and
,selecting a service provider, by the stub, from the list of service providers based upon the data type.
-
-
28. The method of claim 21, wherein if no affinity for a service provider exists, or if the particular service provider for which the affinity exists does not provide the service requested, then the step of selecting further includes the steps of:
-
determining the physical distance to each service provider, by the stub, in the list of service providers; and
,selecting a service provider, by the stub, from the list of service providers based upon on the closest physical distance to the service provider.
-
-
29. The method of claim 21, wherein if no affinity for a service provider exists, or if the particular service provider for which the affinity exists does not provide the service requested, then the step of selecting further includes the steps of:
-
determining a time period for each service provider, by the stub, in the list of service providers to respond; and
,selecting a service provider from the list of service providers based upon the time period for each service provider to respond.
-
-
30. A processing device implemented method, comprising:
-
obtaining a calling thread;
determining, by a client, if the calling thread has an affinity for a server, wherein an affinity exists for a particular server when that particular server is currently participating in a transaction between the server and the client;
determining if the server provides a service;
obtaining a list of services, wherein the service is in the list of services providers; and
,attempting to obtain the service. - View Dependent Claims (31, 32, 33, 34, 35, 36, 37)
obtaining a failover method if the service is not available.
-
-
32. The method of claim 31, wherein the failover method obtains a next service provider in the list of service providers.
-
33. The method of claim 31, wherein the failover method obtains a randomly selected service provider in the list of service providers.
-
34. The method of claim 31, wherein the failover method obtains a service provider with the least load in the list of service providers.
-
35. The method of claim 31, wherein the failover method obtains a service provider based on a data type in the list of service providers.
-
36. The method of claim 31, wherein the failover method obtains a service provider based on the closest physical distance to the service provider.
-
37. The method of claim 31, wherein the failover method obtains a service provider based on a time for a response from a service provider in the plurality of service providers.
-
38. A method of providing failover in a distributed processing system, to select which service provider within a plurality of service providers should respond to a request from a client to access a service, the method comprising the steps of:
-
determining whether the client has an affinity for a particular service provider within the plurality of service providers;
if the client does have an affinity for a particular service provider then the substeps of determining whether the particular service provider can provide the service requested, and, returning the name of that service provider to the client;
if the client does not have an affinity for a particular service provider, or if the particular service provider is no longer available to provide the service requested, then the substeps of selecting a new service provider from the plurality of service providers, and, returning the name of the new service provider to the client; and
,allowing the client to access the service using the named service provider, if the named service provider exists and can provide the service. - View Dependent Claims (39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51)
(E) if the named service provider does not exist or cannot provide the service, then calling a failover method that includes the substeps of identifying the named service provider as a failed service provider, selecting a failover service provider from the plurality of service providers, and, returning the name of the failover service provider to the client.
-
-
44. The method of claim 38 further comprising the step of:
removing the failed service provider from a list of available service providers within the distributed processing system.
-
45. The method of claim 38 wherein the service is a database or file system.
-
46. The method of claim 38, wherein if no affinity for a service provider exists, or if the particular service provider for which the affinity exists does not provide the service requested, then the system selects a service provider from the list of plurality of service providers in a round robin manner.
-
47. The method of claim 38, wherein if no affinity for a service provider exists, or if the particular service provider for which the affinity exists does not provide the service requested, then the system randomly selects a service provider from the list of service providers.
-
48. The method of claim 38, wherein if no affinity for a service provider exists, or if the particular service provider for which the affinity exists does not provide the service requested, then the system selects a service provider from the list of service providers based upon the load of each service provider.
-
49. The method of claim 38, wherein if no affinity for a service provider exists, or if the particular service provider for which the affinity exists does not provide the service requested, then the system selects a service provider from the list of service providers based upon the data type requested.
-
50. The method of claim 38, wherein if no affinity for a service provider exists, or if the particular service provider for which the affinity exists does not provide the service requested, then the system selects a service provider from the list of service providers based upon the closest physical service provider.
-
51. The method of claim 38, wherein if no affinity for a service provider exists, or if the particular service provider for which the affinity exists does not provide the service requested, then the system selects a service provider from the list of service providers based upon a time period in which each service provider responds.
-
52. A method of using load balancing and/or failover in a distributed processing system to select which a service provider within a plurality of service providers can respond to a transaction request from a client to access a service, the method comprising the steps of:
-
(A) receiving a transaction request from a client to access a service;
(B) determining whether the client has an affinity for a particular service provider within said plurality of service providers;
(C1) if the client does have an affinity for a particular service provider then the substeps of determining whether the particular service provider can provide the service requested, and, returning the name of the particular service provider to the client for use by the client in accessing the service;
(C2) if the client does not have an affinity for a particular service provider, then the substeps of selecting a new service provider from the plurality of service providers, determining whether the new service provider can provide the service requested, and, returning the name of the new service provider to the client for use by the client in accessing the service; and
,(D) allowing the client to request service from the named service provider, if the named service provider is available and can provide access to the service requested. - View Dependent Claims (53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65)
(E) if the named service provider does not exist or cannot provide the service, then calling a failover method that includes the substeps of identifying the named service provider as a failed service provider, selecting a failover service provider from the plurality of service providers, and, returning the name of the failover service provider to the client.
-
-
58. The method of claim 52 further comprising the step of:
removing the failed service provider from a list of available service providers within the distributed processing system.
-
59. The method of claim 52 wherein the service is a database or file system.
-
60. The method of claim 52, wherein if no affinity for a service provider exists, or if the particular service provider for which the affinity exists does not provide the service requested, then the system selects a service provider from the list of plurality of service providers in a round robin manner.
-
61. The method of claim 52, wherein if no affinity for a service provider exists, or if the particular service provider for which the affinity exists does not provide the service requested, then the system randomly selects a service provider from the list of service providers.
-
62. The method of claim 52, wherein if no affinity for a service provider exists, or if the particular service provider for which the affinity exists does not provide the service requested, then the system selects a service provider from the list of service providers based upon the load of each service provider.
-
63. The method of claim 52, wherein if no affinity for a service provider exists, or if the particular service provider for which the affinity exists does not provide the service requested, then the system selects a service provider from the list of service providers based upon the data type requested.
-
64. The method of claim 52, wherein if no affinity for a service provider exists, or if the particular service provider for which the affinity exists does not provide the service requested, then the system selects a service provider from the list of service providers based upon the closest physical service provider.
-
65. The method of claim 52, wherein if no affinity for a service provider exists, or if the particular service provider for which the affinity exists does not provide the service requested, then the system selects a service provider from the list of service providers based upon a time period in which each service provider responds.
-
66. A system for load balancing and failover of requests by a client to access a service in a distributed processing system comprising:
-
a handler for receiving requests from a client to access a service;
a plurality of service providers for providing client access to the service;
software code that performs the method of determining whether the client has an affinity for a particular service provider within the plurality of service providers;
if the client does have an affinity for a particular service provider then the substeps of determining whether the particular service provider can provide the service requested, and, returning the name of that service provider to the client;
if the client does not have an affinity for a service provider, then the substeps of selecting a new service provider from the plurality of service providers, and, returning the name of the new service provider to the client; and
,allowing the client to access the service using the named service provider, if the named service provider exists and can provide the service. - View Dependent Claims (67, 68, 69, 70, 71, 72, 73, 74)
a list of currently available service providers, and, wherein a failed service provider is removed from the list of service providers.
-
-
68. The system of claim 66 wherein the service is a database or file system.
-
69. The system of claim 66, wherein if no affinity for a service provider exists, or if the particular service provider for which the affinity exists does not provide the service requested, then the system selects a service provider from the list of plurality of service providers in a round robin manner.
-
70. The system of claim 66, wherein if no affinity for a service provider exists, or if the particular service provider for which the affinity exists does not provide the service requested, then the system randomly selects a service provider from the list of service providers.
-
71. The system of claim 66, wherein if no affinity for a service provider exists, or if the particular service provider for which the affinity exists does not provide the service requested, then the system selects a service provider from the list of service providers based upon the load of each service provider.
-
72. The system of claim 66, wherein if no affinity for a service provider exists, or if the particular service provider for which the affinity exists does not provide the service requested, then the system selects a service provider from the list of service providers based upon the data type requested.
-
73. The system of claim 66, wherein if no affinity for a service provider exists, or if the particular service provider for which the affinity exists does not provide the service requested, then the system selects a service provider from the list of service providers based upon the closest physical service provider.
-
74. The system of claim 66, wherein if no affinity for a service provider exists, or if the particular service provider for which the affinity exists does not provide the service requested, then the system selects a service provider from the list of service providers based upon a time period in which each service provider responds.
Specification