A method for moving objects in a distributed computing system is provided that comprises receiving a move indication (224) at a mobility facet object (206) that is aggregated with a primary facet object (204) through an aggregate object (202) located at a current host address and port number (222). A new aggregate object (246) with the new version (242) of the primary facet object (204) as a new primary facet object (248) and the new version (236) of the mobility facet object (206) as a new mobility facet object (250) are created at a new host address and port number (234).
|
0. 20. A method for moving objects in a distributed computing system, comprising:
dynamically aggregating a mobility object with a primary object to create an aggregate object located at a current host location, the primary object being unique to the aggregate object and the mobility object providing a mobility functionality for the primary object, and the aggregate object including the primary object as a primary facet object and the mobility object as a facet object;
receiving a move indication at the mobility object, the move indication instructing the mobility object to move the primary object to a new host location;
sending a new version of the mobility object to the new host location in response to the move indication; and
sending a new version of the primary object to the new host location in response to a move message from the new version of the mobility object;
wherein a new aggregate object is created at the new host location, the new aggregate object having the new version of the primary object associated with the new version of the mobility object.
0. 61. A method for moving objects in a distributed computing system, comprising:
dynamically aggregating a mobility object with a primary object to create an aggregate object located at a current host location, the primary object being unique to the aggregate object and the mobility object providing a mobility functionality for the primary object;
receiving a move indication at the mobility object, the move indication instructing the mobility object to move the primary object to a new host location;
sending a new version of the mobility object to the new host location in response to the move indication; and
sending a new version of the primary object to the new host location in response to a move message from the new version of the mobility object;
wherein a new aggregate object is created at the new host location, the new aggregate object having the new version of the primary object associated with the new version of the mobility object, and the new aggregate object including the new version of the primary object as a new primary facet object and the new version of the mobility object as a new facet object.
0. 41. One or more computer-readable storage media comprising computer-executable instructions that, when executed, direct a computer to move an object in a distributed computing environment, the computer-executable instructions configured to:
dynamically aggregate a mobility object with a primary object to create an aggregate object located at a current host location, the primary object being unique to the aggregate object and the mobility object providing a mobility functionality for the primary object, and the aggregate object including the primary object as a primary facet object and the mobility object as a facet object;
receive a move indication at the mobility object, the move indication instructing the mobility object to move the primary object to a new host location;
send a new version of the mobility object to the new host location in response to the move indication;
send a new version of the primary object to the new location in response to a move message from the new version of the mobility object; and
create a new aggregate object at the new host location, the new aggregate object having the new version of the primary object associated with the new version of the mobility object.
0. 81. One or more computer-readable storage media comprising computer-executable instructions that, when executed, direct a computer to move an object in a distributed computing environment, the computer-executable instructions configured to:
dynamically aggregate a mobility object with a primary object to create an aggregate object located at a current host location, the primary object being unique to the aggregate object and the mobility object providing a mobility functionality for the primary object, the aggregate object including the primary object as a primary facet object and the mobility object as a facet object;
receive a move indication at the mobility object, the move indication instructing the mobility object to move the primary object to a new host location;
send a new version of the mobility object to the new host location in response to the move indication;
send a new version of the primary object to the new host location in response to a move message from the new version of the mobility object; and
create a new aggregate object at the new host location, the new aggregate object having the new version of the primary object associated with the new version of the mobility object, and the new aggregate object creates the new version of the primary object as a new primary facet object and creates the new version of the mobility object as a new facet object.
1. A method for moving objects in a distributed computing system, comprising:
receiving a move indication at a mobility object aggregated with a primary object through an aggregate object located at a current host address and port number, the primary object being unique to the aggregate object, the mobility object providing a mobility functionality for the primary object, the move indication instructing the mobility object to move the primary object to a new host address and port number, the aggregate object having the primary object as a primary facet object and the mobility object as a facet object;
creating a serialized version of the mobility object in response to the move indication;
sending the serialized version of the mobility object to the new host address and port number;
creating a new version of the mobility object at the new host address and port number from the serialized version of the mobility object;
creating a serialized version of the primary object in response to a serialize and move message from the new version of the mobility object;
sending the serialized version of the primary object to the new host address and port number;
creating a new version of the primary object at the new host address and port number from the serialized version of the primary object;
creating a new aggregate object with the new version of the primary object as a new primary facet object and the new version of the mobility object as a new facet object at the new host address and port number.
2. The method of
locking the aggregate object at the current host address and port number in response to the move indication; and
unlocking the aggregate object at the current host address and port number in response to creating the new aggregate object at the new host address and port number.
3. The method of
4. The method of
5. The method of
6. The method of
informing the primary object at the current host address and port number that the primary object is about to be moved in response to the move indication;
performing pre-departure processing by the primary object at the current host address and port number;
determining whether the object is available to move;
vetoing the move in response to determining that the object is not available to move; and
affirming the move in response to determining that the object is available to move.
7. The method of
completing messages currently being processed by the primary object at the current host address and port number; and
suspending new messages arriving at the primary object at the current host address and port number.
8. The method of
9. The method of
storing the new host address and port number in a reference holder at the current host address and port number; and
forwarding messages received at the current host address and port number for the primary object to the new version of the primary object at the new host address and port number.
10. The method of
11. The method of
deregistering the aggregate object and the primary object at the current host address and port number; and
garbage collecting the aggregate object and the primary object at the current host address and port number.
12. The method of
sending a message from a proxy to the primary object at the current host address and port number;
throwing an exception back to the proxy indicating that the primary object has moved to the new host address and port number; and
resending the message from the proxy to the new version of the primary object at the new host address and port number in response to the exception.
13. The method of
sending a message from a proxy to the primary object at the current host address and port number; and
forwarding the message from the current host address and port number to the new version of the primary object at the new host address and port number.
14. The method of
evaluating the sending of the serialized version of the primary object and creating of the new version of the primary object by querying the new version of the primary object to determine if the sending and creating was successful; and
aborting the method for moving objects in response to an unsuccessful sending and creating.
15. The method of
16. The method of
locking the aggregate object at the current host address and port number in response to the move indication;
sending a successful move message from the new aggregate object at the new host address and port number to the aggregate object at the current host address and port number;
unlocking the aggregate object at the current host address and port number;
deregistering the aggregate object and the primary object at the current host address and port number in response to the successful move message;
storing the new host address and port number in a reference holder at the current host address and port number, the reference holder used for forwarding messages received for the primary object at the current host address and port number.
17. The method of
informing the new version of the primary object at the new host address and port number that movement of the aggregate object at the current host address and port number has started;
performing pre-arrival processing by the new version of the primary object at the new host address and port number;
determining whether the new version of the primary object at the new host address and port number authorizes completion of the method for moving objects; and
aborting the method for moving objects in response to a negative authorization from the new version of the primary object at the new host address and port number.
18. The method of
informing the new aggregate object at the new host address and port number that the aggregate object at the current host address and port number has been deregistered;
performing post-arrival processing by the aggregate object at the current host address and port number.
19. The method of
informing the aggregate object at the current host address and port number that creation of the new aggregate object at the new host address and port number has completed;
performing post-departure processing by the aggregate object at the current host address and port number.
0. 21. The method of
serializing the new version of the mobility object prior to sending;
wherein the new version of the mobility object is created at the new host location from the serialized version of the mobility object; and
serializing the new version of the primary object prior to sending;
wherein the new version of the primary object is created at the new host location from the serialized version of the primary object.
0. 22. The method of
0. 23. The method of
0. 24. The method of
locking the aggregate object at the current host location in response to the move indication; and
unlocking the aggregate object at the current host location in response to creating the new aggregate object at the new host location.
0. 25. The method of
0. 26. The method of
0. 27. The method of
informing the primary object at the current host location that the primary object is about to be moved in response to the move indication;
performing pre-departure processing by the primary object at the current host location;
determining whether the primary object is available to move;
vetoing the move in response to determining that the primary object is not available to move; and
affirming the move in response to determining that the primary object is available to move.
0. 28. The method of
completing messages currently being processed by the primary object at the current host location; and
suspending new messages arriving at the primary object at the current host location.
0. 29. The method of
0. 30. The method of
storing the new host location in a reference holder at the current host location; and
forwarding messages received at the current host location for the primary object to the new version of the primary object at the new host location.
0. 31. The method of
0. 32. The method of
deregistering the aggregate object and the primary object at the current host location; and
garbage collecting the aggregate object and the primary object at the current host location.
0. 33. The method of
sending a message from a proxy to the primary object at the current host location;
sending an exception back to the proxy indicating that the primary object has moved to the new host location; and
resending the message from the proxy to the new version of the primary object at the new host location in response to the exception.
0. 34. The method of
sending a message from a proxy to the primary object at the current host location; and
forwarding the message from the current host location to the new version of the primary object at the new host location.
0. 35. The method of
evaluating the sending of the new version of the primary object by querying the new version of the primary object to determine if the sending was successful; and
aborting the method for moving objects in response to an unsuccessful sending.
0. 36. The method of
0. 37. The method of
locking the aggregate object at the current host location in response to the move indication;
receiving a successful move message from the new aggregate object at the new host location at the aggregate object at the current host location;
unlocking the aggregate object at the current host location;
deregistering the aggregate object and the primary object at the current host location in response to the successful move message; and
storing the new host location in a reference holder at the current host location, the reference holder used for forwarding messages received for the primary object at the current host location.
0. 38. The method of
informing the new version of the primary object at the new host location that movement of the aggregate object at the current host location has started;
wherein pre-arrival processing is performed by the new version of the primary object at the new host location;
determining whether the new version of the primary object at the new host location authorizes completion of the method for moving objects; and
aborting the method for moving objects in response to a negative authorization from the new version of the primary object at the new host location.
0. 39. The method of
informing the new aggregate object at the new host location that the aggregate object at the current host location has been deregistered; and
performing post-arrival processing by the aggregate object at the current host location.
0. 40. The method of
informing the aggregate object at the current host location that creation of the new aggregate object at the new host location has completed; and
performing post-departure processing by the aggregate object at the current location.
0. 42. One or more computer-readable storage media as recited in
serialize the new version of the mobility object prior to sending;
create the new version of the mobility object at the new host location from the serialized version of the mobility object;
serialize the new version of the primary object prior to sending; and
create the new version of the primary object at the new host location from the serialized version of the primary object.
0. 43. One or more computer-readable storage media as recited in
0. 44. One or more computer-readable storage media as recited in
lock the aggregate object at the current host location in response to the move indication; and
unlock the aggregate object at the current host location in response to creating the new aggregate object at the new host location.
0. 45. One or more computer-readable storage media as recited in
0. 46. One or more computer-readable storage media as recited in
0. 47. One or more computer-readable storage media as recited in
inform the primary object at the current host location that the primary object is about to be moved in response to the move indication;
perform pre-departure processing by the primary object at the current host location;
determine whether the primary object is available to move;
veto the move in response to determining that the primary object is not available to move; and
computer readable program code configured to affirm the move in response to determining that the primary object is available to move.
0. 48. One or more computer-readable storage media as recited in
complete messages currently being processed by the primary object at the current host location; and
suspend new messages arriving at the primary object at the current host location.
0. 49. One or more computer-readable storage media as recited in
0. 50. One or more computer-readable storage media as recited in
store the new host location in a reference holder at the current host location; and
forward messages received at the current host location for the primary object to the new version of the primary object at the new host location.
0. 51. One or more computer-readable storage media as recited in
0. 52. One or more computer-readable storage media as recited in
deregister the aggregate object and the primary object at the current host location; and
garbage collect the aggregate object and the primary object at the current host location.
0. 53. One or more computer-readable storage media as recited in
send a message from a proxy to the primary object at the current host location;
throw send an exception back to the proxy indicating that the primary object has moved to the new host location; and
resend the message from the proxy to the new version of the primary object at the new host location in response to the exception.
0. 54. One or more computer-readable storage media as recited in
send a message from a proxy to the primary object at the current host location; and
forward the message from the current host location to the new version of the primary object at the new host location.
0. 55. One or more computer-readable storage media as recited in
evaluate the sending of the new version of the primary object by querying the new version of the primary object to determine if the sending was successful; and
abort the method for moving objects in response to an unsuccessful sending.
0. 56. One or more computer-readable storage media as recited in
0. 57. One or more computer-readable storage media as recited in
lock the aggregate object at the current host location in response to the move indication;
send a successful move message from the new aggregate object at the new host location to the aggregate object at the current host location;
unlock the aggregate object at the current host location;
deregister the aggregate object and the primary object at the current host location in response to the successful move message; and
store the new host location in a reference holder at the current host location, the reference holder used for forwarding messages received for the primary object at the current host location.
0. 58. One or more computer-readable storage media as recited in
inform the new version of the primary object at the new host location that movement of the aggregate object at the current host location has started;
perform pre-arrival processing by the new version of the primary object at the new host location;
determine whether the new version of the primary object at the new host location authorizes completion of the method for moving objects; and
abort the method for moving objects in response to a negative authorization from the new version of the primary object at the new host location.
0. 59. One or more computer-readable storage media as recited in
inform the new aggregate object at the new host location that the aggregate object at the current host location has been deregistered; and
perform post-arrival processing by the aggregate object at the current host location.
0. 60. One or more computer-readable storage media as recited in
inform the aggregate object at the current host location that creation of the new aggregate object at the new host location has completed; and
perform post-departure processing by the aggregate object at the current location.
0. 62. The method of
serializing the new version of the mobility object prior to sending;
wherein the new version of the mobility object is created at the new host location from the serialized version of the mobility object; and
serializing the new version of the primary object prior to sending;
wherein the new version of the primary object is created at the new host location from the serialized version of the primary object.
0. 63. The method of
0. 64. The method of
locking the aggregate object at the current host location in response to the move indication; and
unlocking the aggregate object at the current host location in response to creating the new aggregate object at the new host location.
0. 65. The method of
0. 66. The method of
0. 67. The method of
informing the primary object at the current host location that the primary object is about to be moved in response to the move indication;
performing pre-departure processing by the primary object at the current host location;
determining whether the primary object is available to move;
vetoing the move in response to determining that the primary object is not available to move; and
affirming the move in response to determining that the primary object is available to move.
0. 68. The method of
completing messages currently being processed by the primary object at the current host location; and
suspending new messages arriving at the primary object at the current host location.
0. 69. The method of
0. 70. The method of
storing the new host location in a reference holder at the current host location; and
forwarding messages received at the current host location for the primary object to the new version of the primary object at the new host location.
0. 71. The method of
0. 72. The method of
deregistering the aggregate object and the primary object at the current host location; and
garbage collecting the aggregate object and the primary object at the current host location.
0. 73. The method of
sending a message from a proxy to the primary object at the current host location;
sending an exception back to the proxy indicating that the primary object has moved to the new host location; and
resending the message from the proxy to the new version of the primary object at the new host location in response to the exception.
0. 74. The method of
sending a message from a proxy to the primary object at the current host location; and
forwarding the message from the current host location to the new version of the primary object at the new host location.
0. 75. The method of
evaluating the sending of the new version of the primary object by querying the new version of the primary object to determine if the sending was successful; and
aborting the method for moving objects in response to an unsuccessful sending.
0. 76. The method of
0. 77. The method of
locking the aggregate object at the current host location in response to the move indication;
receiving a successful move message from the new aggregate object at the new host location at the aggregate object at the current host location;
unlocking the aggregate object at the current host location;
deregistering the aggregate object and the primary object at the current host location in response to the successful move message; and
storing the new host location in a reference holder at the current host location, the reference holder used for forwarding messages received for the primary object at the current host location.
0. 78. The method of
informing the new version of the primary object at the new host location that movement of the aggregate object at the current host location has started;
wherein pre-arrival processing is performed by the new version of the primary object at the new host location;
determining whether the new version of the primary object at the new host location authorizes completion of the method for moving objects; and
aborting the method for moving objects in response to a negative authorization from the new version of the primary object at the new host location.
0. 79. The method of
informing the new aggregate object at the new host location that the aggregate object at the current host location has been deregistered; and
performing post-arrival processing by the aggregate object at the current host location.
0. 80. The method of
informing the aggregate object at the current host location that creation of the new aggregate object at the new host location has completed; and
performing post-departure processing by the aggregate object at the current location.
0. 82. One or more computer-readable storage media as recited in
serialize the new version of the mobility object prior to sending;
create the new version of the mobility object at the new host location from the serialized version of the mobility object;
serialize the new version of the primary object prior to sending; and
create the new version of the primary object at the new host location from the serialized version of the primary object.
0. 83. One or more computer-readable storage media as recited in
0. 84. One or more computer-readable storage media as recited in
lock the aggregate object at the current host location in response to the move indication; and
unlock the aggregate object at the current host location in response to creating the new aggregate object at the new host location.
0. 85. One or more computer-readable storage media as recited in
0. 86. One or more computer-readable storage media as recited in
0. 87. One or more computer-readable storage media as recited in
inform the primary object at the current host location that the primary object is about to be moved in response to the move indication;
perform pre-departure processing by the primary object at the current host location;
determine whether the primary object is available to move;
veto the move in response to determining that the primary object is not available to move; and
affirm the move in response to determining that the primary object is available to move.
0. 88. One or more computer-readable storage media as recited in
complete messages currently being processed by the primary object at the current host location; and
suspend new messages arriving at the primary object at the current host location.
0. 89. One or more computer-readable storage media as recited in
0. 90. One or more computer-readable storage media as recited in
store the new host location in a reference holder at the current host location; and
forward messages received at the current host location for the primary object to the new version of the primary object at the new host location.
0. 91. One or more computer-readable storage media as recited in
0. 92. One or more computer-readable storage media as recited in
deregister the aggregate object and the primary object at the current host location; and
garbage collect the aggregate object and the primary object at the current host location.
0. 93. One or more computer-readable storage media as recited in
send a message from a proxy to the primary object at the current host location;
send an exception back to the proxy indicating that the primary object has moved to the new host location; and
resend the message from the proxy to the new version of the primary object at the new host location in response to the exception.
0. 94. One or more computer-readable storage media as recited in
send a message from a proxy to the primary object at the current host location; and
forward the message from the current host location to the new version of the primary object at the new host location.
0. 95. One or more computer-readable storage media as recited in
evaluate the sending of the new version of the primary object by querying the new version of the primary object to determine if the sending was successful; and
abort the method for moving objects in response to an unsuccessful sending.
0. 96. One or more computer-readable storage media as recited in
0. 97. One or more computer-readable storage media as recited in
lock the aggregate object at the current host location in response to the move indication;
send a successful move message from the new aggregate object at the new host location to the aggregate object at the current host location;
unlock the aggregate object at the current host location;
deregister the aggregate object and the primary object at the current host location in response to the successful move message; and
store the new host location in a reference holder at the current host location, the reference holder used for forwarding messages received for the primary object at the current host location.
0. 98. One or more computer-readable storage media as recited in
inform the new version of the primary object at the new host location that movement of the aggregate object at the current host location has started;
perform pre-arrival processing by the new version of the primary object at the new host location;
determine whether the new version of the primary object at the new host location authorizes completion of the method for moving objects; and
abort the method for moving objects in response to a negative authorization from the new version of the primary object at the new host location.
0. 99. One or more computer-readable storage media as recited in
inform the new aggregate object at the new host location that the aggregate object at the current host location has been deregistered; and
perform post-arrival processing by the aggregate object at the current host location.
0. 100. One or more computer-readable storage media as recited in
inform the aggregate object at the current host location that creation of the new aggregate object at the new host location has completed; and
perform post-departure processing by the aggregate object at the current location.
|
The present invention relates in general to object-oriented technologies and more particularly to a method for moving objects in a distributed computing environment.
In object oriented programming, real world objects are modeled by software objects that have encapsulated therein special procedures and data elements. In object-oriented programming terminology, procedures are referred to as methods. To avoid having to redefine the same methods and data members for each and every occurrence of an object, object-oriented programming provides the concept of classes. An inherent structure of one or more levels of increasingly more specialized classes is created to provide templates that define the methods and variables to be included in the objects of each class. The classes at the lower levels of the inheritance structure inherit the behavior, methods, and variables of the classes above. Classes above a certain class in an inheritance structure are referred to as parent classes setting up a parent-child relationship. Therefore, an object belonging to a class is a member of that class, and contains the special behavior defined by the class. In this manner, each object is an instance of a defined class or template and the need to redefine the methods and data members for each occurrence of the object is eliminated.
One example of an object-oriented programming language is Java, developed by Sun Microsystems. To define a class in Java, the programmer creates a .java file containing the source code to define the class. The .java file is compiled to create a .class file containing the executable code to define the class. Instances of the class file are instantiated to create an object containing data and methods defined by the .class file.
Object-oriented programming is a method of programming that abstracts a computer program into manageable sections. The key to object-oriented programming is the concept of encapsulation. Encapsulation is a method by which the subroutines, or methods, that manipulate data are combined with the declaration and storage of that data. This encapsulation prevents the data from arbitrarily being accessed by other programs' subroutines, or objects. When an object is invoked, the associated data is available and can be manipulated by any of the methods that are defined within an object to act upon the data.
The basic component of encapsulation is a class. A class is an abstraction for a set of objects that share the same structure and behavior. An object is a single instance of a class that retains the structure and behavior of the class. Objects also contain methods that are the processes by which an object is instructed to perform some procedure or manipulation of data that it controls. Classes may also be characterized by their interface which defines the elements necessary for proper communication between objects.
Often, a programmer needs to add functionality to an existing class of objects but either does not want to change the existing .class file or does not have access to the source code and, therefore, does not have the ability to alter the source code. In addition, the programmer may not want to alter the functionality of the existing .class file since a .class file may be used in more than one application program. Therefore, it is desirable to add functionality to an existing class of objects during the execution of an application program without altering the associated source code.
Distributed computing allows an object on one computer system to seamlessly communicate with and manipulate an object contained in a second computer system when the two computer systems are connected by a computer network. The second computer system may also be referred to as another address space. Client/server systems are an example of this type of distributed computing system. Sophisticated distributed computing systems have removed the communications burden from the computer programs, or objects in an object oriented programming environment, and placed it in a mid-level operating system that manages communications across a computer network to facilitate a client's access to and manipulation of data contained on a server system. The server system could be a computer in a different address space and remote to a user on a client system.
In distributed processing environments, objects in different address spaces may exchange a large number of messages. Using traditional distributed processing communications techniques may lead to slow response time and increased network traffic. Moving a first object to the same address space as a second object makes communications between the two objects local and, therefore, reduces network traffic. Local messages are often at least one thousand times faster than remote messages sent through the distributed computing system.
From the foregoing, it may be appreciated that a need has arisen for a method for moving objects in a distributed computing environment. In accordance with the present invention, an improved method for moving objects in a distributed computing environment is provided that substantially eliminate or reduce disadvantages and problems associated with conventional methods for moving objects in a distributed computing environment.
According to an embodiment of the present invention, there is provided a method for moving objects in a distributed computing system that includes receiving a move indication at a mobility object. The mobility object is aggregated with the primary object through an aggregate object located at a current host address and port number. The move indication instructs the mobility object to move the primary object to a new host address and port number. The aggregate object has the primary object as a primary facet object and the mobility object can then determine which facet object 28 in the returned reference list to invoke.
If no facet object 28 exists that has a class that equals or extends the requested class or implements the requested interface, a not-found condition is returned to application program 12 as a null reference. Application program 12 can then determine whether a new aggregate object 14 should be created, whether an object should be added to an existing aggregate object 14 as an additional facet object 28, or whether appropriate error handling procedures should be performed.
Referring to
In system 40, application program 12, facet control module 30, aggregate object 14, set of facets 32 and primary facet object 16 all exist within a first environment 42. First facet object 20 exists within a second environment 44. Communications between aggregate object 14 and first facet object 20 are facilitated by using an appropriate distributed processing system such as an object request broker. In one embodiment, a first facet object proxy 46 resides in first environment 42 and is logically coupled to first facet object 20 in second environment 44. First facet object proxy 46 may be a conventional proxy object created from first facet object 20. First facet object proxy 46 has an interface 47 modeled on first interface 22. Interface 47 has a format and needed information similar to first interface 22. Second facet object 24 resides in a third environment 48. Communications between aggregate object 14 and second facet object 24 are facilitated by using an appropriate distributed processing system such as an object recognition broker. In one embodiment, a second facet object proxy 50 resides in first environment 42 and provides communications between aggregate object 14 and second facet object 24. Second facet object proxy 50 may be a conventional proxy object created from second facet object 24. Second facet object proxy 50 has an interface modeled on second interface 26. Interface 51 has a format and needed information similar to second interface 26.
Referring to
Referring to
In one embodiment, the following syntax may be used to create an aggregate object 14:
Facets myFacets=new Facets (myPrimary);
where myPrimary identifies an existing object which will become primary facet object 16 within the newly created aggregate object 14 identified as myFacets. Facet control module 30 creates an aggregate object 14 identified as myFacets. Next, facet control module 30 creates a primary facet 34 identified as primaryFacet. Primary facet 34 is linked to aggregate object 14. Next, facet control module 30 creates a primary facet object 16 identified as myPrimary. Primary facet object 16 is linked to primary facet 34. Facet control module 30 creates primary facet 34 such that primary facet 34 contains the class of primary facet object 16 and the interfaces implemented by primary facet object 16.
Referring to
myfacets.get (“class name”);
where myfacets.get identifies the aggregate object 14 (myfacets) and the operation (get) for class/interface finder 76. The class name in the above example may also identify a requested interface name. The method proceeds to step 124 where a facet reference is set to aggregate object's 14 primary facet, primary facet 34. Primary facet 34 should be the first facet in the set of facets 32.
The method proceeds to decisional step 125 where class/interface finder 76 determines if the facet referenced by facet-reference has a class that equals the requested class, has a class that extends the requested class, or implements the requested interface. If the facet in the set of facets 32 identified by the facet-reference meets one of the above tests, the Yes branch of decisional step 125 proceeds to step 126 where class/interface finder 76 returns a reference to the facet in the set of facets 32 identified by the facet-reference. The method proceeds to step 128 where application program 12 uses the returned reference to identify the facet object 28 through the reference to a facet in the set of facets 32. Application program 12 then invokes the facet object 28. After step 128, the method terminates.
Returning to decisional step 125, if the facet in the set of facets 32 identified by the facet-reference does not meet one of the aforementioned tests, the No branch of decisional step 125 proceeds to decisional step 130 where class/interface finder 76 determines whether aggregate object 14 has more facets within its associated set of facets 32. If the set of facets 32 includes more facets, the Yes branch of decisional step 130 proceeds to step 132 where the facet-reference is set to the next facet, first facet 36 in this example, in the set of facets 32 associated with aggregate object 14. The method returns to decisional step 125 to process the next facet identified by the facet-reference.
Returning to decisional step 130, if the set of facets 32 associated with aggregate object 14 does not include more facets, the No branch of decisional step 130 proceeds to step 134 where a null reference is returned. Application program 12 would then perform appropriate error processing upon receipt of the null reference. After step 134, the method terminates.
Referring to
myFacets.of (“class name”);
where the desired aggregate object 14 is identified (myFacets) and the desired operation is also identified (.of). “Class name” refers to an existing .class file. When adding facet objects to aggregate object 14, class names should be used so that an instance of the class may be generated and added to aggregate object 14 as a facet object 28.
The method proceeds to step 154 where the method of
The method proceeds to decisional step 156 where a determination is made regarding whether a null reference was returned. If a null reference was not returned, the No branch of decisional step 156 proceeds to step 158 where the reference received from step 126 in the method of
Returning to decisional step 156, if a null reference is received, the Yes branch of decisional step 156 proceeds to step 160 where object adder 72 creates an instance of the requested class. The method proceeds to step 162 where object adder 72 creates a new facet for the instance of the requested class. Object adder 72 creates the new facet by adding the requested class and the interfaces implemented by that class to the new facet. The new facet is an object that summarizes available information regarding the associated facet object that in this example is the created instance of the requested class. The new facet becomes a member of the set of facets 32 associated with the aggregate object 14.
The method proceeds to step 164 where object adder 72 links the instance of the requested class created in step 160 to the new facet created in step 162. The method proceeds to step 166 where object adder 72 links the new facet created in step 162 to the aggregate object 14. The method proceeds to step 168 where a reference to the new facet created in step 162 is returned. After step 168, the method terminates.
In one embodiment, the facets.of command that is used to add objects to an existing aggregate object 14 may be used by software developers when they have determined that a requested class should be part of aggregate object 14 but they are not sure that the requested class has been added to facet objects 28 that are associated with aggregate object 14. By using this type of command, the software developer requests a facet object 28 that has a class that equals or extends a requested class and is guaranteed that a reference to a facet object 28 will be returned.
In addition to the above-referenced sample commands, one embodiment of the present invention includes the following command to determine the primary facet object 16 of aggregate object 14:
myFacets.getPrimary ( );
where the desired aggregate object 14 is identified as myFacets and the desired operation is identified as getPrimary. The sample command returns a reference to primary facet object 16.
Another sample command from one embodiment of the present invention includes the following command to determine the members of set of facets 32 associated with aggregate object 14;
myFacets.getFacets ( );
where the desired aggregate object 14 is identified as myfacets and the desired operation is identified as getfacets. The sample command returns a list of each facet object 28 associated with aggregate object 14.
Object deleter 74 of facet control module 30 provides a software developer with the ability to delete a specified object from facet objects 28. The software developer identifies the particular facet object 28 to be removed from aggregate object 14 and instructs facet control module 30 to remove the specified facet object from aggregate object 14. Object deleter 74 physically deletes the associated facet in set of facets 32 and removes the link between the specified facet object and aggregate object 14. If the specified facet object has no remaining references, an operating system of the object oriented environment may remove the specified facet object from the object oriented environment during a garbage collection procedure.
An object may be made mobile within a distributed processing environment by defining the object as a primary facet object 16 linked to an aggregate object 14 and aggregating a mobility object as a second facet object 24 as previously described. To move an object from one address space to another address space, a mobility method is invoked within aggregate object 14. As previously described, aggregate object 14 then locates the facet without one or more facet objects 28 that provides the requested method. The mobility method may be invoked directly on the mobility facet object. In that case, the mobility facet object informs the aggregate object that the mobility method has been invoked. In another embodiment, the functionality of mobility is built into the object. To cause that object to move from one address space to another address space, a mobility method is invoked on the object.
Referring to
The movement process begins in
In response to move indication 224, the move operation continues in
The move operation continues in
The move operation continues at
The move operation continues at
The move operation continues at
Messages that were blocked by lock object 230 are released and forwarded as necessary to new host address and port number 234 as discussed in detail with relation to
Referring to
The forwarding operation continues at
Reference holder 302 receives message MSG and determines that it is a remote message. In one embodiment, a remote message is determined by comparing the host address of the object originating the message with the host address of the reference holder 302. After determining that message MSG2 is a remote message, reference holder 302 throws an “object moved” exception to object 310. Object 310 catches the “object moved” exception and resends message MSG2 to new host address and port number 316 identified in the “object moved” exception. All future messages from object 310 are sent directly to object 314 at new host address and port number 316. By using the “object moved” exception, messages destined for a target object do not pass through an intermediate host address thereby making communications between objects more efficient.
Referring to
After new aggregate group 244 registers at new host address and port number 234 but prior to aggregate group 200 disconnecting its component parts, a post-departure callback notification may be sent to primary facet object 204. At this point, the component parts of aggregate group 200 are considered stale since a new active aggregate group 244 exists at new host address and port number 234. The post-departure callback notification allows aggregate group 200 to perform internal final processing before its component parts are delinked and garbage collected and prior to unblocking any messages at current host address and port number 222.
Thus, it is apparent that there has been provided in accordance with the present invention, a method for moving objects in a distributed computing environment that satisfies the advantages set forth above. Although the present invention and its advantages have been described in detail, it should be understood that various changes, substitutions, and alterations may be readily apparent to those skilled in the art and may be made herein without departing from the spirit and the scope of the present invention as defined by the following claims.
Glass, Graham W., Wensel, Chris K.
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
5325524, | Apr 06 1989 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Locating mobile objects in a distributed computer system |
5341478, | Aug 14 1990 | Oracle International Corporation | Methods and apparatus for providing dynamic invocation of applications in a distributed heterogeneous environment |
5396630, | Oct 06 1992 | International Business Machines Corporation | Method and system for object management across process boundries in a data processing system |
5432924, | Dec 15 1993 | Microsoft Technology Licensing, LLC | Method and system for selectively applying an appropriate object ownership model |
5481721, | Jul 17 1991 | NEXT SOFTWARE, INC | Method for providing automatic and dynamic translation of object oriented programming language-based message passing into operation system message passing using proxy objects |
5511197, | Nov 13 1992 | Microsoft Technology Licensing, LLC | Method and system for network marshalling of interface pointers for remote procedure calls |
5577251, | Dec 21 1992 | Sun Microsystems, Inc. | Object oriented system for executing application call by using plurality of client-side subcontract mechanism associated with corresponding plurality of server-side subcontract mechanism |
5603031, | Jul 08 1993 | Intellectual Ventures I LLC | System and method for distributed computation based upon the movement, execution, and interaction of processes in a network |
5619710, | Aug 14 1990 | Oracle International Corporation | Method and apparatus for object-oriented invocation of a server application by a client application |
5634010, | Oct 21 1994 | Corps of Discovery Patent Holding LLC | Managing and distributing data objects of different types between computers connected to a network |
5655101, | Jun 01 1993 | IBM Corporation | Accessing remote data objects in a distributed memory environment using parallel address locations at each local memory to reference a same data object |
5724503, | Mar 31 1995 | Sun Microsystems, Inc. | Method and apparatus for interpreting exceptions in a distributed object system |
5737607, | Sep 28 1995 | Oracle America, Inc | Method and apparatus for allowing generic stubs to marshal and unmarshal data in object reference specific data formats |
5745703, | Jul 18 1995 | NEC Corporation | Transmission of higher-order objects across a network of heterogeneous machines |
5778227, | Aug 01 1995 | Intergraph Software Technologies Company | System for adding attributes to an object at run time in an object oriented computer environment |
5781633, | Jul 01 1996 | Oracle America, Inc | Capability security for transparent distributed object systems |
5787175, | Oct 23 1995 | JPMORGAN CHASE BANK, N A , AS SUCCESSOR AGENT | Method and apparatus for collaborative document control |
5793965, | Mar 22 1995 | Sun Microsystems, Inc. | Method and apparatus for determining the type of an object in a distributed object system |
5812781, | Sep 05 1994 | Telefonaktiebolaget LM Ericsson | System for routing incoming connection-less messages to processes which are already handling messages from same source node |
5812793, | Jun 26 1996 | Microsoft Technology Licensing, LLC | System and method for asynchronous store and forward data replication |
5822585, | Feb 21 1995 | BMC SOFTWARE, INC | System and method for cooperative processing using object-oriented framework |
5848419, | Mar 31 1995 | Sun Microsystems, Inc. | Methods and apparatus for providing transparent persistence in a distributed object operating environment |
5862325, | Feb 29 1996 | Intermind Corporation | Computer-based communication system and method using metadata defining a control structure |
5867665, | Mar 24 1997 | Cisco Technology, Inc | Domain communications server |
5881230, | Jun 24 1996 | Microsoft Technology Licensing, LLC | Method and system for remote automation of object oriented applications |
5897634, | May 09 1997 | International Business Machines Corporation | Optimized caching of SQL data in an object server system |
5903725, | Sep 15 1995 | International Business Machines Corporation | Recoverable proxy object in an object oriented environment |
5928335, | Oct 30 1996 | Ricoh Company, Ltd. | Client/server system having middleware-based interface between client and server image processing objects |
5956737, | Sep 09 1996 | Microsoft Technology Licensing, LLC | Design engine for fitting content to a medium |
5983233, | Aug 20 1996 | Alcatel | Process for managing the naming of objects, process for mapping an object name to a CORBA object reference, program module, computer unit, and computer system |
5987506, | Nov 22 1996 | GOOGLE LLC | Remote access and geographically distributed computers in a globally addressable storage environment |
5999988, | Mar 31 1997 | Oracle America, Inc | Method and apparatus for generating and employing a run-time generated stub to reference an object in object oriented systems |
6006018, | Oct 03 1995 | SNAPCHAT, INC | Distributed file system translator with extended attribute support |
6012067, | Mar 02 1998 | Method and apparatus for storing and manipulating objects in a plurality of relational data managers on the web | |
6012081, | Jul 03 1996 | Siemens Healthcare GmbH | Service and event synchronous/asynchronous manager |
6016393, | Jul 08 1993 | Intellectual Ventures I LLC | System and method for distributed computation based upon the movement, execution, and interaction of processes in a network |
6026415, | Jan 31 1995 | Apple Inc | Transparent local and distributed memory management system |
6032190, | Oct 03 1997 | Ascend Communications, Inc. | System and method for processing data packets |
6041166, | Jul 14 1995 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Virtual network architecture for connectionless LAN backbone |
6044409, | Jun 26 1996 | Oracle America, Inc | Framework for marshaling and unmarshaling argument object references |
6061740, | Dec 09 1996 | RPX Corporation | Method and apparatus for heterogeneous network management |
6085030, | May 02 1997 | RPX Corporation | Network component server |
6085086, | Aug 22 1995 | THE CHASE MANHATTAN BANK, AS COLLATERAL AGENT | Network-based migrating user agent for personal communication services |
6092196, | Nov 25 1997 | RPX CLEARINGHOUSE LLC | HTTP distributed remote user authentication system |
6134591, | Jun 18 1997 | SECURITECH LLC | Network security and integration method and system |
6138235, | Jun 29 1998 | Oracle America, Inc | Controlling access to services between modular applications |
6138251, | Jun 30 1997 | Oracle America, Inc | Method and system for reliable remote object reference management |
6141759, | Dec 10 1997 | BMC SOFTWARE, INC | System and architecture for distributing, monitoring, and managing information requests on a computer network |
6151639, | Jun 19 1997 | Sun Microsystems, Inc. | System and method for remote object invocation |
6157960, | May 07 1997 | International Business Machines Corporation; IBM Corporation | Technique for programmatically creating distributed object programs |
6178505, | Mar 10 1997 | DROPBOX, INC | Secure delivery of information in a network |
6182153, | Feb 17 1995 | IBM Corporation | Object-oriented programming interface for developing and running network management applications on a network communication infrastructure |
6182154, | Nov 21 1994 | International Business Machines Corporation | Universal object request broker encapsulater |
6182155, | May 09 1997 | International Business Machines Corporation | Uniform access to and interchange between objects employing a plurality of access methods |
6195794, | Aug 12 1997 | International Business Machines Corp | Method and apparatus for distributing templates in a component system |
6205491, | Dec 18 1997 | Sun Microsystems, Inc | Method and apparatus for deferred throwing of exceptions in C++ |
6212574, | Apr 04 1997 | Microsoft Technology Licensing, LLC | User mode proxy of kernel mode operations in a computer operating system |
6230160, | Jul 17 1997 | International Business Machines Corporation | Creating proxies for distributed beans and event objects |
6237135, | Jun 18 1998 | Borland Software Corporation | Development system with visual design tools for creating and maintaining Java Beans components |
6253253, | Aug 25 1997 | International Business Machines Corporation | Method and apparatus for optimizing references to objects in a data processing system |
6253256, | Oct 15 1997 | Oracle America, Inc | Deferred reconstruction of objects and remote loading in a distributed system |
6260078, | Jul 03 1996 | Oracle America, Inc | Using a distributed object system to find and download java-based applications |
6269373, | Feb 26 1999 | International Business Machines Corporation | Method and system for persisting beans as container-managed fields |
6282580, | Jul 02 1996 | Oracle America, Inc | Bridge providing communication between different implementations of object request brokers |
6304918, | Mar 11 1997 | Microsoft Technology Licensing, LLC | Object interface control system |
6321275, | |||
6324543, | Mar 06 1998 | International Business Machines Corporation; IBM Corporation | Dynamic object migration method using proxy object links to support automatic object distribution in an object-oriented environment |
6338089, | Oct 06 1998 | Bull HN Information Systems Inc.; BULL HN INFORMATION SYSTEMS INC | Method and system for providing session pools for high performance web browser and server communications |
6343332, | Oct 20 1997 | Fujitsu Limited | Communication link information generating device, a three-tier client/server system, and a medium storing a communication link information generator program |
6345382, | Feb 12 1998 | International Business Machines Corporation | Run-time customization in object-oriented design |
6347341, | Feb 22 1999 | International Business Machines Corporation | Computer program product used for exchange and transfer of data having a siga vector and utilizing a queued direct input-output device |
6347342, | Jul 15 1996 | NeXT Software, Inc. | Method and apparatus for dynamically brokering object messages among object models |
6356930, | Oct 16 1998 | Oracle International Corporation | Connection concentrator for distributed object systems |
6374308, | Apr 23 1996 | Oracle America, Inc | Method and apparatus for interactively connecting distributed objects to a graphic user interface |
6385661, | Oct 19 1998 | TUMBLEWEED HOLDINGS LLC | System and method for dynamic generation of remote proxies |
6405246, | Sep 22 1998 | International Business Machines Corporation | Automatic and dynamic software code management |
6415315, | Dec 01 1997 | HANGER SOLUTIONS, LLC | Method of moving objects in a computer network |
6434595, | Nov 26 1997 | International Business Machines Corporation | Method of executing mobile objects and recording medium storing mobile objects |
6438616, | Dec 18 1997 | Oracle America, Inc | Method and apparatus for fast, local corba object references |
6442620, | Aug 17 1998 | Microsoft Technology Licensing, LLC | Environment extensibility and automatic services for component applications using contexts, policies and activators |
6446084, | Sep 22 1998 | Oracle America, Inc | Optimizing symbol table lookups in platform-independent virtual machines |
6453333, | Jun 11 1997 | Lion Bioscience AG; NETGENICS | Research system using multi-platform object oriented program language for providing objects at runtime for creating and manipulating biological or chemical data to facilitate research |
6496871, | Jun 30 1998 | NEC Corporation | Distributed agent software system and method having enhanced process mobility and communication in a computer network |
6513157, | Nov 30 1999 | Xylon LLC | System and method for dynamically aggregating objects |
6549955, | Oct 19 1998 | TUMBLEWEED HOLDINGS LLC | System and method for dynamic generation of remote proxies |
6567861, | Sep 17 1997 | International Business Machines Corporation | Method and apparatus for remotely running objects using data streams and/or complex parameters |
6601018, | Feb 04 1999 | International Business Machines Corporation | Automatic test framework system and method in software component testing |
6629128, | Nov 30 1999 | MEC MANAGEMENT, LLC | System and method for distributed processing in a computer network |
6701382, | Dec 23 1998 | RPX CLEARINGHOUSE LLC | Name service for transparent container objects |
6714976, | Mar 20 1997 | GOOGLE LLC | Systems and methods for monitoring distributed applications using diagnostic information |
6851118, | Oct 06 1997 | Oracle America, Inc | Remote object access |
6931455, | Nov 30 1999 | MEC MANAGEMENT, LLC | System and method for communications between a CORBA object request broker and a non-CORBA object request broker |
6947965, | Nov 30 1999 | DATACLOUD TECHNOLOGIES, LLC | System and method for communications in a distributed computing environment |
6951021, | Nov 30 1999 | MEC MANAGEMENT, LLC | System and method for server-side communication support in a distributed computing environment |
6993774, | Oct 19 1998 | TUMBLEWEED HOLDINGS LLC | System and method for remote enabling classes without interfaces |
7347342, | Oct 30 2003 | Container for holding sterile goods and sterile goods dispenser | |
20010003824, | |||
EP727739, | |||
GB2326255, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Oct 11 1998 | GUTHRIE, RHETT DAVIS | OBJECTSPACE, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 020111 | /0822 | |
Oct 11 1998 | GLASS, GRAHAM W | OBJECTSPACE, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 020111 | /0822 | |
Feb 14 2002 | OBJECTSPACE, INC | RECURSION SOFTWARE, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 020121 | /0928 | |
Jun 21 2005 | RECURSION SOFTWARE, INC | MAINLINE DATA LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 020121 | /0966 | |
Aug 13 2015 | MAINLINE DATA LLC | Xylon LLC | MERGER SEE DOCUMENT FOR DETAILS | 037053 | /0611 |
Date | Maintenance Fee Events |
Jan 13 2011 | ASPN: Payor Number Assigned. |
Jun 22 2011 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Jun 24 2015 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Sep 14 2013 | 4 years fee payment window open |
Mar 14 2014 | 6 months grace period start (w surcharge) |
Sep 14 2014 | patent expiry (for year 4) |
Sep 14 2016 | 2 years to revive unintentionally abandoned end. (for year 4) |
Sep 14 2017 | 8 years fee payment window open |
Mar 14 2018 | 6 months grace period start (w surcharge) |
Sep 14 2018 | patent expiry (for year 8) |
Sep 14 2020 | 2 years to revive unintentionally abandoned end. (for year 8) |
Sep 14 2021 | 12 years fee payment window open |
Mar 14 2022 | 6 months grace period start (w surcharge) |
Sep 14 2022 | patent expiry (for year 12) |
Sep 14 2024 | 2 years to revive unintentionally abandoned end. (for year 12) |