Moving objects in a distributed computing environment
Claim Score by NHIP
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).

Term
Term ended
Expired 30 November 2019, 6.8 years ago.
- Priority
- Filed
- Granted
- Expired
- Today
100 claims: 5 independent, 95 dependent
- 1A 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.
- 20Broadest claimClaim Score 50, average(NHIP)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.
- 41One 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.
- 61A 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.
- 81One 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.
Independent claims5
80 paragraphs in 5 sections, as filed
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 hasas 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:
<figref idref="DRAWINGS">FIG. 1</figref> illustrates a block diagram of an application program utilizing aggregate objects;
<figref idref="DRAWINGS">FIG. 2</figref> illustrates a block diagram of the application program utilizing aggregate objects where facet objects are distributed in different processing environments;
<figref idref="DRAWINGS">FIG. 3</figref> illustrates a block diagram of a facet control module used within the application program;
<figref idref="DRAWINGS">FIG. 4</figref> illustrates a flow diagram illustrating creation of aggregate objects;
<figref idref="DRAWINGS">FIG. 5</figref> illustrates a flow diagram illustrating a method of locating an object that extends a requested class or implements a requested interface;
<figref idref="DRAWINGS">FIG. 6</figref> illustrates a flow diagram illustrating a method for adding a class to an aggregate object;
<figref idref="DRAWINGS">FIGS. 7A-7F</figref> 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;
<figref idref="DRAWINGS">FIGS. 8A-8B</figref> illustrate an exemplary process for forwarding messages by a reference holder; and
<figref idref="DRAWINGS">FIGS. 9A-9C</figref> 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 <figref idref="DRAWINGS">FIG. 1</figref>, an application program using dynamically aggregated objects is generally indicated at <b>10</b>. An application program <b>12</b> may access one or more aggregate objects <b>14</b> through a facet control module <b>30</b>. Aggregate object <b>14</b> includes a set of facets <b>32</b> that may contain one or more facets such as a primary facet <b>34</b>, a first facet <b>36</b>, and a second facet <b>38</b>. One or more facet objects <b>28</b> are linked to the set of facets <b>32</b> in a one to one correspondence. A primary facet object <b>16</b> having a primary interface <b>18</b> is linked to primary facet <b>34</b>, a first facet object <b>20</b> having a first interface <b>22</b> is linked to first facet <b>36</b>, and a second facet object <b>24</b> having a second interface <b>26</b> is linked to second facet <b>38</b>.
Aggregate object <b>14</b> is an aggregation of one or more facet objects <b>28</b> within an object-oriented environment. Aggregate object <b>14</b> and the associated facet objects <b>28</b> function as a single logical object within the object-oriented environment. A change to one of the facet objects <b>28</b> creates a logical change in the other facet objects <b>28</b> and aggregate object <b>14</b>. For example, if one of the facet objects <b>28</b> moves to a different processing environment, or address space, the aggregate object <b>14</b> to which the particular facet object <b>28</b> is linked and any other associated facet objects <b>28</b> will move as a single logical object to the new, processing environment, or address space. Primary facet objects <b>16</b>, first facet object <b>20</b>, and second facet object <b>24</b> represent a group of one or more facet objects <b>28</b>.
Each aggregate object <b>14</b> communicates directly with its associated set of facets <b>32</b>. Each facet within a set of facets <b>32</b> is linked to a particular facet object <b>28</b>. Each facet in the set of facets <b>32</b> contains basic information related to its associated facet object <b>28</b> to facilitate use of the aggregate object <b>14</b> within application program <b>12</b>. The information contained in each facet in the set of facets <b>32</b> for its associated facet object <b>28</b> includes the class of the facet object <b>28</b> and any interfaces implemented by the facet object <b>28</b>. In one embodiment, each facet in set of facets <b>32</b> is a proxy object created from the associated facet object <b>28</b>. The proxy object is created by using Java Reflection to determine a particular facet object's <b>28</b> name, class, and interfaces. This information is then packaged into a facet in set of facets <b>32</b>. The particular facet in set of facets <b>32</b> is an object that includes the name, class, and interfaces for the associated facet object <b>28</b>. 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 <b>14</b> 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 <b>14</b> as the primary facet object <b>16</b> and aggregating additional objects within aggregate object <b>14</b> as facet objects <b>28</b>. Within application program <b>12</b>, a particular object may be the primary facet object <b>16</b> of only one aggregate object <b>14</b>. Each aggregate object <b>14</b> in application program <b>12</b> will have a unique primary facet object <b>16</b>. 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 <b>14</b> with the specified object as the associated primary facet object <b>16</b>. The term “dynamically” is used here to refer to using program statements during execution of application program <b>12</b> to create aggregate object <b>14</b>. The software developer then dynamically adds first facet object <b>20</b> and second facet object <b>24</b> to aggregate object <b>14</b>. First facet object <b>20</b> and second aggregate object <b>24</b> provide additional functionality for primary facet object <b>16</b>. Any method of any facet object <b>28</b> may affect all facet objects <b>28</b> within aggregate object <b>14</b>. Therefore, invoking a method on first facet object <b>20</b> will effect a change in primary facet object <b>16</b>.
Application program <b>12</b> may create and utilize one or more aggregate objects <b>14</b>. Each aggregate object <b>14</b> has one or more associated facet objects <b>28</b>. Facet objects <b>28</b> may be added and deleted as application program <b>12</b> progresses depending upon processing requirements. To access a particular facet object <b>28</b>, application program <b>12</b> may request access to the particular facet object <b>28</b> that extends the functionality of a primary facet object <b>16</b> by requesting a class or interface using commands that invoke facet control module <b>30</b>. Facet control module <b>30</b> then scans the set of facets <b>32</b> associated with the aggregate object <b>14</b> identified in the facet control system command until locating the particular facet object <b>28</b> that has a class that equals or extends the requested class or implements the requested interface. Facet control module <b>30</b> returns a reference to the first facet in the set of facets <b>32</b> that has a class that equals or extends the requested class or implements the requested interface. Application program <b>12</b> can then invoke the particular facet object <b>28</b> by using the returned reference to the facet in the set of facets <b>32</b>. In another embodiment, facet control system <b>30</b> may return a list of all facets within the set of facets <b>32</b> with associated facet objects <b>28</b> that have a class that equal or extend the requested class or implement the requested interface. Application program <b>12</b>can then determine which facet object <b>28</b> in the returned reference list to invoke.
If no facet object <b>28</b> 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 <b>12</b> as a null reference. Application program <b>12</b> can then determine whether a new aggregate object <b>14</b> should be created, whether an object should be added to an existing aggregate object <b>14</b> as an additional facet object <b>28</b>, or whether appropriate error handling procedures should be performed.
Referring to <figref idref="DRAWINGS">FIG. 2</figref>, a system with an application program <b>12</b> using dynamically aggregated objects in a distributed processing environment is generally indicated at <b>40</b>. The structure and operation of system <b>40</b> is the same as system <b>10</b> except that facet objects <b>28</b> may exist within different address spaces in a distributed processing environment and be accessed by aggregate object <b>14</b> using proxies.
In system <b>40</b>, application program <b>12</b>, facet control module <b>30</b>, aggregate object <b>14</b>, set of facets <b>32</b> and primary facet object <b>16</b> all exist within a first environment <b>42</b>. First facet object <b>20</b> exists within a second environment <b>44</b>. Communications between aggregate object <b>14</b> and first facet object <b>20</b> are facilitated by using an appropriate distributed processing system such as an object request broker. In one embodiment, a first facet object proxy <b>46</b> resides in first environment <b>42</b> and is logically coupled to first facet object <b>20</b> in second environment <b>44</b>. First facet object proxy <b>46</b> may be a conventional proxy object created from first facet object <b>20</b>. First facet object proxy <b>46</b> has an interface <b>47</b> modeled on first interface <b>22</b>. Interface <b>47</b> has a format and needed information similar to first interface <b>22</b>. Second facet object <b>24</b> resides in a third environment <b>48</b>. Communications between aggregate object <b>14</b> and second facet object <b>24</b> are facilitated by using an appropriate distributed processing system such as an object recognition broker. In one embodiment, a second facet object proxy <b>50</b> resides in first environment <b>42</b> and provides communications between aggregate object <b>14</b> and second facet object <b>24</b>. Second facet object proxy <b>50</b> may be a conventional proxy object created from second facet object <b>24</b>. Second facet object proxy <b>50</b> has an interface modeled on second interface <b>26</b>. Interface <b>51</b> has a format and needed information similar to second interface <b>26</b>.
Referring to <figref idref="DRAWINGS">FIG. 3</figref>, a facet control module is generally indicated at <b>30</b>. Facet control module <b>30</b> provides dynamic aggregation of existing objects for application program <b>12</b>. Facet control module <b>30</b> consists of several modules including a facet creator <b>70</b>, an object adder <b>72</b>, an object deleter <b>74</b>, and a class/interface finder <b>76</b>. The functionality of facet control module <b>30</b> will be discussed with reference to the flow diagrams of <figref idref="DRAWINGS">FIGS. 4</figref>, <b>5</b> and <b>6</b>.
Referring to <figref idref="DRAWINGS">FIG. 4</figref>, a flow diagram illustrating a method for dynamically aggregating objects is generally indicated at <b>100</b>. The method commences at step <b>102</b> where application program <b>12</b> requests that an aggregate object <b>14</b> be created with a specified primary object. The method proceeds to step <b>104</b> where facet control module <b>30</b> receives the request and forwards it to facet creator <b>70</b> to create an aggregate object <b>14</b> with a primary facet object <b>16</b> of the specified object named in the create aggregate object request. A particular object may be the primary facet object <b>16</b> of only one aggregate object <b>14</b>. The method proceeds to step <b>106</b> where a new facet <b>32</b> for the specified primary facet object <b>16</b> is created as primary facet <b>34</b>. The method proceeds to step <b>108</b> where the specified primary facet object <b>16</b> is identified and linked to primary facet <b>34</b>. The method proceeds to step <b>110</b> where primary facet <b>34</b> is linked to the new aggregate object <b>14</b>.
In one embodiment, the following syntax may be used to create an aggregate object <b>14</b>:
Facets myFacets=new Facets (myPrimary);
where myPrimary identifies an existing object which will become primary facet object <b>16</b> within the newly created aggregate object <b>14</b> identified as myFacets. Facet control module <b>30</b> creates an aggregate object <b>14</b> identified as myFacets. Next, facet control module <b>30</b> creates a primary facet <b>34</b> identified as primaryFacet. Primary facet <b>34</b> is linked to aggregate object <b>14</b>. Next, facet control module <b>30</b> creates a primary facet object <b>16</b> identified as myPrimary. Primary facet object <b>16</b> is linked to primary facet <b>34</b>. Facet control module <b>30</b> creates primary facet <b>34</b> such that primary facet <b>34</b> contains the class of primary facet object <b>16</b> and the interfaces implemented by primary facet object <b>16</b>.
Referring to <figref idref="DRAWINGS">FIG. 5</figref>, a flow diagram illustrating a method for locating an object that extends a requested class or implements a requested interface within an aggregate object <b>14</b> is generally indicated at <b>120</b>. The method proceeds to step <b>122</b> where application program <b>12</b> requests that facet control module <b>30</b> locate a facet object <b>28</b> 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 <b>30</b> forwards the request to class/interface finder <b>76</b>. In one embodiment, the following syntax may be used to request access to a facet object <b>28</b> 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 <b>14</b> (myfacets) and the operation (get) for class/interface finder <b>76</b>. The class name in the above example may also identify a requested interface name. The method proceeds to step <b>124</b> where a facet reference is set to aggregate object's <b>14</b> primary facet, primary facet <b>34</b>. Primary facet <b>34</b> should be the first facet in the set of facets <b>32</b>.
The method proceeds to decisional step <b>125</b> where class/interface finder <b>76</b> 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 <b>32</b> identified by the facet-reference meets one of the above tests, the Yes branch of decisional step <b>125</b> proceeds to step <b>126</b> where class/interface finder <b>76</b> returns a reference to the facet in the set of facets <b>32</b> identified by the facet-reference. The method proceeds to step <b>128</b> where application program <b>12</b> uses the returned reference to identify the facet object <b>28</b> through the reference to a facet in the set of facets <b>32</b>. Application program <b>12</b> then invokes the facet object <b>28</b>. After step <b>128</b>, the method terminates.
Returning to decisional step <b>125</b>, if the facet in the set of facets <b>32</b> identified by the facet-reference does not meet one of the aforementioned tests, the No branch of decisional step <b>125</b> proceeds to decisional step <b>130</b> where class/interface finder <b>76</b> determines whether aggregate object <b>14</b> has more facets within its associated set of facets <b>32</b>. If the set of facets <b>32</b> includes more facets, the Yes branch of decisional step <b>130</b> proceeds to step <b>132</b> where the facet-reference is set to the next facet, first facet <b>36</b> in this example, in the set of facets <b>32</b> associated with aggregate object <b>14</b>. The method returns to decisional step <b>125</b> to process the next facet identified by the facet-reference.
Returning to decisional step <b>130</b>, if the set of facets <b>32</b> associated with aggregate object <b>14</b> does not include more facets, the No branch of decisional step <b>130</b> proceeds to step <b>134</b> where a null reference is returned. Application program <b>12</b> would then perform appropriate error processing upon receipt of the null reference. After step <b>134</b>, the method terminates.
Referring to <figref idref="DRAWINGS">FIG. 6</figref>, a flow diagram illustrating a method for adding objects to an aggregate object <b>14</b> is generally indicated at <b>150</b>. The method commences at step <b>152</b> where application program <b>12</b> requests a facet object <b>28</b> 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 <b>14</b> as facet objects <b>28</b>:
myFacets.of (“class name”);
where the desired aggregate object <b>14</b> 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 <b>14</b>, class names should be used so that an instance of the class may be generated and added to aggregate object <b>14</b> as a facet object <b>28</b>.
The method proceeds to step <b>154</b> where the method of <figref idref="DRAWINGS">FIG. 5</figref> identified in steps <b>122</b>-<b>126</b> and <b>130</b>-<b>134</b> is performed until a facet within the set of facets <b>32</b> associated with aggregate object <b>14</b> 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 <b>156</b> 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 <b>156</b> proceeds to step <b>158</b> where the reference received from step <b>126</b> in the method of <figref idref="DRAWINGS">FIG. 5</figref> is returned. If a null reference is not received, the requested class has already been added to the set of facets <b>32</b> in aggregate object <b>14</b> and processing may continue. After step <b>158</b> the method terminates.
Returning to decisional step <b>156</b>, if a null reference is received, the Yes branch of decisional step <b>156</b> proceeds to step <b>160</b> where object adder <b>72</b> creates an instance of the requested class. The method proceeds to step <b>162</b> where object adder <b>72</b> creates a new facet for the instance of the requested class. Object adder <b>72</b> 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 <b>32</b> associated with the aggregate object <b>14</b>.
The method proceeds to step <b>164</b> where object adder <b>72</b> links the instance of the requested class created in step <b>160</b> to the new facet created in step <b>162</b>. The method proceeds to step <b>166</b> where object adder <b>72</b> links the new facet created in step <b>162</b> to the aggregate object <b>14</b>. The method proceeds to step <b>168</b> where a reference to the new facet created in step <b>162</b> is returned. After step <b>168</b>, the method terminates.
In one embodiment, the facets.of command that is used to add objects to an existing aggregate object <b>14</b> may be used by software developers when they have determined that a requested class should be part of aggregate object <b>14</b> but they are not sure that the requested class has been added to facet objects <b>28</b> that are associated with aggregate object <b>14</b>. By using this type of command, the software developer requests a facet object <b>28</b> that has a class that equals or extends a requested class and is guaranteed that a reference to a facet object <b>28</b> 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 <b>16</b> of aggregate object <b>14</b>:
myFacets.getPrimary ( );
where the desired aggregate object <b>14</b> is identified as myFacets and the desired operation is identified as getPrimary. The sample command returns a reference to primary facet object <b>16</b>.
Another sample command from one embodiment of the present invention includes the following command to determine the members of set of facets <b>32</b> associated with aggregate object <b>14</b>;
myFacets.getFacets ( );
where the desired aggregate object <b>14</b> is identified as myfacets and the desired operation is identified as getfacets. The sample command returns a list of each facet object <b>28</b> associated with aggregate object <b>14</b>.
Object deleter <b>74</b> of facet control module <b>30</b> provides a software developer with the ability to delete a specified object from facet objects <b>28</b>. The software developer identifies the particular facet object <b>28</b> to be removed from aggregate object <b>14</b> and instructs facet control module <b>30</b> to remove the specified facet object from aggregate object <b>14</b>. Object deleter <b>74</b> physically deletes the associated facet in set of facets <b>32</b> and removes the link between the specified facet object and aggregate object <b>14</b>. 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 <b>16</b> linked to an aggregate object <b>14</b> and aggregating a mobility object as a second facet object <b>24</b> as previously described. To move an object from one address space to another address space, a mobility method is invoked within aggregate object <b>14</b>. As previously described, aggregate object <b>14</b> then locates the facet without one or more facet objects <b>28</b> 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 <figref idref="DRAWINGS">FIGS. 7A-7F</figref>, 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.
<figref idref="DRAWINGS">FIGS. 7A-7F</figref> utilize a modified illustration of the structure of the aggregate object depicted in FIG. <b>1</b>. Aggregate object <b>202</b>, primary facet object <b>204</b>, and mobility facet object <b>206</b> 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 <b>32</b>. Aggregate object <b>202</b> has a local reference <b>208</b> and a reference holder <b>210</b>. Reference holder <b>210</b> is linked to local reference <b>208</b> and receives and routes messages to aggregate object <b>202</b> through local reference <b>208</b>. Local reference <b>208</b> contains an address identifying the physical location of aggregate object <b>202</b>. Similarly, primary facet object <b>204</b> has a local reference <b>212</b> and a reference holder <b>214</b>. Mobility facet object <b>206</b> has a local reference <b>216</b> and a reference holder <b>218</b>. Aggregate object <b>202</b> is linked to both reference holder <b>214</b> for primary facet object <b>204</b> and to reference holder <b>218</b> for mobility facet object <b>206</b>. A primary object proxy <b>220</b> is linked to primary facet object <b>204</b> through reference holder <b>214</b>. Any message received by primary object proxy <b>220</b> is forwarded to reference holder <b>214</b> that further forwards the message to primary object <b>204</b>. Aggregate object <b>202</b>, primary facet object <b>204</b>, mobility facet object <b>206</b>, and their associated local references and reference holders may be generally referred to as an aggregate group <b>200</b>.
The movement process begins in <figref idref="DRAWINGS">FIG. 7A</figref> where mobility facet object <b>206</b> located at a current host address and port number <b>222</b> receives a move indication <b>224</b>. Move indication <b>224</b> may be received from a requesting object <b>226</b> located at an originating host address and port number <b>228</b>. Requesting object <b>226</b> 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 <b>200</b>. Aggregate group <b>200</b> may also be an agent that carries its own move indication <b>224</b>.
In response to move indication <b>224</b>, the move operation continues in <figref idref="DRAWINGS">FIG. 7B</figref> where mobility facet object <b>206</b> accesses a lock object <b>230</b> in order to block all incoming messages to aggregate group <b>200</b> while aggregate group <b>200</b> is moving to a new host address and port number. Mobility facet object <b>206</b> creates a serialized version <b>232</b> of itself at current host address and port number <b>222</b>. The serialized version <b>232</b> is then sent to a desired new host address and port number <b>234</b>. The serialized version may be created by mobility facet object <b>206</b> sending a message containing itself as a parameter. A new version <b>236</b> of mobility facet object <b>206</b> is created at new host address and port number <b>234</b> from the serialized version <b>232</b>.
The move operation continues in <figref idref="DRAWINGS">FIG. 7C</figref> where the new version <b>236</b> of mobility facet object <b>206</b> creates a serialize and move message <b>238</b> and sends it to aggregate group <b>200</b> at current host address and port number <b>222</b>. The serialize and move message <b>238</b> informs aggregate group <b>200</b> that the initial phase of moving was successful and that the other serializable parts of aggregate group <b>200</b> should be serialized and sent to new host address and port number <b>234</b>.
The move operation continues at <figref idref="DRAWINGS">FIG. 7D</figref> where the aggregate group <b>200</b> receives the serialize and move message <b>238</b>. Aggregate group <b>200</b> forwards the serialize and move message <b>238</b> to primary facet object <b>204</b>. Primary facet object <b>204</b> creates a serialized version <b>240</b> of itself at current host address and port number <b>222</b>. The serialized version <b>240</b> is then sent to the new host address and port number <b>234</b>. A new version <b>242</b> of primary facet object <b>204</b> is created at new host address and port number <b>234</b> from the serialized version <b>240</b>.
The move operation continues at <figref idref="DRAWINGS">FIG. 7E</figref> where a new aggregate group <b>244</b> is generated as previously described with a new aggregate object <b>246</b>, new version <b>242</b> of primary facet object <b>204</b> as a new primary facet object <b>248</b> and new version <b>236</b> of mobility facet object <b>206</b> as a new mobility facet object <b>250</b>. New aggregate group <b>244</b> and new aggregate object <b>246</b> register at new host address and port number <b>234</b> along with new version <b>236</b> of mobility facet object <b>206</b> and new version <b>242</b> of primary facet object <b>204</b>.
The move operation continues at <figref idref="DRAWINGS">FIG. 7F</figref> where new aggregate group <b>244</b> sends a successful message <b>252</b> to aggregate group <b>200</b> at current host address and port number <b>222</b>. Aggregate group <b>200</b>, aggregate object <b>202</b>, primary facet object <b>204</b>, and mobility facet object <b>206</b> deregister from current host address and port number <b>222</b>. In addition, aggregate object <b>202</b> severs its links to mobility facet object <b>206</b> and primary facet object <b>204</b>. Aggregate object <b>202</b> and mobility facet object <b>206</b> are garbage collected by the system. In addition, all references to primary facet object <b>204</b> are removed such that it is garbage collected by the system. Local reference <b>212</b> of primary facet object <b>204</b> is updated with new host address and port number <b>234</b> and becomes remote reference <b>254</b>. Reference holder <b>214</b> remains a reference holder at current host address and port number <b>222</b> for new version <b>242</b> of primary facet object <b>204</b> at new host address and port number <b>234</b>. Reference holder <b>214</b> is coupled to remote reference <b>254</b> that contains the address of the physical location of new version <b>242</b> of primary facet object <b>204</b>. Reference holder <b>214</b> is used to forward messages destined for primary facet object <b>204</b> to new host address and port number <b>234</b>.
Messages that were blocked by lock object <b>230</b> are released and forwarded as necessary to new host address and port number <b>234</b> as discussed in detail with relation to <figref idref="DRAWINGS">FIGS. 8A and 8B</figref>.
Forwarding
Referring to <figref idref="DRAWINGS">FIGS. 8A-8B</figref>, the process of forwarding messages for a moved object is illustrated. The forwarding operation begins at <figref idref="DRAWINGS">FIG. 8A</figref> where message MSG<b>1</b> from an object <b>306</b> at a first host address and port number <b>308</b> and message MSG<b>2</b> from an object <b>310</b> at a second host address and port number <b>312</b> require processing by an object <b>314</b>. Object <b>314</b> has moved to a new host address and port number <b>316</b>. Object <b>314</b> may be an aggregate group such as new aggregate group <b>244</b>. Messages MSG<b>1</b> and MSG<b>2</b> may be messages that were previously sent but were blocked as a result of move indication <b>224</b> or may be messages sent from out of date objects at host address and port numbers not knowing that object <b>314</b> has moved to new host address and port number <b>316</b>. A reference holder <b>302</b> and a remote address <b>304</b> occupy an old host address and port number <b>318</b> previously occupied by object <b>314</b>. In this example, old host address and port number <b>318</b> and first host address and port number <b>308</b> exist in the same address space identified by the host address. Thus communications between object <b>306</b> and reference holder <b>302</b> are local.
The forwarding operation continues at <figref idref="DRAWINGS">FIG. 8B</figref> where reference holder <b>302</b>, having the new host address and port number <b>316</b> for object <b>314</b> stored in remote reference <b>304</b>, reroutes message MSG<b>1</b> to object <b>314</b> at new host address and port number <b>316</b>. Messages, such as message MSG<b>1</b>, that are local with respect to reference holder <b>302</b> 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 <b>302</b> 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 <b>302</b>. After determining that message MSG<b>2</b> is a remote message, reference holder <b>302</b> throws an “object moved” exception to object <b>310</b>. Object <b>310</b> catches the “object moved” exception and resends message MSG<b>2</b> to new host address and port number <b>316</b> identified in the “object moved” exception. All future messages from object <b>310</b> are sent directly to object <b>314</b> at new host address and port number <b>316</b>. 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 <figref idref="DRAWINGS">FIGS. 9A-9C</figref>, various callback notifications that may occur during the movement of an object from current host address and port number <b>222</b> to new address and port number <b>234</b> are illustrated. Callback notifications may be sent provided that primary facet object <b>204</b> requests callback notification. In one embodiment, primary facet object <b>204</b> 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.
<figref idref="DRAWINGS">FIG. 9A</figref> illustrates a pre-departure notification for primary facet object <b>204</b> at current host address and port number <b>222</b>. Upon receipt of move notification <b>224</b>, a pre-departure notification may be generated for primary facet object <b>204</b> to determine if primary facet object <b>204</b> is available to be moved. If primary facet object <b>204</b> determines that it is not available to be moved, primary facet object <b>204</b> 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 <b>204</b> such as processing required to be completed at current host address and port number <b>222</b> has not been completed.
<figref idref="DRAWINGS">FIG. 9B</figref> illustrates a pre-arrival notification for new version <b>242</b> of primary facet object <b>204</b> at new host address and port number <b>234</b>. The pre-arrival notification occurs immediately after new version <b>242</b> of primary facet object <b>204</b> is created from serialized version <b>240</b> at new host address and port number <b>234</b>. The pre-arrival notification may be used by new version <b>242</b> of primary facet object <b>204</b> to determine if new version <b>242</b> was successfully created. If the new version <b>242</b> was not successfully created or any other suitable error condition exists within new version <b>242</b> of primary facet object <b>204</b>, new version <b>242</b> may throw a mobility exception causing the move to abort.
<figref idref="DRAWINGS">FIG. 9C</figref> illustrates post-movement callback notifications. After new aggregate group <b>244</b> registers at new host address and port number <b>234</b>, a post-arrival callback notification may be sent to new version <b>242</b> of primary facet object <b>204</b> at new host address and port number <b>234</b>. At this point, new aggregate group <b>244</b> is the active object and the move cannot be aborted. Thus, the move is deemed successful. This callback notification allows new aggregate group <b>244</b> to perform specific post-move processing that is not provided by the system.
After new aggregate group <b>244</b> registers at new host address and port number <b>234</b> but prior to aggregate group <b>200</b> disconnecting its component parts, a post-departure callback notification may be sent to primary facet object <b>204</b>. At this point, the component parts of aggregate group <b>200</b> are considered stale since a new active aggregate group <b>244</b> exists at new host address and port number <b>234</b>. The post-departure callback notification allows aggregate group <b>200</b> 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 <b>222</b>.
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.
Contents5
15 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15
Every citation, both waysCites: the store holds 102 of 103
| Document | Relation | Office | Cited during |
|---|---|---|---|
| EP0727739A1 | Cites | European Patent Office (EPO) | Applicant |
| US2001003824A1 | Cites | United States of America | Applicant |
| GB2326255A | Cites | United Kingdom | Applicant |
| US5325524A | Cites | United States of America | Applicant |
| US5341478A | Cites | United States of America | Applicant |
| US5396630A | Cites | United States of America | Applicant |
| US5432924A | Cites | United States of America | Applicant |
| US5481721A | Cites | United States of America | Applicant |
| US5511197A | Cites | United States of America | Applicant |
| US5577251A | Cites | United States of America | Applicant |
| US5603031A | Cites | United States of America | Applicant |
| US5619710A | Cites | United States of America | Applicant |
| US5634010A | Cites | United States of America | Applicant |
| US5655101A | Cites | United States of America | Applicant |
| US5724503A | Cites | United States of America | Applicant |
| US5737607A | Cites | United States of America | Applicant |
| US5745703A | Cites | United States of America | Applicant |
| US5778227A | Cites | United States of America | Applicant |
| US5781633A | Cites | United States of America | Applicant |
| US5787175A | Cites | United States of America | Applicant |
| US5793965A | Cites | United States of America | Applicant |
| US5812781A | Cites | United States of America | Applicant |
| US5812793A | Cites | United States of America | Applicant |
| US5822585A | Cites | United States of America | Applicant |
| US5848419A | Cites | United States of America | Applicant |
| US5862325A | Cites | United States of America | Applicant |
| US5867665A | Cites | United States of America | Applicant |
| US5881230A | Cites | United States of America | Applicant |
| US5897634A | Cites | United States of America | Applicant |
| US5903725A | Cites | United States of America | Applicant |
| US5928335A | Cites | United States of America | Applicant |
| US5956737A | Cites | United States of America | Applicant |
| US5983233A | Cites | United States of America | Applicant |
| US5987506A | Cites | United States of America | Applicant |
| US5999988A | Cites | United States of America | Applicant |
| US6006018A | Cites | United States of America | Applicant |
| US6012067A | Cites | United States of America | Applicant |
| US6012081A | Cites | United States of America | Applicant |
| US6016393A | Cites | United States of America | Applicant |
| US6026415A | Cites | United States of America | Applicant |
| US6032190A | Cites | United States of America | Applicant |
| US6041166A | Cites | United States of America | Applicant |
| US6044409A | Cites | United States of America | Applicant |
| US6061740A | Cites | United States of America | Applicant |
| US6085030A | Cites | United States of America | Applicant |
| US6085086A | Cites | United States of America | Applicant |
| US6092196A | Cites | United States of America | Applicant |
| US6134591A | Cites | United States of America | Applicant |
| US6138235A | Cites | United States of America | Applicant |
| US6138251A | Cites | United States of America | Applicant |
| US6141759A | Cites | United States of America | Applicant |
| US6151639A | Cites | United States of America | Applicant |
| US6157960A | Cites | United States of America | Applicant |
| US6178505B1 | Cites | United States of America | Applicant |
| US6182153B1 | Cites | United States of America | Applicant |
| US6182154B1 | Cites | United States of America | Applicant |
| US6182155B1 | Cites | United States of America | Applicant |
| US6195794B1 | Cites | United States of America | Applicant |
| US6205491B1 | Cites | United States of America | Applicant |
| US6212574B1 | Cites | United States of America | Applicant |
| US6230160B1 | Cites | United States of America | Applicant |
| US6237135B1 | Cites | United States of America | Applicant |
| US6253253B1 | Cites | United States of America | Applicant |
| US6253256B1 | Cites | United States of America | Applicant |
| US6260078B1 | Cites | United States of America | Applicant |
| US6269373B1 | Cites | United States of America | Applicant |
| US6282580B1 | Cites | United States of America | Applicant |
| US6304918B1 | Cites | United States of America | Applicant |
| US6321275B1 | Cites | United States of America | Applicant |
| US6324543B1 | Cites | United States of America | Search report |
| US6338089B1 | Cites | United States of America | Applicant |
| US6343332B1 | Cites | United States of America | Applicant |
| US6345382B1 | Cites | United States of America | Applicant |
| US6347341B1 | Cites | United States of America | Applicant |
| US6347342B1 | Cites | United States of America | Applicant |
| US6356930B2 | Cites | United States of America | Applicant |
| US6374308B1 | Cites | United States of America | Applicant |
| US6385661B1 | Cites | United States of America | Applicant |
| US6405246B1 | Cites | United States of America | Applicant |
| US6415315B1 | Cites | United States of America | Applicant |
| US6434595B1 | Cites | United States of America | Search report |
| US6438616B1 | Cites | United States of America | Applicant |
| US6442620B1 | Cites | United States of America | Applicant |
| US6446084B1 | Cites | United States of America | Applicant |
| US6453333B1 | Cites | United States of America | Applicant |
| US6496871B1 | Cites | United States of America | Search report |
| US6513157B1 | Cites | United States of America | Applicant |
| US6549955B2 | Cites | United States of America | Applicant |
| US6567861B1 | Cites | United States of America | Applicant |
| US6601018B1 | Cites | United States of America | Applicant |
| US6629128B1 | Cites | United States of America | Applicant |
| US6701382B1 | Cites | United States of America | Applicant |
| US6714976B1 | Cites | United States of America | Applicant |
| US6851118B1 | Cites | United States of America | Applicant |
| US6931455B1 | Cites | United States of America | Applicant |
| US6947965B2 | Cites | United States of America | Applicant |
| US6951021B1 | Cites | United States of America | Applicant |
| US6993774B1 | Cites | United States of America | Applicant |
| US7347342B2 | Cites | United States of America | Applicant |
| US20010003824A1 | Cites | United States of America | Third party observation |
2 members in 1 office
Priority claims6
| Document | Office | Kind | Date |
|---|---|---|---|
| 45149599 | United States of America | A | |
| 45149599 | United States of America | A | |
| 33141806 | United States of America | A | |
| 09451495 | – | – | – |
| US19990451495 | – | – | – |
| US20060331418 | – | – | – |
Members2
| Document | Office | Kind | |
|---|---|---|---|
| US6678743B1 | United States of America | B1 | |
| USRE41706EThis record | United States of America | E |
99 transactions on the USPTO file
Allowed after 4 non-final rejections and 2 final rejections.
- Non-final rejections
- 4
- Final rejections
- 2
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Email NotificationEML_NTR | EML_NTR | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Correspondence Address ChangeC.AD | C.AD | |
| Post Issue Communication - Certificate of CorrectionN423 | N423 | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Email NotificationEML_NTR | EML_NTR | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Receipt into PubsR1021 | R1021 | |
| Dispatch to FDCD1935 | D1935 | |
| Dispatch to FDCD1935 | D1935 | |
| Dispatch to FDCD1935 | D1935 | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail Miscellaneous Communication to ApplicantMM327 | MM327 | |
| Miscellaneous Communication to Applicant - No Action CountM327 | M327 | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Oath or Declaration Filed (Including Supplemental)C602 | C602 | |
| Response after Final ActionA.NE | A.NE | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Oath or Declaration Filed (Including Supplemental)C602 | C602 | |
| Response after Non-Final ActionA... | A... | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Mail Supplemental Non-Final ActionMSRNF | MSRNF | |
| Supplemental Non-Final ActionSRNF | SRNF | |
| Examiner Interview Summary Record (PTOL - 413)EXIN | EXIN | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Response after Non-Final ActionA... | A... | |
| Oath or Declaration Filed (Including Supplemental)C602 | C602 | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| New or Additional Drawing FiledC614 | C614 | |
| Response after Final ActionA.NE | A.NE | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Mail Advisory Action (PTOL - 303)MCTAV | MCTAV | |
| Advisory Action (PTOL-303)CTAV | CTAV | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| New or Additional Drawing FiledC614 | C614 | |
| Response after Final ActionA.NE | A.NE | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Correspondence Address ChangeC.AD | C.AD | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Cleared by OIPE CSRL194 | L194 | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| IFW TSS Processing by Tech Center CompleteTSSCOMP | TSSCOMP | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Cleared by OIPE CSRL194 | L194 | |
| Notice of Reissue Published in Official GazetteNRE. | NRE. | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Application Is Now CompleteCOMP | COMP | |
| Cleared by OIPE CSRL194 | L194 | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Additional Application Filing FeesADDFLFEE | ADDFLFEE | |
| A statement by one or more inventors satisfying the requirement under 35 USC 115, Oath of the ApplicOATHDECL | OATHDECL | |
| The identification of one or more legal entities other than the inventor(s), each such legal entityASGMT | ASGMT | |
| Cleared by OIPE CSRL194 | L194 | |
| Notice Mailed--Application Incomplete--Filing Date AssignedINCD | INCD | |
| Preliminary AmendmentA.PE | A.PE | |
| Initial Exam Team nnIEXX | IEXX |
8 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| AssignmentAS | AS | |
| Fee paymentFPAY | FPAY | |
| Fee paymentFPAY | FPAY | |
| Certificate of correctionCC | CC | |
| Fee payment procedurePAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS |
Numbers
- Publication
- RE041706
- Publication, DOCDB
- RE41706
- Publication, EPODOC
- USRE41706E
- Application
- 11331418
- Application, DOCDB
- 33141806
- Application, EPODOC
- US20060331418
Titles
- English
- Moving objects in a distributed computing environment
Classification
- CPC, 4
- G06F9/4862
- G06F9/4492
- G06F9/449
- G06F9/4493
- IPC, 2
- G06F9 44
- G06F9 54
- USPC, 5
- 719317000
- 709201000
- 709202000
- 719315000
- 719316000