USRE41706E1 - Moving objects in a distributed computing environment - Google Patents

Moving objects in a distributed computing environment Download PDF

Info

Publication number
USRE41706E1
USRE41706E1 US11/331,418 US33141806A USRE41706E US RE41706 E1 USRE41706 E1 US RE41706E1 US 33141806 A US33141806 A US 33141806A US RE41706 E USRE41706 E US RE41706E
Authority
US
United States
Prior art keywords
new
host location
primary object
aggregate
primary
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
US11/331,418
Inventor
Graham W. Glass
Chris K. Wensel
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xylon LLC
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to US11/331,418 priority Critical patent/USRE41706E1/en
Assigned to OBJECTSPACE, INC. reassignment OBJECTSPACE, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: GLASS, GRAHAM W., GUTHRIE, RHETT DAVIS
Assigned to MAINLINE DATA LLC reassignment MAINLINE DATA LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: RECURSION SOFTWARE, INC.
Assigned to RECURSION SOFTWARE, INC. reassignment RECURSION SOFTWARE, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: OBJECTSPACE, INC.
Application granted granted Critical
Publication of USRE41706E1 publication Critical patent/USRE41706E1/en
Assigned to XYLON LLC reassignment XYLON LLC MERGER (SEE DOCUMENT FOR DETAILS). Assignors: MAINLINE DATA LLC
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • G06F9/4862Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/4492Inheritance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/4493Object persistence

Definitions

  • the present invention relates in general to object-oriented technologies and more particularly to a method for moving objects in a distributed computing environment.
  • object-oriented programming real world objects are modeled by software objects that have encapsulated therein special procedures and data elements.
  • procedures are referred to as methods.
  • 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.
  • Java developed by Sun Microsystems.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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 has as a facet object.
  • the method then creates a serialized version of the mobility object in response to the move indication.
  • the method then sends the serialized version of the mobility object to the new host address and port number and creates a new version of the mobility object at the new host address and port number from the serialized version of the mobility object.
  • the method then creates a serialized version of the primary object in response to a serialize and move message received from the new version of the mobility object.
  • the method then sends the serialized version of the primary object to the new host address and port number and creates a new version of the primary object at the new host address and port number from the serialized version of the primary object.
  • the method then creates 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.
  • the present invention provides various technical advantages over conventional methods for moving objects in a distributed computing environment. For example, one technical advantage is providing a method for objects that exchange a large number of messages to move to a common computer to reduce the amount of time needed for communications and to conserve system resources. Other technical advantages may be readily apparent to one skilled in the art from the following figures, description, and claims.
  • FIG. 1 illustrates a block diagram of an application program utilizing aggregate objects
  • FIG. 2 illustrates a block diagram of the application program utilizing aggregate objects where facet objects are distributed in different processing environments
  • FIG. 3 illustrates a block diagram of a facet control module used within the application program
  • FIG. 4 illustrates a flow diagram illustrating creation of aggregate objects
  • FIG. 5 illustrates a flow diagram illustrating a method of locating an object that extends a requested class or implements a requested interface
  • FIG. 6 illustrates a flow diagram illustrating a method for adding a class to an aggregate object
  • FIGS. 7A-7F illustrate an exemplary process for moving an object from one host address and port number to another host address and port number within a computer network
  • FIGS. 8A-8B illustrate an exemplary process for forwarding messages by a reference holder
  • FIGS. 9A-9C illustrate various move notifications that may occur while moving the object from one host address and port number to another host address and port number within the computer network.
  • an application program using dynamically aggregated objects is generally indicated at 10 .
  • An application program 12 may access one or more aggregate objects 14 through a facet control module 30 .
  • Aggregate object 14 includes a set of facets 32 that may contain one or more facets such as a primary facet 34 , a first facet 36 , and a second facet 38 .
  • One or more facet objects 28 are linked to the set of facets 32 in a one to one correspondence.
  • a primary facet object 16 having a primary interface 18 is linked to primary facet 34
  • a first facet object 20 having a first interface 22 is linked to first facet 36
  • a second facet object 24 having a second interface 26 is linked to second facet 38 .
  • Aggregate object 14 is an aggregation of one or more facet objects 28 within an object-oriented environment.
  • Aggregate object 14 and the associated facet objects 28 function as a single logical object within the object-oriented environment.
  • a change to one of the facet objects 28 creates a logical change in the other facet objects 28 and aggregate object 14 .
  • Primary facet objects 16 , first facet object 20 , and second facet object 24 represent a group of one or more facet objects 28 .
  • Each aggregate object 14 communicates directly with its associated set of facets 32 .
  • Each facet within a set of facets 32 is linked to a particular facet object 28 .
  • Each facet in the set of facets 32 contains basic information related to its associated facet object 28 to facilitate use of the aggregate object 14 within application program 12 .
  • the information contained in each facet in the set of facets 32 for its associated facet object 28 includes the class of the facet object 28 and any interfaces implemented by the facet object 28 .
  • each facet in set of facets 32 is a proxy object created from the associated facet object 28 .
  • the proxy object is created by using Java Reflection to determine a particular facet object's 28 name, class, and interfaces.
  • the particular facet in set of facets 32 is an object that includes the name, class, and interfaces for the associated facet object 28 .
  • An interface in an object oriented environment defines the format and information needed to communicate with a particular object.
  • An interface may be referred to as the public view of the object.
  • the software developer may utilize aggregate objects 14 to extend the functionality of existing objects without modifying source code.
  • the software developer extends functionality of an existing object by placing it in an aggregate object 14 as the primary facet object 16 and aggregating additional objects within aggregate object 14 as facet objects 28 .
  • a particular object may be the primary facet object 16 of only one aggregate object 14 .
  • Each aggregate object 14 in application program 12 will have a unique primary facet object 16 .
  • a software developer desires to extend the functionality of a specified object to add additional functions such as mobility within a distributed processing environment or the ability to function as an agent within a distributed processing environment. Another example of adding functionality to an existing object would be adding repair history to a car object or adding a bonus plan to an employee object.
  • the software developer dynamically creates an aggregate object 14 with the specified object as the associated primary facet object 16 .
  • the term “dynamically” is used here to refer to using program statements during execution of application program 12 to create aggregate object 14 .
  • the software developer then dynamically adds first facet object 20 and second facet object 24 to aggregate object 14 .
  • First facet object 20 and second aggregate object 24 provide additional functionality for primary facet object 16 . Any method of any facet object 28 may affect all facet objects 28 within aggregate object 14 . Therefore, invoking a method on first facet object 20 will effect a change in primary facet object 16 .
  • Application program 12 may create and utilize one or more aggregate objects 14 . Each aggregate object 14 has one or more associated facet objects 28 . Facet objects 28 may be added and deleted as application program 12 progresses depending upon processing requirements. To access a particular facet object 28 , application program 12 may request access to the particular facet object 28 that extends the functionality of a primary facet object 16 by requesting a class or interface using commands that invoke facet control module 30 . Facet control module 30 then scans the set of facets 32 associated with the aggregate object 14 identified in the facet control system command until locating the particular facet object 28 that has a class that equals or extends the requested class or implements the requested interface.
  • Facet control module 30 returns a reference to the first facet in the set of facets 32 that has a class that equals or extends the requested class or implements the requested interface. Application program 12 can then invoke the particular facet object 28 by using the returned reference to the facet in the set of facets 32 . In another embodiment, facet control system 30 may return a list of all facets within the set of facets 32 with associated facet objects 28 that have a class that equal or extend the requested class or implement the requested interface. Application program 12 can then determine which facet object 28 in the returned reference list to invoke.
  • 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.
  • system 40 a system with an application program 12 using dynamically aggregated objects in a distributed processing environment is generally indicated at 40 .
  • the structure and operation of system 40 is the same as system 10 except that facet objects 28 may exist within different address spaces in a distributed processing environment and be accessed by aggregate object 14 using proxies.
  • 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 .
  • 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 .
  • Facet control module 30 provides dynamic aggregation of existing objects for application program 12 .
  • Facet control module 30 consists of several modules including a facet creator 70 , an object adder 72 , an object deleter 74 , and a class/interface finder 76 .
  • the functionality of facet control module 30 will be discussed with reference to the flow diagrams of FIGS. 4 , 5 and 6 .
  • a flow diagram illustrating a method for dynamically aggregating objects is generally indicated at 100 .
  • the method commences at step 102 where application program 12 requests that an aggregate object 14 be created with a specified primary object.
  • the method proceeds to step 104 where facet control module 30 receives the request and forwards it to facet creator 70 to create an aggregate object 14 with a primary facet object 16 of the specified object named in the create aggregate object request.
  • a particular object may be the primary facet object 16 of only one aggregate object 14 .
  • the method proceeds to step 106 where a new facet 32 for the specified primary facet object 16 is created as primary facet 34 .
  • the method proceeds to step 108 where the specified primary facet object 16 is identified and linked to primary facet 34 .
  • the method proceeds to step 110 where primary facet 34 is linked to the new aggregate object 14 .
  • the following syntax may be used to create an aggregate object 14 :
  • Facet control module 30 creates an aggregate object 14 identified as myFacets.
  • facet control module 30 creates a primary facet 34 identified as primaryFacet.
  • Primary facet 34 is linked to aggregate object 14 .
  • 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 .
  • a flow diagram illustrating a method for locating an object that extends a requested class or implements a requested interface within an aggregate object 14 is generally indicated at 120 .
  • the method proceeds to step 122 where application program 12 requests that facet control module 30 locate a facet object 28 that has a class that equals or extends a requested class or implements a requested interface.
  • facet control module 30 Upon receiving this type of request, facet control module 30 forwards the request to class/interface finder 76 .
  • the following syntax may be used to request access to a facet object 28 that has a class that equals or extends the requested class or implements the requested interface:
  • 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 .
  • step 125 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.
  • 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.
  • 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.
  • a flow diagram illustrating a method for adding objects to an aggregate object 14 is generally indicated at 150 .
  • the method commences at step 152 where application program 12 requests a facet object 28 that has a class that equals or extends a requested class.
  • the following syntax may be used to add objects to a aggregate object 14 as facet objects 28 :
  • class name refers to an existing .class file.
  • step 154 the method of FIG. 5 identified in steps 122 - 126 and 130 - 134 is performed until a facet within the set of facets 32 associated with aggregate object 14 is found that has a class that equals or extends the requested class or a null reference is returned.
  • step 156 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 FIG. 5 is returned. If a null reference is not received, the requested class has already been added to the set of facets 32 in aggregate object 14 and processing may continue. After step 158 the method terminates.
  • step 160 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 .
  • step 164 object adder 72 links the instance of the requested class created in step 160 to the new facet created in step 162 .
  • step 166 object adder 72 links the new facet created in step 162 to the aggregate object 14 .
  • step 168 a reference to the new facet created in step 162 is returned. After step 168 , the method terminates.
  • 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 .
  • 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.
  • one embodiment of the present invention includes the following command to determine the primary facet object 16 of aggregate object 14 :
  • 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 ;
  • 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.
  • a mobility method is invoked within aggregate object 14 .
  • aggregate object 14 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.
  • 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.
  • the location of an object may be generally defined as “host:portnumber/alias”.
  • the location of an object may be “dallas:8000/store1”, where “dallas” defines the host address, “8000” defines the port number, and “store1” defines an alias for the object.
  • the host may be referred to by host name or an IP address.
  • An object may be an agent which is defined as a specialized object that possesses the characteristic of autonomy. Autonomy is the ability to program an agent with one or more goals that it will attempt to satisfy, even when it has moved into a network on other platforms and has lost all contact with its creator. Agents also have the additional abilities of movement, persistence and event generation.
  • FIGS. 7A-7F utilize a modified illustration of the structure of the aggregate object depicted in FIG. 1 .
  • Aggregate object 202 , primary facet object 204 , and mobility facet object 206 each have a local reference and a reference holder. The reference holder and local reference are together equivalent to a member of set of facets 32 .
  • Aggregate object 202 has a local reference 208 and a reference holder 210 .
  • Reference holder 210 is linked to local reference 208 and receives and routes messages to aggregate object 202 through local reference 208 .
  • Local reference 208 contains an address identifying the physical location of aggregate object 202 .
  • primary facet object 204 has a local reference 212 and a reference holder 214 .
  • Mobility facet object 206 has a local reference 216 and a reference holder 218 .
  • Aggregate object 202 is linked to both reference holder 214 for primary facet object 204 and to reference holder 218 for mobility facet object 206 .
  • a primary object proxy 220 is linked to primary facet object 204 through reference holder 214 . Any message received by primary object proxy 220 is forwarded to reference holder 214 that further forwards the message to primary object 204 .
  • Aggregate object 202 , primary facet object 204 , mobility facet object 206 , and their associated local references and reference holders may be generally referred to as an aggregate group 200 .
  • the movement process begins in FIG. 7A where mobility facet object 206 located at a current host address and port number 222 receives a move indication 224 .
  • Move indication 224 may be received from a requesting object 226 located at an originating host address and port number 228 .
  • Requesting object 226 may be any object or application in the distributed computing system and may exist in any address space including an address space on the current host for aggregate group 200 .
  • Aggregate group 200 may also be an agent that carries its own move indication 224 .
  • mobility facet object 206 accesses a lock object 230 in order to block all incoming messages to aggregate group 200 while aggregate group 200 is moving to a new host address and port number.
  • Mobility facet object 206 creates a serialized version 232 of itself at current host address and port number 222 .
  • the serialized version 232 is then sent to a desired new host address and port number 234 .
  • the serialized version may be created by mobility facet object 206 sending a message containing itself as a parameter.
  • a new version 236 of mobility facet object 206 is created at new host address and port number 234 from the serialized version 232 .
  • the move operation continues in FIG. 7C where the new version 236 of mobility facet object 206 creates a serialize and move message 238 and sends it to aggregate group 200 at current host address and port number 222 .
  • the serialize and move message 238 informs aggregate group 200 that the initial phase of moving was successful and that the other serializable parts of aggregate group 200 should be serialized and sent to new host address and port number 234 .
  • the move operation continues at FIG. 7D where the aggregate group 200 receives the serialize and move message 238 .
  • Aggregate group 200 forwards the serialize and move message 238 to primary facet object 204 .
  • Primary facet object 204 creates a serialized version 240 of itself at current host address and port number 222 .
  • the serialized version 240 is then sent to the new host address and port number 234 .
  • a new version 242 of primary facet object 204 is created at new host address and port number 234 from the serialized version 240 .
  • a new aggregate group 244 is generated as previously described with a new aggregate object 246 , new version 242 of primary facet object 204 as a new primary facet object 248 and new version 236 of mobility facet object 206 as a new mobility facet object 250 .
  • New aggregate group 244 and new aggregate object 246 register at new host address and port number 234 along with new version 236 of mobility facet object 206 and new version 242 of primary facet object 204 .
  • new aggregate group 244 sends a successful message 252 to aggregate group 200 at current host address and port number 222 .
  • Aggregate group 200 , aggregate object 202 , primary facet object 204 , and mobility facet object 206 deregister from current host address and port number 222 .
  • aggregate object 202 severs its links to mobility facet object 206 and primary facet object 204 .
  • Aggregate object 202 and mobility facet object 206 are garbage collected by the system.
  • all references to primary facet object 204 are removed such that it is garbage collected by the system.
  • Local reference 212 of primary facet object 204 is updated with new host address and port number 234 and becomes remote reference 254 .
  • Reference holder 214 remains a reference holder at current host address and port number 222 for new version 242 of primary facet object 204 at new host address and port number 234 .
  • Reference holder 214 is coupled to remote reference 254 that contains the address of the physical location of new version 242 of primary facet object 204 .
  • Reference holder 214 is used to forward messages destined for primary facet object 204 to new host address and port number 234 .
  • FIGS. 8A-8B the process of forwarding messages for a moved object is illustrated.
  • the forwarding operation begins at FIG. 8A where message MSG 1 from an object 306 at a first host address and port number 308 and message MSG 2 from an object 310 at a second host address and port number 312 require processing by an object 314 .
  • Object 314 has moved to a new host address and port number 316 .
  • Object 314 may be an aggregate group such as new aggregate group 244 .
  • Messages MSG 1 and MSG 2 may be messages that were previously sent but were blocked as a result of move indication 224 or may be messages sent from out of date objects at host address and port numbers not knowing that object 314 has moved to new host address and port number 316 .
  • a reference holder 302 and a remote address 304 occupy an old host address and port number 318 previously occupied by object 314 .
  • old host address and port number 318 and first host address and port number 308 exist in the same address space identified by the host address. Thus communications between object 306 and reference holder 302 are local.
  • FIG. 8B The forwarding operation continues at FIG. 8B where reference holder 302 , having the new host address and port number 316 for object 314 stored in remote reference 304 , reroutes message MSG 1 to object 314 at new host address and port number 316 .
  • Messages, such as message MSG 1 that are local with respect to reference holder 302 may be directly forwarded to the new location for an object referenced in the message since the message travels through only one host address on its way to a destination host address.
  • Reference holder 302 receives message MSG and determines that it is a remote message.
  • 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 .
  • reference holder 302 throws an “object moved” exception to object 310 .
  • Object 310 catches the “object moved” exception and resends message MSG 2 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.
  • callback notifications that may occur during the movement of an object from current host address and port number 222 to new address and port number 234 are illustrated.
  • Callback notifications may be sent provided that primary facet object 204 requests callback notification.
  • primary facet object 204 implements a specified Java interface to request callback notifications.
  • any suitable method of requesting callback notifications may be used such as setting a callback notification flag.
  • FIG. 9A illustrates a pre-departure notification for primary facet object 204 at current host address and port number 222 .
  • a pre-departure notification may be generated for primary facet object 204 to determine if primary facet object 204 is available to be moved. If primary facet object 204 determines that it is not available to be moved, primary facet object 204 may throw a mobility exception causing the move to abort. The mobility exception may be thrown for any reason as determined by primary facet object 204 such as processing required to be completed at current host address and port number 222 has not been completed.
  • FIG. 9B illustrates a pre-arrival notification for new version 242 of primary facet object 204 at new host address and port number 234 .
  • the pre-arrival notification occurs immediately after new version 242 of primary facet object 204 is created from serialized version 240 at new host address and port number 234 .
  • the pre-arrival notification may be used by new version 242 of primary facet object 204 to determine if new version 242 was successfully created. If the new version 242 was not successfully created or any other suitable error condition exists within new version 242 of primary facet object 204 , new version 242 may throw a mobility exception causing the move to abort.
  • FIG. 9C illustrates post-movement callback notifications.
  • a post-arrival callback notification may be sent to new version 242 of primary facet object 204 at new host address and port number 234 .
  • new aggregate group 244 is the active object and the move cannot be aborted. Thus, the move is deemed successful.
  • This callback notification allows new aggregate group 244 to perform specific post-move processing that is not provided by the system.
  • a post-departure callback notification may be sent to primary facet object 204 .
  • 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 .

Abstract

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).

Description

TECHNICAL FIELD OF THE INVENTION
The present invention relates in general to object-oriented technologies and more particularly to a method for moving objects in a distributed computing environment.
BACKGROUND OF THE INVENTION
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.
SUMMARY OF THE INVENTION
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 has as a facet object.
The method then creates a serialized version of the mobility object in response to the move indication. The method then sends the serialized version of the mobility object to the new host address and port number and creates a new version of the mobility object at the new host address and port number from the serialized version of the mobility object. The method then creates a serialized version of the primary object in response to a serialize and move message received from the new version of the mobility object. The method then sends the serialized version of the primary object to the new host address and port number and creates a new version of the primary object at the new host address and port number from the serialized version of the primary object. The method then creates 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.
The present invention provides various technical advantages over conventional methods for moving objects in a distributed computing environment. For example, one technical advantage is providing a method for objects that exchange a large number of messages to move to a common computer to reduce the amount of time needed for communications and to conserve system resources. Other technical advantages may be readily apparent to one skilled in the art from the following figures, description, and claims.
BRIEF DESCRIPTION OF THE DRAWINGS
For a more complete understanding of the present invention and the advantages thereof, reference is now made to the following description taken in conjunction with the accompanying drawings, wherein like reference numbers represent like parts, in which:
FIG. 1 illustrates a block diagram of an application program utilizing aggregate objects;
FIG. 2 illustrates a block diagram of the application program utilizing aggregate objects where facet objects are distributed in different processing environments;
FIG. 3 illustrates a block diagram of a facet control module used within the application program;
FIG. 4 illustrates a flow diagram illustrating creation of aggregate objects;
FIG. 5 illustrates a flow diagram illustrating a method of locating an object that extends a requested class or implements a requested interface;
FIG. 6 illustrates a flow diagram illustrating a method for adding a class to an aggregate object;
FIGS. 7A-7F illustrate an exemplary process for moving an object from one host address and port number to another host address and port number within a computer network;
FIGS. 8A-8B illustrate an exemplary process for forwarding messages by a reference holder; and
FIGS. 9A-9C illustrate various move notifications that may occur while moving the object from one host address and port number to another host address and port number within the computer network.
DETAILED DESCRIPTION OF THE INVENTION Dynamic Aggregation of Objects
Referring to FIG. 1, an application program using dynamically aggregated objects is generally indicated at 10. An application program 12 may access one or more aggregate objects 14 through a facet control module 30. Aggregate object 14 includes a set of facets 32 that may contain one or more facets such as a primary facet 34, a first facet 36, and a second facet 38. One or more facet objects 28 are linked to the set of facets 32 in a one to one correspondence. A primary facet object 16 having a primary interface 18 is linked to primary facet 34, a first facet object 20 having a first interface 22 is linked to first facet 36, and a second facet object 24 having a second interface 26 is linked to second facet 38.
Aggregate object 14 is an aggregation of one or more facet objects 28 within an object-oriented environment. Aggregate object 14 and the associated facet objects 28 function as a single logical object within the object-oriented environment. A change to one of the facet objects 28 creates a logical change in the other facet objects 28 and aggregate object 14. For example, if one of the facet objects 28 moves to a different processing environment, or address space, the aggregate object 14 to which the particular facet object 28 is linked and any other associated facet objects 28 will move as a single logical object to the new, processing environment, or address space. Primary facet objects 16, first facet object 20, and second facet object 24 represent a group of one or more facet objects 28.
Each aggregate object 14 communicates directly with its associated set of facets 32. Each facet within a set of facets 32 is linked to a particular facet object 28. Each facet in the set of facets 32 contains basic information related to its associated facet object 28 to facilitate use of the aggregate object 14 within application program 12. The information contained in each facet in the set of facets 32 for its associated facet object 28 includes the class of the facet object 28 and any interfaces implemented by the facet object 28. In one embodiment, each facet in set of facets 32 is a proxy object created from the associated facet object 28. The proxy object is created by using Java Reflection to determine a particular facet object's 28 name, class, and interfaces. This information is then packaged into a facet in set of facets 32. The particular facet in set of facets 32 is an object that includes the name, class, and interfaces for the associated facet object 28. An interface in an object oriented environment defines the format and information needed to communicate with a particular object. An interface may be referred to as the public view of the object.
During application program development, the software developer may utilize aggregate objects 14 to extend the functionality of existing objects without modifying source code. The software developer extends functionality of an existing object by placing it in an aggregate object 14 as the primary facet object 16 and aggregating additional objects within aggregate object 14 as facet objects 28. Within application program 12, a particular object may be the primary facet object 16 of only one aggregate object 14. Each aggregate object 14 in application program 12 will have a unique primary facet object 16. In one embodiment, a software developer desires to extend the functionality of a specified object to add additional functions such as mobility within a distributed processing environment or the ability to function as an agent within a distributed processing environment. Another example of adding functionality to an existing object would be adding repair history to a car object or adding a bonus plan to an employee object.
The software developer dynamically creates an aggregate object 14 with the specified object as the associated primary facet object 16. The term “dynamically” is used here to refer to using program statements during execution of application program 12 to create aggregate object 14. The software developer then dynamically adds first facet object 20 and second facet object 24 to aggregate object 14. First facet object 20 and second aggregate object 24 provide additional functionality for primary facet object 16. Any method of any facet object 28 may affect all facet objects 28 within aggregate object 14. Therefore, invoking a method on first facet object 20 will effect a change in primary facet object 16.
Application program 12 may create and utilize one or more aggregate objects 14. Each aggregate object 14 has one or more associated facet objects 28. Facet objects 28 may be added and deleted as application program 12 progresses depending upon processing requirements. To access a particular facet object 28, application program 12 may request access to the particular facet object 28 that extends the functionality of a primary facet object 16 by requesting a class or interface using commands that invoke facet control module 30. Facet control module 30 then scans the set of facets 32 associated with the aggregate object 14 identified in the facet control system command until locating the particular facet object 28 that has a class that equals or extends the requested class or implements the requested interface. Facet control module 30 returns a reference to the first facet in the set of facets 32 that has a class that equals or extends the requested class or implements the requested interface. Application program 12 can then invoke the particular facet object 28 by using the returned reference to the facet in the set of facets 32. In another embodiment, facet control system 30 may return a list of all facets within the set of facets 32 with associated facet objects 28 that have a class that equal or extend the requested class or implement the requested interface. Application program 12 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 FIG. 2, a system with an application program 12 using dynamically aggregated objects in a distributed processing environment is generally indicated at 40. The structure and operation of system 40 is the same as system 10 except that facet objects 28 may exist within different address spaces in a distributed processing environment and be accessed by aggregate object 14 using proxies.
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 FIG. 3, a facet control module is generally indicated at 30. Facet control module 30 provides dynamic aggregation of existing objects for application program 12. Facet control module 30 consists of several modules including a facet creator 70, an object adder 72, an object deleter 74, and a class/interface finder 76. The functionality of facet control module 30 will be discussed with reference to the flow diagrams of FIGS. 4, 5 and 6.
Referring to FIG. 4, a flow diagram illustrating a method for dynamically aggregating objects is generally indicated at 100. The method commences at step 102 where application program 12 requests that an aggregate object 14 be created with a specified primary object. The method proceeds to step 104 where facet control module 30 receives the request and forwards it to facet creator 70 to create an aggregate object 14 with a primary facet object 16 of the specified object named in the create aggregate object request. A particular object may be the primary facet object 16 of only one aggregate object 14. The method proceeds to step 106 where a new facet 32 for the specified primary facet object 16 is created as primary facet 34. The method proceeds to step 108 where the specified primary facet object 16 is identified and linked to primary facet 34. The method proceeds to step 110 where primary facet 34 is linked to the new aggregate object 14.
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 FIG. 5, a flow diagram illustrating a method for locating an object that extends a requested class or implements a requested interface within an aggregate object 14 is generally indicated at 120. The method proceeds to step 122 where application program 12 requests that facet control module 30 locate a facet object 28 that has a class that equals or extends a requested class or implements a requested interface. Upon receiving this type of request, facet control module 30 forwards the request to class/interface finder 76. In one embodiment, the following syntax may be used to request access to a facet object 28 that has a class that equals or extends the requested class or implements the requested interface:
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 FIG. 6, a flow diagram illustrating a method for adding objects to an aggregate object 14 is generally indicated at 150. The method commences at step 152 where application program 12 requests a facet object 28 that has a class that equals or extends a requested class. In one embodiment, the following syntax may be used to add objects to a aggregate object 14 as facet objects 28:
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 FIG. 5 identified in steps 122-126 and 130-134 is performed until a facet within the set of facets 32 associated with aggregate object 14 is found that has a class that equals or extends the requested class or a null reference is returned.
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 FIG. 5 is returned. If a null reference is not received, the requested class has already been added to the set of facets 32 in aggregate object 14 and processing may continue. After step 158 the method terminates.
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.
Movement
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 FIGS. 7A-7F, the process of moving an object from one address space to another address space within a distributed computing system is depicted. The location of an object may be generally defined as “host:portnumber/alias”. For example, the location of an object may be “dallas:8000/store1”, where “dallas” defines the host address, “8000” defines the port number, and “store1” defines an alias for the object. The host may be referred to by host name or an IP address. An object may be an agent which is defined as a specialized object that possesses the characteristic of autonomy. Autonomy is the ability to program an agent with one or more goals that it will attempt to satisfy, even when it has moved into a network on other platforms and has lost all contact with its creator. Agents also have the additional abilities of movement, persistence and event generation.
FIGS. 7A-7F utilize a modified illustration of the structure of the aggregate object depicted in FIG. 1. Aggregate object 202, primary facet object 204, and mobility facet object 206 each have a local reference and a reference holder. The reference holder and local reference are together equivalent to a member of set of facets 32. Aggregate object 202 has a local reference 208 and a reference holder 210. Reference holder 210 is linked to local reference 208 and receives and routes messages to aggregate object 202 through local reference 208. Local reference 208 contains an address identifying the physical location of aggregate object 202. Similarly, primary facet object 204 has a local reference 212 and a reference holder 214. Mobility facet object 206 has a local reference 216 and a reference holder 218. Aggregate object 202 is linked to both reference holder 214 for primary facet object 204 and to reference holder 218 for mobility facet object 206. A primary object proxy 220 is linked to primary facet object 204 through reference holder 214. Any message received by primary object proxy 220 is forwarded to reference holder 214 that further forwards the message to primary object 204. Aggregate object 202, primary facet object 204, mobility facet object 206, and their associated local references and reference holders may be generally referred to as an aggregate group 200.
The movement process begins in FIG. 7A where mobility facet object 206 located at a current host address and port number 222 receives a move indication 224. Move indication 224 may be received from a requesting object 226 located at an originating host address and port number 228. Requesting object 226 may be any object or application in the distributed computing system and may exist in any address space including an address space on the current host for aggregate group 200. Aggregate group 200 may also be an agent that carries its own move indication 224.
In response to move indication 224, the move operation continues in FIG. 7B where mobility facet object 206 accesses a lock object 230 in order to block all incoming messages to aggregate group 200 while aggregate group 200 is moving to a new host address and port number. Mobility facet object 206 creates a serialized version 232 of itself at current host address and port number 222. The serialized version 232 is then sent to a desired new host address and port number 234. The serialized version may be created by mobility facet object 206 sending a message containing itself as a parameter. A new version 236 of mobility facet object 206 is created at new host address and port number 234 from the serialized version 232.
The move operation continues in FIG. 7C where the new version 236 of mobility facet object 206 creates a serialize and move message 238 and sends it to aggregate group 200 at current host address and port number 222. The serialize and move message 238 informs aggregate group 200 that the initial phase of moving was successful and that the other serializable parts of aggregate group 200 should be serialized and sent to new host address and port number 234.
The move operation continues at FIG. 7D where the aggregate group 200 receives the serialize and move message 238. Aggregate group 200 forwards the serialize and move message 238 to primary facet object 204. Primary facet object 204 creates a serialized version 240 of itself at current host address and port number 222. The serialized version 240 is then sent to the new host address and port number 234. A new version 242 of primary facet object 204 is created at new host address and port number 234 from the serialized version 240.
The move operation continues at FIG. 7E where a new aggregate group 244 is generated as previously described with a new aggregate object 246, new version 242 of primary facet object 204 as a new primary facet object 248 and new version 236 of mobility facet object 206 as a new mobility facet object 250. New aggregate group 244 and new aggregate object 246 register at new host address and port number 234 along with new version 236 of mobility facet object 206 and new version 242 of primary facet object 204.
The move operation continues at FIG. 7F where new aggregate group 244 sends a successful message 252 to aggregate group 200 at current host address and port number 222. Aggregate group 200, aggregate object 202, primary facet object 204, and mobility facet object 206 deregister from current host address and port number 222. In addition, aggregate object 202 severs its links to mobility facet object 206 and primary facet object 204. Aggregate object 202 and mobility facet object 206 are garbage collected by the system. In addition, all references to primary facet object 204 are removed such that it is garbage collected by the system. Local reference 212 of primary facet object 204 is updated with new host address and port number 234 and becomes remote reference 254. Reference holder 214 remains a reference holder at current host address and port number 222 for new version 242 of primary facet object 204 at new host address and port number 234. Reference holder 214 is coupled to remote reference 254 that contains the address of the physical location of new version 242 of primary facet object 204. Reference holder 214 is used to forward messages destined for primary facet object 204 to new host address and port number 234.
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 FIGS. 8A and 8B.
Forwarding
Referring to FIGS. 8A-8B, the process of forwarding messages for a moved object is illustrated. The forwarding operation begins at FIG. 8A where message MSG1 from an object 306 at a first host address and port number 308 and message MSG2 from an object 310 at a second host address and port number 312 require processing by an object 314. Object 314 has moved to a new host address and port number 316. Object 314 may be an aggregate group such as new aggregate group 244. Messages MSG1 and MSG2 may be messages that were previously sent but were blocked as a result of move indication 224 or may be messages sent from out of date objects at host address and port numbers not knowing that object 314 has moved to new host address and port number 316. A reference holder 302 and a remote address 304 occupy an old host address and port number 318 previously occupied by object 314. In this example, old host address and port number 318 and first host address and port number 308 exist in the same address space identified by the host address. Thus communications between object 306 and reference holder 302 are local.
The forwarding operation continues at FIG. 8B where reference holder 302, having the new host address and port number 316 for object 314 stored in remote reference 304, reroutes message MSG1 to object 314 at new host address and port number 316. Messages, such as message MSG1, that are local with respect to reference holder 302 may be directly forwarded to the new location for an object referenced in the message since the message travels through only one host address on its way to a destination host address.
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.
Callbacks
Referring to FIGS. 9A-9C, various callback notifications that may occur during the movement of an object from current host address and port number 222 to new address and port number 234 are illustrated. Callback notifications may be sent provided that primary facet object 204 requests callback notification. In one embodiment, primary facet object 204 implements a specified Java interface to request callback notifications. However, any suitable method of requesting callback notifications may be used such as setting a callback notification flag.
FIG. 9A illustrates a pre-departure notification for primary facet object 204 at current host address and port number 222. Upon receipt of move notification 224, a pre-departure notification may be generated for primary facet object 204 to determine if primary facet object 204 is available to be moved. If primary facet object 204 determines that it is not available to be moved, primary facet object 204 may throw a mobility exception causing the move to abort. The mobility exception may be thrown for any reason as determined by primary facet object 204 such as processing required to be completed at current host address and port number 222 has not been completed.
FIG. 9B illustrates a pre-arrival notification for new version 242 of primary facet object 204 at new host address and port number 234. The pre-arrival notification occurs immediately after new version 242 of primary facet object 204 is created from serialized version 240 at new host address and port number 234. The pre-arrival notification may be used by new version 242 of primary facet object 204 to determine if new version 242 was successfully created. If the new version 242 was not successfully created or any other suitable error condition exists within new version 242 of primary facet object 204, new version 242 may throw a mobility exception causing the move to abort.
FIG. 9C illustrates post-movement callback notifications. After new aggregate group 244 registers at new host address and port number 234, a post-arrival callback notification may be sent to new version 242 of primary facet object 204 at new host address and port number 234. At this point, new aggregate group 244 is the active object and the move cannot be aborted. Thus, the move is deemed successful. This callback notification allows new aggregate group 244 to perform specific post-move processing that is not provided by the system.
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.

Claims (100)

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 claim 1, further comprising:
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 claim 1, further comprising: comprising retaining an old version of the aggregate object, the primary object, and the mobility object at the current host address and port number.
4. The method of claim 1, further comprising: comprising aggregating the mobility object at the current host address and port number with the primary object at the current host address and port number, the mobility object linked to an aggregate object at the current host address and port number, the primary object linked to the aggregate object at the current host address and port number.
5. The method of claim 1, further comprising instructing the primary object to move to the new host address and port number by invoking a method on the mobility object at the current host address and port number for moving the primary object to the new host address and port number.
6. The method of claim 1, further comprising:
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 claim 1, further comprising:
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 claim 7, further comprising: comprising forwarding suspended messages to the new host address and port number for processing.
9. The method of claim 1, further comprising:
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 claim 1, further comprising: comprising registering the new aggregate object and the new version of the primary object at the new host address and port number.
11. The method of claim 1, further comprising:
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 claim 1, further comprising:
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 claim 1, further comprising:
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 claim 1, further comprising:
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 claim 1, further comprising: comprising sending a serialize and move message from the new version of the mobility object at the new host address and port number to the primary object at the current host address and port number, the serialize and move message including an indication that the new version of the mobility object has been established at the new host address and port number.
16. The method of claim 1, further comprising:
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 claim 1, further comprising:
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 claim 11, further comprising:
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 claim 1, further comprising:
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.
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.
21. The method of claim 20, further comprising:
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.
22. The method of claim 20, wherein the new aggregate object at the new host location comprises 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.
23. The method of claim 20, wherein the current host location is characterized by a current host address and port number, and the new host location is characterized by a new host address and port number.
24. The method of claim 20, further comprising:
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.
25. The method of claim 20, further comprising retaining an old version of the aggregate object, the primary object, and the mobility object at the current host location.
26. The method of claim 20, further comprising instructing the primary object to move to the new host location by invoking a method on the mobility object at the current host location for moving the primary object to the new host location.
27. The method of claim 20, further comprising:
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.
28. The method of claim 20, further comprising:
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.
29. The method of claim 28, further comprising forwarding suspended messages to the new host location for processing.
30. The method of claim 20, further comprising:
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.
31. The method of claim 20, wherein the new aggregate object and the new version of the primary object are registered at the new host location.
32. The method of claim 20, further comprising:
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.
33. The method of claim 20, further comprising:
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.
34. The method of claim 20, further comprising:
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.
35. The method of claim 20, further comprising:
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.
36. The method of claim 20, further comprising receiving a move message from the new version of the mobility object at the new host location at the primary object at the current host location, the move message including an indication that the new version of the mobility object has been established at the new host location.
37. The method of claim 20, further comprising:
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.
38. The method of claim 20, further comprising:
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.
39. The method of claim 32, further comprising:
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.
40. The method of claim 20, further comprising:
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.
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.
42. One or more computer-readable storage media as recited in claim 41 , further comprising computer-executable instructions configured to:
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.
43. One or more computer-readable storage media as recited in claim 41 , wherein the current host location is characterized by a current host address and port number, and the new host location is characterized by a new host address and port number.
44. One or more computer-readable storage media as recited in claim 41 , further comprising computer-executable instructions configured to:
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.
45. One or more computer-readable storage media as recited in claim 41 , further comprising computer-executable instructions configured to retain an old version of the aggregate object, the primary object, and the mobility object at the current host location.
46. One or more computer-readable storage media as recited in claim 41 , further comprising computer-executable instructions configured to instruct the primary object to move to the new host location by invoking a method on the mobility object at the current host location for moving the primary object to the new host location.
47. One or more computer-readable storage media as recited in claim 41 , further comprising computer-executable instructions configured to:
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.
48. One or more computer-readable storage media as recited in claim 41 , further comprising computer-executable instructions configured to:
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.
49. One or more computer-readable storage media as recited in claim 41 , further comprising computer-executable instructions configured to forward suspended messages to the new host location for processing.
50. One or more computer-readable storage media as recited in claim 41 , further comprising computer-executable instructions configured to:
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.
51. One or more computer-readable storage media as recited in claim 41 , further comprising computer-executable instructions configured to register the new aggregate object and the new version of the primary object at the new host location.
52. One or more computer-readable storage media as recited in claim 41 , further comprising computer-executable instructions configured to:
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.
53. One or more computer-readable storage media as recited in claim 41 , further comprising computer-executable instructions configured to:
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.
54. One or more computer-readable storage media as recited in claim 41 , further comprising computer-executable instructions configured to:
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.
55. One or more computer-readable storage media as recited in claim 41 , further comprising computer-executable instructions configured to:
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.
56. One or more computer-readable storage media as recited in claim 41 , further comprising computer-executable instructions configured to send a move message from the new version of the mobility object at the new host location to the primary object at the current host location, the move message including an indication that the new version of the mobility object has been established at the new host location.
57. One or more computer-readable storage media as recited in claim 41 , further comprising computer-executable instructions configured to:
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.
58. One or more computer-readable storage media as recited in claim 41 , further comprising computer-executable instructions configured to:
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.
59. One or more computer-readable storage media as recited in claim 41 , further comprising computer-executable instructions configured to:
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.
60. One or more computer-readable storage media as recited in claim 41 , further comprising computer-executable instructions configured to:
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.
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.
62. The method of claim 61, further comprising:
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.
63. The method of claim 61, wherein the current host location is characterized by a current host address and port number, and the new host location is characterized by a new host address and port number.
64. The method of claim 61, further comprising:
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.
65. The method of claim 61, further comprising retaining an old version of the aggregate object, the primary object, and the mobility object at the current host location.
66. The method of claim 61, further comprising instructing the primary object to move to the new host location by invoking a method on the mobility object at the current host location for moving the primary object to the new host location.
67. The method of claim 61, further comprising:
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.
68. The method of claim 61, further comprising:
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.
69. The method of claim 68, further comprising forwarding suspended messages to the new host location for processing.
70. The method of claim 61, further comprising:
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.
71. The method of claim 61, wherein the new aggregate object and the new version of the primary object are registered at the new host location.
72. The method of claim 61, further comprising:
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.
73. The method of claim 61, further comprising:
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.
74. The method of claim 61, further comprising:
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.
75. The method of claim 61, further comprising:
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.
76. The method of claim 61, further comprising receiving a move message from the new version of the mobility object at the new host location at the primary object at the current host location, the move message including an indication that the new version of the mobility object has been established at the new host location.
77. The method of claim 61, further comprising:
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.
78. The method of claim 61, further comprising:
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.
79. The method of claim 72, further comprising:
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.
80. The method of claim 61, further comprising:
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.
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.
82. One or more computer-readable storage media as recited in claim 81 , further comprising computer-executable instructions configured to:
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.
83. One or more computer-readable storage media as recited in claim 81 , wherein the current host location is characterized by a current host address and port number, and the new host location is characterized by a new host address and port number.
84. One or more computer-readable storage media as recited in claim 81 , further comprising computer-executable instructions configured to:
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.
85. One or more computer-readable storage media as recited in claim 81 , further comprising computer-executable instructions configured to retain an old version of the aggregate object, the primary object, and the mobility object at the current host location.
86. One or more computer-readable storage media as recited in claim 81 , further comprising computer-executable instructions configured to instruct the primary object to move to the new host location by invoking a method on the mobility object at the current host location for moving the primary object to the new host location.
87. One or more computer-readable storage media as recited in claim 81 , further comprising computer-executable instructions configured to:
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.
88. One or more computer-readable storage media as recited in claim 81 , further comprising computer-executable instructions configured to:
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.
89. One or more computer-readable storage media as recited in claim 81 , further comprising computer-executable instructions configured to forward suspended messages to the new host location for processing.
90. One or more computer-readable storage media as recited in claim 81 , further comprising computer-executable instructions configured to:
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.
91. One or more computer-readable storage media as recited in claim 81 , further comprising computer-executable instructions configured to register the new aggregate object and the new version of the primary object at the new host location.
92. One or more computer-readable storage media as recited in claim 81 , further comprising computer-executable instructions configured to:
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.
93. One or more computer-readable storage media as recited in claim 81 , further comprising computer-executable instructions configured to:
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.
94. One or more computer-readable storage media as recited in claim 81 , further comprising computer-executable instructions configured to:
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.
95. One or more computer-readable storage media as recited in claim 81 , further comprising computer-executable instructions configured to:
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.
96. One or more computer-readable storage media as recited in claim 81 , further comprising computer-executable instructions configured to send a move message from the new version of the mobility object at the new host location to the primary object at the current host location, the move message including an indication that the new version of the mobility object has been established at the new host location.
97. One or more computer-readable storage media as recited in claim 81 , further comprising computer-executable instructions configured to:
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.
98. One or more computer-readable storage media as recited in claim 81 , further comprising computer-executable instructions configured to:
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.
99. One or more computer-readable storage media as recited in claim 81 , further comprising computer-executable instructions configured to:
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.
100. One or more computer-readable storage media as recited in claim 81 , further comprising computer-executable instructions configured to:
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.
US11/331,418 1999-11-30 2006-01-13 Moving objects in a distributed computing environment Expired - Lifetime USRE41706E1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/331,418 USRE41706E1 (en) 1999-11-30 2006-01-13 Moving objects in a distributed computing environment

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/451,495 US6678743B1 (en) 1999-11-30 1999-11-30 Method for moving objects in a distributed computing environment
US11/331,418 USRE41706E1 (en) 1999-11-30 2006-01-13 Moving objects in a distributed computing environment

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US09/451,495 Reissue US6678743B1 (en) 1999-11-30 1999-11-30 Method for moving objects in a distributed computing environment

Publications (1)

Publication Number Publication Date
USRE41706E1 true USRE41706E1 (en) 2010-09-14

Family

ID=29780590

Family Applications (2)

Application Number Title Priority Date Filing Date
US09/451,495 Ceased US6678743B1 (en) 1999-11-30 1999-11-30 Method for moving objects in a distributed computing environment
US11/331,418 Expired - Lifetime USRE41706E1 (en) 1999-11-30 2006-01-13 Moving objects in a distributed computing environment

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US09/451,495 Ceased US6678743B1 (en) 1999-11-30 1999-11-30 Method for moving objects in a distributed computing environment

Country Status (1)

Country Link
US (2) US6678743B1 (en)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3690720B2 (en) * 1999-09-14 2005-08-31 インターナショナル・ビジネス・マシーンズ・コーポレーション Client server system, object pooling method, and storage medium
GB0004090D0 (en) * 2000-02-22 2000-04-12 Innovation Venture Ltd Application programming system and method of operation thereof
WO2002071217A2 (en) * 2001-03-01 2002-09-12 British Telecommunications Public Limited Company Method and system for distributed processing management
US6928478B1 (en) * 2001-06-25 2005-08-09 Network Appliance, Inc. Method and apparatus for implementing a MAC address pool for assignment to a virtual interface aggregate
US7472400B2 (en) * 2003-02-28 2008-12-30 Bea Systems, Inc. Method for dynamically generating a wrapper class
US7472401B2 (en) * 2003-02-28 2008-12-30 Bea Systems, Inc. Computer product for a dynamically generated wrapper class
US8881099B2 (en) * 2004-09-10 2014-11-04 Oracle International Corporation Dynamic generation of wrapper classes to implement call-by-value semantics
US8893111B2 (en) 2006-03-31 2014-11-18 The Invention Science Fund I, Llc Event evaluation using extrinsic state information
US8020177B2 (en) 2007-07-27 2011-09-13 Composite Ideas, Llc Contained command invocation middleware framework
CA2667845C (en) * 2008-05-29 2015-02-03 Seg-Ins Inc. Foldable truck bed extender
ITMI20111210A1 (en) * 2011-06-30 2012-12-31 Ibm DYNAMIC REACTIVATION OF SOFTWARE IMAGES

Citations (95)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5325524A (en) 1989-04-06 1994-06-28 Digital Equipment Corporation Locating mobile objects in a distributed computer system
US5341478A (en) 1990-08-14 1994-08-23 Digital Equipment Corporation Methods and apparatus for providing dynamic invocation of applications in a distributed heterogeneous environment
US5396630A (en) 1992-10-06 1995-03-07 International Business Machines Corporation Method and system for object management across process boundries in a data processing system
US5432924A (en) 1993-12-15 1995-07-11 Microsoft Corporation Method and system for selectively applying an appropriate object ownership model
US5481721A (en) 1991-07-17 1996-01-02 Next Computer, Inc. Method for providing automatic and dynamic translation of object oriented programming language-based message passing into operation system message passing using proxy objects
US5511197A (en) 1992-11-13 1996-04-23 Microsoft Corporation Method and system for network marshalling of interface pointers for remote procedure calls
EP0727739A1 (en) 1995-02-17 1996-08-21 International Business Machines Corporation Object-oriented programming interface for developing and running network management applications on a network communication infrastructure
US5577251A (en) 1992-12-21 1996-11-19 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
US5603031A (en) 1993-07-08 1997-02-11 General Magic, Inc. System and method for distributed computation based upon the movement, execution, and interaction of processes in a network
US5619710A (en) 1990-08-14 1997-04-08 Digital Equipment Corporation Method and apparatus for object-oriented invocation of a server application by a client application
US5634010A (en) 1994-10-21 1997-05-27 Modulus Technologies, Inc. Managing and distributing data objects of different types between computers connected to a network
US5655101A (en) 1993-06-01 1997-08-05 International Business Machines Corporation Accessing remote data objects in a distributed memory environment using parallel address locations at each local memory to reference a same data object
US5724503A (en) 1995-03-31 1998-03-03 Sun Microsystems, Inc. Method and apparatus for interpreting exceptions in a distributed object system
US5737607A (en) 1995-09-28 1998-04-07 Sun Microsystems, Inc. Method and apparatus for allowing generic stubs to marshal and unmarshal data in object reference specific data formats
US5745703A (en) 1995-07-18 1998-04-28 Nec Research Institute, Inc. Transmission of higher-order objects across a network of heterogeneous machines
US5778227A (en) 1995-08-01 1998-07-07 Intergraph Corporation System for adding attributes to an object at run time in an object oriented computer environment
US5781633A (en) 1996-07-01 1998-07-14 Sun Microsystems, Inc. Capability security for transparent distributed object systems
US5787175A (en) 1995-10-23 1998-07-28 Novell, Inc. Method and apparatus for collaborative document control
US5793965A (en) 1995-03-22 1998-08-11 Sun Microsystems, Inc. Method and apparatus for determining the type of an object in a distributed object system
US5812781A (en) 1994-09-05 1998-09-22 Telefonaktiebolaget Lm Ericsson System for routing incoming connection-less messages to processes which are already handling messages from same source node
US5812793A (en) 1996-06-26 1998-09-22 Microsoft Corporation System and method for asynchronous store and forward data replication
US5822585A (en) 1995-02-21 1998-10-13 Compuware Corporation System and method for cooperative processing using object-oriented framework
US5848419A (en) 1995-03-31 1998-12-08 Sun Microsystems, Inc. Methods and apparatus for providing transparent persistence in a distributed object operating environment
GB2326255A (en) 1997-05-07 1998-12-16 Ibm Automatic object distribution enables remote running of objects using local method calls
US5862325A (en) 1996-02-29 1999-01-19 Intermind Corporation Computer-based communication system and method using metadata defining a control structure
US5867665A (en) 1997-03-24 1999-02-02 Pfn, Inc Domain communications server
US5881230A (en) 1996-06-24 1999-03-09 Microsoft Corporation Method and system for remote automation of object oriented applications
US5897634A (en) 1997-05-09 1999-04-27 International Business Machines Corporation Optimized caching of SQL data in an object server system
US5903725A (en) 1995-09-15 1999-05-11 International Business Machines Corporation Recoverable proxy object in an object oriented environment
US5928335A (en) 1996-10-30 1999-07-27 Ricoh Company, Ltd. Client/server system having middleware-based interface between client and server image processing objects
US5956737A (en) 1996-09-09 1999-09-21 Design Intelligence, Inc. Design engine for fitting content to a medium
US5983233A (en) 1996-08-20 1999-11-09 Alcatel Alsthom Compagnie Generale D'electricite 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
US5987506A (en) 1996-11-22 1999-11-16 Mangosoft Corporation Remote access and geographically distributed computers in a globally addressable storage environment
US5999988A (en) 1997-03-31 1999-12-07 Sun Microsystems, Inc. Method and apparatus for generating and employing a run-time generated stub to reference an object in object oriented systems
US6006018A (en) 1995-10-03 1999-12-21 International Business Machines Corporation Distributed file system translator with extended attribute support
US6012081A (en) 1996-07-03 2000-01-04 Siemens Aktiengesellschaft Service and event synchronous/asynchronous manager
US6012067A (en) 1998-03-02 2000-01-04 Sarkar; Shyam Sundar Method and apparatus for storing and manipulating objects in a plurality of relational data managers on the web
US6026415A (en) 1995-01-31 2000-02-15 Next Software, Inc. Transparent local and distributed memory management system
US6032190A (en) 1997-10-03 2000-02-29 Ascend Communications, Inc. System and method for processing data packets
US6041166A (en) 1995-07-14 2000-03-21 3Com Corp. Virtual network architecture for connectionless LAN backbone
US6044409A (en) 1996-06-26 2000-03-28 Sun Microsystems, Inc. Framework for marshaling and unmarshaling argument object references
US6061740A (en) 1996-12-09 2000-05-09 Novell, Inc. Method and apparatus for heterogeneous network management
US6085086A (en) 1995-08-22 2000-07-04 Lucent Technologies Inc. Network-based migrating user agent for personal communication services
US6085030A (en) 1997-05-02 2000-07-04 Novell, Inc. Network component server
US6092196A (en) 1997-11-25 2000-07-18 Nortel Networks Limited HTTP distributed remote user authentication system
US6134591A (en) 1997-06-18 2000-10-17 Client/Server Technologies, Inc. Network security and integration method and system
US6138251A (en) 1997-06-30 2000-10-24 Sun Microsystems, Inc. Method and system for reliable remote object reference management
US6138235A (en) 1998-06-29 2000-10-24 Sun Microsystems, Inc. Controlling access to services between modular applications
US6141759A (en) 1997-12-10 2000-10-31 Bmc Software, Inc. System and architecture for distributing, monitoring, and managing information requests on a computer network
US6151639A (en) 1997-06-19 2000-11-21 Sun Microsystems, Inc. System and method for remote object invocation
US6178505B1 (en) 1997-03-10 2001-01-23 Internet Dynamics, Inc. Secure delivery of information in a network
US6182155B1 (en) 1997-05-09 2001-01-30 International Business Machines Corporation Uniform access to and interchange between objects employing a plurality of access methods
US6182154B1 (en) 1994-11-21 2001-01-30 International Business Machines Corporation Universal object request broker encapsulater
US6195794B1 (en) 1997-08-12 2001-02-27 International Business Machines Corporation Method and apparatus for distributing templates in a component system
US6205491B1 (en) 1997-12-18 2001-03-20 Sun Microsystems, Inc. Method and apparatus for deferred throwing of exceptions in C++
US6212574B1 (en) 1997-04-04 2001-04-03 Microsoft Corporation User mode proxy of kernel mode operations in a computer operating system
US6230160B1 (en) 1997-07-17 2001-05-08 International Business Machines Corporation Creating proxies for distributed beans and event objects
US6237135B1 (en) 1998-06-18 2001-05-22 Borland Software Corporation Development system with visual design tools for creating and maintaining Java Beans components
US20010003824A1 (en) 1997-03-14 2001-06-14 International Business Machines Corporation Bootstrapping technique for distributed object client systems
US6253253B1 (en) 1997-08-25 2001-06-26 International Business Machines Corporation Method and apparatus for optimizing references to objects in a data processing system
US6253256B1 (en) 1997-10-15 2001-06-26 Sun Microsystems, Inc. Deferred reconstruction of objects and remote loading in a distributed system
US6260078B1 (en) 1996-07-03 2001-07-10 Sun Microsystems, Inc. Using a distributed object system to find and download java-based applications
US6269373B1 (en) 1999-02-26 2001-07-31 International Business Machines Corporation Method and system for persisting beans as container-managed fields
US6282580B1 (en) 1996-07-02 2001-08-28 Sun Microsystems, Inc. Bridge providing communication between different implementations of object request brokers
US6304918B1 (en) 1997-03-11 2001-10-16 Microsoft Corporation Object interface control system
US6321275B1 (en) 1995-04-24 2001-11-20 Microsoft Corporation Interpreted remote procedure calls
US6324543B1 (en) * 1998-03-06 2001-11-27 International Business Machines Corporation Dynamic object migration method using proxy object links to support automatic object distribution in an object-oriented environment
US6338089B1 (en) 1998-10-06 2002-01-08 Bull Hn Information Systems Inc. Method and system for providing session pools for high performance web browser and server communications
US6343332B1 (en) 1997-10-20 2002-01-29 Fujitsu Limited Communication link information generating device, a three-tier client/server system, and a medium storing a communication link information generator program
US6345382B1 (en) 1998-02-12 2002-02-05 International Business Machines Corporation Run-time customization in object-oriented design
US6347342B1 (en) 1996-07-15 2002-02-12 Next Software, Inc. Method and apparatus for dynamically brokering object messages among object models
US6347341B1 (en) 1999-02-22 2002-02-12 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
US6356930B2 (en) 1998-10-16 2002-03-12 Silverstream Software, Inc. Connection concentrator for distributed object systems
US6374308B1 (en) 1996-04-23 2002-04-16 Sun Microsystems, Inc. Method and apparatus for interactively connecting distributed objects to a graphic user interface
US6385661B1 (en) 1998-10-19 2002-05-07 Recursion Software, Inc. System and method for dynamic generation of remote proxies
US6405246B1 (en) 1998-09-22 2002-06-11 International Business Machines Corporation Automatic and dynamic software code management
US6415315B1 (en) 1997-12-01 2002-07-02 Recursion Software, Inc. Method of moving objects in a computer network
US6434595B1 (en) * 1997-11-26 2002-08-13 International Business Machines Corporation Method of executing mobile objects and recording medium storing mobile objects
US6438616B1 (en) 1997-12-18 2002-08-20 Sun Microsystems, Inc. Method and apparatus for fast, local corba object references
US6442620B1 (en) 1998-08-17 2002-08-27 Microsoft Corporation Environment extensibility and automatic services for component applications using contexts, policies and activators
US6446084B1 (en) 1998-09-22 2002-09-03 Sun Microsystems, Inc. Optimizing symbol table lookups in platform-independent virtual machines
US6453333B1 (en) 1997-06-11 2002-09-17 Lion Bioscience Ag 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
US6496871B1 (en) * 1998-06-30 2002-12-17 Nec Research Institute, Inc. Distributed agent software system and method having enhanced process mobility and communication in a computer network
US6513157B1 (en) 1999-11-30 2003-01-28 Recursion Software, Inc. System and method for dynamically aggregating objects
US6567861B1 (en) 1997-09-17 2003-05-20 International Business Machines Corporation Method and apparatus for remotely running objects using data streams and/or complex parameters
US6601018B1 (en) 1999-02-04 2003-07-29 International Business Machines Corporation Automatic test framework system and method in software component testing
US6629128B1 (en) 1999-11-30 2003-09-30 Recursion Software, Inc. System and method for distributed processing in a computer network
US6701382B1 (en) 1998-12-23 2004-03-02 Nortel Networks Limited Name service for transparent container objects
US6714976B1 (en) 1997-03-20 2004-03-30 Concord Communications, Inc. Systems and methods for monitoring distributed applications using diagnostic information
US6851118B1 (en) 1997-10-06 2005-02-01 Sun Microsystems, Inc. Remote object access
US6931455B1 (en) 1999-11-30 2005-08-16 Recursion Software, Inc. System and method for communications between a CORBA object request broker and a non-CORBA object request broker
US6947965B2 (en) 1999-11-30 2005-09-20 Recursion Software, Inc. System and method for communications in a distributed computing environment
US6951021B1 (en) 1999-11-30 2005-09-27 Recursion Software, Inc. System and method for server-side communication support in a distributed computing environment
US6993774B1 (en) 1998-10-19 2006-01-31 Recursion Software, Inc. System and method for remote enabling classes without interfaces
US7347342B2 (en) 2003-10-30 2008-03-25 Elmar Grandy Container for holding sterile goods and sterile goods dispenser

Patent Citations (99)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5325524A (en) 1989-04-06 1994-06-28 Digital Equipment Corporation Locating mobile objects in a distributed computer system
US5619710A (en) 1990-08-14 1997-04-08 Digital Equipment Corporation Method and apparatus for object-oriented invocation of a server application by a client application
US5341478A (en) 1990-08-14 1994-08-23 Digital Equipment Corporation Methods and apparatus for providing dynamic invocation of applications in a distributed heterogeneous environment
US5481721A (en) 1991-07-17 1996-01-02 Next Computer, Inc. Method for providing automatic and dynamic translation of object oriented programming language-based message passing into operation system message passing using proxy objects
US5396630A (en) 1992-10-06 1995-03-07 International Business Machines Corporation Method and system for object management across process boundries in a data processing system
US5511197A (en) 1992-11-13 1996-04-23 Microsoft Corporation Method and system for network marshalling of interface pointers for remote procedure calls
US5577251A (en) 1992-12-21 1996-11-19 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
US5655101A (en) 1993-06-01 1997-08-05 International Business Machines Corporation Accessing remote data objects in a distributed memory environment using parallel address locations at each local memory to reference a same data object
US5603031A (en) 1993-07-08 1997-02-11 General Magic, Inc. System and method for distributed computation based upon the movement, execution, and interaction of processes in a network
US6016393A (en) 1993-07-08 2000-01-18 General Magic, Inc. System and method for distributed computation based upon the movement, execution, and interaction of processes in a network
US5432924A (en) 1993-12-15 1995-07-11 Microsoft Corporation Method and system for selectively applying an appropriate object ownership model
US5812781A (en) 1994-09-05 1998-09-22 Telefonaktiebolaget Lm Ericsson System for routing incoming connection-less messages to processes which are already handling messages from same source node
US5634010A (en) 1994-10-21 1997-05-27 Modulus Technologies, Inc. Managing and distributing data objects of different types between computers connected to a network
US6182154B1 (en) 1994-11-21 2001-01-30 International Business Machines Corporation Universal object request broker encapsulater
US6026415A (en) 1995-01-31 2000-02-15 Next Software, Inc. Transparent local and distributed memory management system
EP0727739A1 (en) 1995-02-17 1996-08-21 International Business Machines Corporation Object-oriented programming interface for developing and running network management applications on a network communication infrastructure
US6182153B1 (en) 1995-02-17 2001-01-30 International Business Machines Corporation Object-oriented programming interface for developing and running network management applications on a network communication infrastructure
US5822585A (en) 1995-02-21 1998-10-13 Compuware Corporation System and method for cooperative processing using object-oriented framework
US5793965A (en) 1995-03-22 1998-08-11 Sun Microsystems, Inc. Method and apparatus for determining the type of an object in a distributed object system
US5724503A (en) 1995-03-31 1998-03-03 Sun Microsystems, Inc. Method and apparatus for interpreting exceptions in a distributed object system
US5848419A (en) 1995-03-31 1998-12-08 Sun Microsystems, Inc. Methods and apparatus for providing transparent persistence in a distributed object operating environment
US6321275B1 (en) 1995-04-24 2001-11-20 Microsoft Corporation Interpreted remote procedure calls
US6041166A (en) 1995-07-14 2000-03-21 3Com Corp. Virtual network architecture for connectionless LAN backbone
US5745703A (en) 1995-07-18 1998-04-28 Nec Research Institute, Inc. Transmission of higher-order objects across a network of heterogeneous machines
US5778227A (en) 1995-08-01 1998-07-07 Intergraph Corporation System for adding attributes to an object at run time in an object oriented computer environment
US6085086A (en) 1995-08-22 2000-07-04 Lucent Technologies Inc. Network-based migrating user agent for personal communication services
US5903725A (en) 1995-09-15 1999-05-11 International Business Machines Corporation Recoverable proxy object in an object oriented environment
US5737607A (en) 1995-09-28 1998-04-07 Sun Microsystems, Inc. Method and apparatus for allowing generic stubs to marshal and unmarshal data in object reference specific data formats
US6006018A (en) 1995-10-03 1999-12-21 International Business Machines Corporation Distributed file system translator with extended attribute support
US5787175A (en) 1995-10-23 1998-07-28 Novell, Inc. Method and apparatus for collaborative document control
US5862325A (en) 1996-02-29 1999-01-19 Intermind Corporation Computer-based communication system and method using metadata defining a control structure
US6374308B1 (en) 1996-04-23 2002-04-16 Sun Microsystems, Inc. Method and apparatus for interactively connecting distributed objects to a graphic user interface
US5881230A (en) 1996-06-24 1999-03-09 Microsoft Corporation Method and system for remote automation of object oriented applications
US6044409A (en) 1996-06-26 2000-03-28 Sun Microsystems, Inc. Framework for marshaling and unmarshaling argument object references
US5812793A (en) 1996-06-26 1998-09-22 Microsoft Corporation System and method for asynchronous store and forward data replication
US5781633A (en) 1996-07-01 1998-07-14 Sun Microsystems, Inc. Capability security for transparent distributed object systems
US6282580B1 (en) 1996-07-02 2001-08-28 Sun Microsystems, Inc. Bridge providing communication between different implementations of object request brokers
US6012081A (en) 1996-07-03 2000-01-04 Siemens Aktiengesellschaft Service and event synchronous/asynchronous manager
US6260078B1 (en) 1996-07-03 2001-07-10 Sun Microsystems, Inc. Using a distributed object system to find and download java-based applications
US6347342B1 (en) 1996-07-15 2002-02-12 Next Software, Inc. Method and apparatus for dynamically brokering object messages among object models
US5983233A (en) 1996-08-20 1999-11-09 Alcatel Alsthom Compagnie Generale D'electricite 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
US5956737A (en) 1996-09-09 1999-09-21 Design Intelligence, Inc. Design engine for fitting content to a medium
US5928335A (en) 1996-10-30 1999-07-27 Ricoh Company, Ltd. Client/server system having middleware-based interface between client and server image processing objects
US5987506A (en) 1996-11-22 1999-11-16 Mangosoft Corporation Remote access and geographically distributed computers in a globally addressable storage environment
US6061740A (en) 1996-12-09 2000-05-09 Novell, Inc. Method and apparatus for heterogeneous network management
US6178505B1 (en) 1997-03-10 2001-01-23 Internet Dynamics, Inc. Secure delivery of information in a network
US6304918B1 (en) 1997-03-11 2001-10-16 Microsoft Corporation Object interface control system
US20010003824A1 (en) 1997-03-14 2001-06-14 International Business Machines Corporation Bootstrapping technique for distributed object client systems
US6714976B1 (en) 1997-03-20 2004-03-30 Concord Communications, Inc. Systems and methods for monitoring distributed applications using diagnostic information
US5867665A (en) 1997-03-24 1999-02-02 Pfn, Inc Domain communications server
US5999988A (en) 1997-03-31 1999-12-07 Sun Microsystems, Inc. Method and apparatus for generating and employing a run-time generated stub to reference an object in object oriented systems
US6212574B1 (en) 1997-04-04 2001-04-03 Microsoft Corporation User mode proxy of kernel mode operations in a computer operating system
US6085030A (en) 1997-05-02 2000-07-04 Novell, Inc. Network component server
GB2326255A (en) 1997-05-07 1998-12-16 Ibm Automatic object distribution enables remote running of objects using local method calls
US6157960A (en) 1997-05-07 2000-12-05 International Business Machines Corporation Technique for programmatically creating distributed object programs
US6182155B1 (en) 1997-05-09 2001-01-30 International Business Machines Corporation Uniform access to and interchange between objects employing a plurality of access methods
US5897634A (en) 1997-05-09 1999-04-27 International Business Machines Corporation Optimized caching of SQL data in an object server system
US6453333B1 (en) 1997-06-11 2002-09-17 Lion Bioscience Ag 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
US6134591A (en) 1997-06-18 2000-10-17 Client/Server Technologies, Inc. Network security and integration method and system
US6151639A (en) 1997-06-19 2000-11-21 Sun Microsystems, Inc. System and method for remote object invocation
US6138251A (en) 1997-06-30 2000-10-24 Sun Microsystems, Inc. Method and system for reliable remote object reference management
US6230160B1 (en) 1997-07-17 2001-05-08 International Business Machines Corporation Creating proxies for distributed beans and event objects
US6195794B1 (en) 1997-08-12 2001-02-27 International Business Machines Corporation Method and apparatus for distributing templates in a component system
US6253253B1 (en) 1997-08-25 2001-06-26 International Business Machines Corporation Method and apparatus for optimizing references to objects in a data processing system
US6567861B1 (en) 1997-09-17 2003-05-20 International Business Machines Corporation Method and apparatus for remotely running objects using data streams and/or complex parameters
US6032190A (en) 1997-10-03 2000-02-29 Ascend Communications, Inc. System and method for processing data packets
US6851118B1 (en) 1997-10-06 2005-02-01 Sun Microsystems, Inc. Remote object access
US6253256B1 (en) 1997-10-15 2001-06-26 Sun Microsystems, Inc. Deferred reconstruction of objects and remote loading in a distributed system
US6343332B1 (en) 1997-10-20 2002-01-29 Fujitsu Limited Communication link information generating device, a three-tier client/server system, and a medium storing a communication link information generator program
US6092196A (en) 1997-11-25 2000-07-18 Nortel Networks Limited HTTP distributed remote user authentication system
US6434595B1 (en) * 1997-11-26 2002-08-13 International Business Machines Corporation Method of executing mobile objects and recording medium storing mobile objects
US6415315B1 (en) 1997-12-01 2002-07-02 Recursion Software, Inc. Method of moving objects in a computer network
US6141759A (en) 1997-12-10 2000-10-31 Bmc Software, Inc. System and architecture for distributing, monitoring, and managing information requests on a computer network
US6438616B1 (en) 1997-12-18 2002-08-20 Sun Microsystems, Inc. Method and apparatus for fast, local corba object references
US6205491B1 (en) 1997-12-18 2001-03-20 Sun Microsystems, Inc. Method and apparatus for deferred throwing of exceptions in C++
US6345382B1 (en) 1998-02-12 2002-02-05 International Business Machines Corporation Run-time customization in object-oriented design
US6012067A (en) 1998-03-02 2000-01-04 Sarkar; Shyam Sundar Method and apparatus for storing and manipulating objects in a plurality of relational data managers on the web
US6324543B1 (en) * 1998-03-06 2001-11-27 International Business Machines Corporation Dynamic object migration method using proxy object links to support automatic object distribution in an object-oriented environment
US6237135B1 (en) 1998-06-18 2001-05-22 Borland Software Corporation Development system with visual design tools for creating and maintaining Java Beans components
US6138235A (en) 1998-06-29 2000-10-24 Sun Microsystems, Inc. Controlling access to services between modular applications
US6496871B1 (en) * 1998-06-30 2002-12-17 Nec Research Institute, Inc. Distributed agent software system and method having enhanced process mobility and communication in a computer network
US6442620B1 (en) 1998-08-17 2002-08-27 Microsoft Corporation Environment extensibility and automatic services for component applications using contexts, policies and activators
US6446084B1 (en) 1998-09-22 2002-09-03 Sun Microsystems, Inc. Optimizing symbol table lookups in platform-independent virtual machines
US6405246B1 (en) 1998-09-22 2002-06-11 International Business Machines Corporation Automatic and dynamic software code management
US6338089B1 (en) 1998-10-06 2002-01-08 Bull Hn Information Systems Inc. Method and system for providing session pools for high performance web browser and server communications
US6356930B2 (en) 1998-10-16 2002-03-12 Silverstream Software, Inc. Connection concentrator for distributed object systems
US6385661B1 (en) 1998-10-19 2002-05-07 Recursion Software, Inc. System and method for dynamic generation of remote proxies
US6993774B1 (en) 1998-10-19 2006-01-31 Recursion Software, Inc. System and method for remote enabling classes without interfaces
US6549955B2 (en) 1998-10-19 2003-04-15 Recursion Software, Inc. System and method for dynamic generation of remote proxies
US6701382B1 (en) 1998-12-23 2004-03-02 Nortel Networks Limited Name service for transparent container objects
US6601018B1 (en) 1999-02-04 2003-07-29 International Business Machines Corporation Automatic test framework system and method in software component testing
US6347341B1 (en) 1999-02-22 2002-02-12 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
US6269373B1 (en) 1999-02-26 2001-07-31 International Business Machines Corporation Method and system for persisting beans as container-managed fields
US6629128B1 (en) 1999-11-30 2003-09-30 Recursion Software, Inc. System and method for distributed processing in a computer network
US6931455B1 (en) 1999-11-30 2005-08-16 Recursion Software, Inc. System and method for communications between a CORBA object request broker and a non-CORBA object request broker
US6947965B2 (en) 1999-11-30 2005-09-20 Recursion Software, Inc. System and method for communications in a distributed computing environment
US6951021B1 (en) 1999-11-30 2005-09-27 Recursion Software, Inc. System and method for server-side communication support in a distributed computing environment
US6513157B1 (en) 1999-11-30 2003-01-28 Recursion Software, Inc. System and method for dynamically aggregating objects
US7347342B2 (en) 2003-10-30 2008-03-25 Elmar Grandy Container for holding sterile goods and sterile goods dispenser

Non-Patent Citations (41)

* Cited by examiner, † Cited by third party
Title
"Distribution Object Activation and Communication Protocols", IBM Technical Disclosure Bulletin, US, IBM Corp. New York, vol. 37(7), (Jul. 1, 1994),539-542.
"Final Office Action", U.S. Appl. No. 11/158,734, (Aug. 20, 2009), 18 pages.
"Improved Process for Visual Development of Client/Server Programs", IBM Technical Disclosure Bulletin, vol. 41(1), XP-000772108,(Jan. 1998),281-283.
"Java Core Reflection, API and Specification", JavaSoft, (Jan. 1997),40-47.
"Java RMI Tutorial", Revision 1.3, JDK 1.1 FCS, Sun Microsystems, (Feb. 10, 1997),1-14.
"Life Cycle Service Specification", CORBA Object Services Specification, Chp. 6, OMG, c9i.omg.org/docs/formal/97-02-11.pdf,, (Feb. 11, 1997),pp. 6-1 through 6-62.
"Non Final Action", U.S. Appl. No. 11/858,878, (Mar. 29, 2010), 30 pages.
"Non Final Offce Action", U.S. Appl. No. 11/158,734, (Feb. 19, 2010), 21 pages.
"Passing Proxies as Parameters to Methods and Return Values from Methods", IBM Technical Disclosure Bulletin, vol. 41(1), XP-000772037,(Jan. 1998),89-92.
"PCT/US99/24510", International Search Report for Appl. No. PCT/US99/24510,(Apr. 19, 2000),4.
"SOMobjects Developer's Toolkit Programmer's Guide", vol. I: SOM and DSOM, (Dec. 1996),275-276.
"The Component Object Model (DRAFT) Specification", Microsoft Corporation, Mar. 6, 1995),1-4, 39-46.
"The Component Object Model Specification", Microsoft Corporation and Digital Equipment Corporation, Chapters 1 and 2 (printed on Oct. 26, 2005 from daimi.au.dk*-datpete/COT/COM SPEC/html/com_spec.html),(Oct. 24, 1995),54.
Bent, Thomsen et al., "Mobile Agents", External Report ECRC-92-21, European Computer-Industry Research Center, (1995).
Bieszczad, A. "Towards Plug-and-Play Networks wilh Mobile Code", SCE Technical Report, (Mar. 1997),17.
Bowers, "Some Principles for the Encapsulation of The Behavior of Aggregate Objects", IEEE, (1993),6/1-6/4.
Brando, Thom "Comparing COBRA and DCE", (Mar. 1996).
Cappelo, Robert "Overview of RMI Architecture (Computer Science Online Course Notes)", University of California Santa Barbara Department of Computer Science, cs.ucsb.edu/-cappello/290i/lectures/rmi/architecture/sld001.htm,(Sep. 7, 1998).
Glen McCluskey, "Using Java Reflection," Jan. 1998, 6 pages. *
Glen, McCluskey "Using Java Reflection", article retrieved from java.sun.com website., (Jan. 1998).
Hayton, Richard et al., "FlexiNet Architecture", (Feb. 1999),171-178.
Hayton, Richard et al., "Mobile Java Objects", (1998).
Henderson, Sellers et al., "What is This Thing Called Aggregation?", IEEE, (Jun. 1999),236-250.
Henry, E. et al., "Fine-Grained Mobility in the Emerald System", ACM, (Feb. 1998),22.
Hof, Markus "Just-in-Time Stub Generation", Proceedings of the Joint Modular Languages Conference (JMLC) 97, Linz, Austria,(Mar. 19-21, 1997),197-206.
HOP;OMG's Internet Inter-ORG Protocol, A Brief discription, printed from omg.org,(1994).
Johansen, Dag et al., "An Introduction to the TACOMA Distributed System Version 1.0", Technical Report 95-23, Department of Computer Science, University of Troms, Norway, (Jun. 1995).
Matthew Izatt and Patrick Chan, "Ajents: Toward an Environment for Parallel, Distributed and Mobile Java Applications", Jun. 1999, pp. 1-10. *
McKie, S. "Software Agents: Application Intelligence Goes Undercover", DBMS, (Apr. 1995),8.
McManis, Chuck "Take an in-depthlook at the java reflection API", retrieved from JavaWorld.com, (Sep. 1997),1-10.
Moons, H. et al., "Object Migration In a Heterogeneous World-A Multi-Dimensional Affair", IEEE, (1993),62-72.
Orfali, et al., "The Essentiai Distributed Objects Survival Guide", Chapter 4, Published by John Wiley & Suns, Inc., (1996),67-90.
Petrie, C. J., "Agent-based Engineering, the Web, and Intelligence", IEEE Expert, (Dec. 1996),12.
Richard Hayton and ANSA Team, "FlexiNet Architecture," Feb. 1999, p. 171-178.
Richard Hayton, Mike Bursell, Douglas Donaldson, Andrew Herbert, "Mobile Java Objects," 1998.
Robert, Gray et al., "Mobile agents for mobile computing", Technical Report PCS-TR96-285, Dept. of Computer Science, Dartmouth College,(May 1996).
Roy, Mark et al., "IChoosing between COBRA and DCOM", (Oct. 1996).
Roy, Mark et al., "Interworking COM with COBRA", (May 1996).
Spruit, Sandor "Reflections on Java, Beans, and Relational databases", retrieved from JavaWorld.com, (Sep. 1997),1-8.
Wayner, P. "Free Agents", BYTE, (Mar. 1995),7.
Wescom, et al., "The object/agent approach: A computing model for the future", Object Magazine, (Mar.-Apr. 1995),31-33.

Also Published As

Publication number Publication date
US6678743B1 (en) 2004-01-13

Similar Documents

Publication Publication Date Title
USRE41706E1 (en) Moving objects in a distributed computing environment
US6389452B1 (en) Method of communicating between objects and agents across a computer network
US6233601B1 (en) Itinerary based agent mobility including mobility of executable code
US6282568B1 (en) Platform independent distributed management system for manipulating managed objects in a network
US6408342B1 (en) Communications framework for supporting multiple simultaneous communications protocols in a distributed object environment
EP0660234B1 (en) Method and system for executing code remotely
US6477564B1 (en) Process for transforming and routing data between agent servers present in some machines and a central agent server present in another machine
US6415315B1 (en) Method of moving objects in a computer network
US5819281A (en) Notification of aspect value change in object-oriented programming
US6490255B1 (en) Network management system
McCullough Transparent forwarding: First steps
US20020004848A1 (en) System and method of providing an asynchronous interface between a client system and an enterprise javabeans-enabled server
US6535928B1 (en) Method of determining the timing for reclaiming a remote object
JPH08263292A (en) Object-oriented programming interface and mapping method
US20070094675A1 (en) Object mobility
US6442586B1 (en) Method of moving objects across multiple locations in a computer network
US5454109A (en) Data processing system with interface between application programs and external tools residing in separate environments
US6834389B1 (en) Method of forwarding messages to mobile objects in a computer network
US6205491B1 (en) Method and apparatus for deferred throwing of exceptions in C++
US6513157B1 (en) System and method for dynamically aggregating objects
Desbiens et al. Communication and tracking infrastructure of a mobile agent system
US6321261B1 (en) Method of constructing an object remotely across a computer network
US6519653B1 (en) Method of communicating between agent objects in a computer network
JP2001502093A (en) Path information based agent movement including movement of executable code
US5966713A (en) Method for determining the contents of a restoration log

Legal Events

Date Code Title Description
AS Assignment

Owner name: OBJECTSPACE, INC., TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:GUTHRIE, RHETT DAVIS;GLASS, GRAHAM W.;REEL/FRAME:020111/0822

Effective date: 19981011

AS Assignment

Owner name: RECURSION SOFTWARE, INC., TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:OBJECTSPACE, INC.;REEL/FRAME:020121/0928

Effective date: 20020214

Owner name: MAINLINE DATA LLC, NEVADA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:RECURSION SOFTWARE, INC.;REEL/FRAME:020121/0966

Effective date: 20050621

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

CC Certificate of correction
FPAY Fee payment

Year of fee payment: 8

FPAY Fee payment

Year of fee payment: 12

AS Assignment

Owner name: XYLON LLC, DELAWARE

Free format text: MERGER;ASSIGNOR:MAINLINE DATA LLC;REEL/FRAME:037053/0611

Effective date: 20150813