Self-propagating software objects and applications
First Claim
1. A computer program product for enabling software objects and applications to dynamically self-propagate through a computing network, the computer program product embodied on one or more computer-readable media and comprising:
- computer-readable program code means for creating, by a requester, a request parcel comprising input data for processing a request from the requester and an identification of, and location information for, one or more first code segments required for processing the input data by a receiver of the request parcel;
computer-readable program code means for sending the request parcel from the requester to the receiver over the computing network;
computer-readable program code means for receiving the sent request parcel at the receiver;
computer-readable program code means for determining, by the receiver, whether the identified first code segments in the received request parcel are locally available to the receiver, and for obtaining them using the location information in the request parcel if not, so that they become locally available to the receiver;
computer-readable program code means for processing the request, by the receiver, using the input data and the locally available first code segments, thereby creating output data as a response to the received request;
computer-readable program code means for creating, by the receiver, a response parcel comprising the output data for the response and an identification of, and location information for, zero or more second code segments required for processing the output data by the requester;
computer-readable program code means for sending the response parcel from the receiver to the requester over the computing network;
computer-readable program code means for receiving the sent response parcel at the requester;
computer-readable program code means for determining, by the requester, whether the identified second code segments in the received response parcel, if any, are locally available to the requester, and for obtaining them using the location information in the response parcel if not, so that they become locally available to the requester; and
computer-readable program code means for processing, by the requester, the output data for the response using, when specified in the response parcel, the locally available second code segments.
1 Assignment
0 Petitions
Accused Products
Abstract
The present invention provides a method, system, and computer program product that enables software objects and applications to dynamically self-propagate, as needed, through a computer network. This technique may be used to dynamically establish a mirroring site to which processing of work elements can be offloaded. In addition, this technique can be used to automatically deploy a software application that is comprised of a sender part and a receiver part (such as a client/server application) from a single site without manual intervention. The propagation occurs in an application-independent manner, and may operate symmetrically at either or both the sender and receiver. The life-span of propagated software objects and applications can be specified, in order to control the amount of time the downloaded resources reside on the receiving system. This technique is preferably built on a message queuing architecture, which is particularly advantageous for use when processing requests in an asynchronous execution mode.
110 Citations
38 Claims
-
1. A computer program product for enabling software objects and applications to dynamically self-propagate through a computing network, the computer program product embodied on one or more computer-readable media and comprising:
-
computer-readable program code means for creating, by a requester, a request parcel comprising input data for processing a request from the requester and an identification of, and location information for, one or more first code segments required for processing the input data by a receiver of the request parcel;
computer-readable program code means for sending the request parcel from the requester to the receiver over the computing network;
computer-readable program code means for receiving the sent request parcel at the receiver;
computer-readable program code means for determining, by the receiver, whether the identified first code segments in the received request parcel are locally available to the receiver, and for obtaining them using the location information in the request parcel if not, so that they become locally available to the receiver;
computer-readable program code means for processing the request, by the receiver, using the input data and the locally available first code segments, thereby creating output data as a response to the received request;
computer-readable program code means for creating, by the receiver, a response parcel comprising the output data for the response and an identification of, and location information for, zero or more second code segments required for processing the output data by the requester;
computer-readable program code means for sending the response parcel from the receiver to the requester over the computing network;
computer-readable program code means for receiving the sent response parcel at the requester;
computer-readable program code means for determining, by the requester, whether the identified second code segments in the received response parcel, if any, are locally available to the requester, and for obtaining them using the location information in the response parcel if not, so that they become locally available to the requester; and
computer-readable program code means for processing, by the requester, the output data for the response using, when specified in the response parcel, the locally available second code segments. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
computer-readable program code means for removing the identified first code segments from local storage of the receiver when the life span of the first code segments is exceeded; and
computer-readable program code means for removing the identified second code segments from local storage of the requester when the life span of the second code segments is exceeded.
-
-
8. The computer program product according to claim 1, further comprising:
-
computer-readable program code means for comparing, by the receiver, when the computer-readable program code means for determining whether the first code segments are locally available has a positive result, whether a first resource version specified in the request parcel indicates that the locally available first code segments must be reloaded, and for reloading them, by the receiver, using the location information in the request parcel if so; and
computer-readable program code means for comparing, by the requester, when the computer-readable program code means for determining whether the second code segments are locally available has the positive result, whether a second resource version specified in the response parcel indicates that the locally available second code segments must be reloaded, and for reloading them, by the requester, using the location information in the response parcel if so.
-
-
9. A system for enabling software objects and applications to dynamically self-propagate through a computing network, comprising:
-
means for creating, by a requester, a request parcel comprising input data for processing a request from the requester and an identification of, and location information for, one or more first code segments required for processing the input data by a receiver of the request parcel;
means for sending the request parcel from the requester to the receiver over the computing network;
means for receiving the sent request parcel at the receiver;
means for determining, by the receiver, whether the identified first code segments in the received request parcel are locally available to the receiver, and for obtaining them using the location information in the request parcel if not, so that they become locally available to the receiver;
means for processing the request, by the receiver, using the input data and the locally available first code segments, thereby creating output data as a response to the received request;
means for creating, by the receiver, a response parcel comprising the output data for the response and an identification of, and location information for, zero or more second code segments required for processing the output data by the requester;
means for sending the response parcel from the receiver to the requester over the computing network;
means for receiving the sent response parcel at the requester;
means for determining, by the requester, whether the identified second code segments in the received response parcel, if any, are locally available to the requester, and for obtaining them using the location information in the response parcel if not, so that they become locally available to the requester; and
means for processing, by the requester, the output data for the response using, when specified in the response parcel, the locally available second code segments. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
means for removing the identified first code segments from local storage of the receiver when the life span of the first code segments is exceeded; and
means for removing the identified second code segments from local storage of the requester when the life span of the second code segments is exceeded.
-
-
16. The system according to claim 9, further comprising:
-
means for comparing, by the receiver, when the means for determining whether the first code segments are locally available has a positive result, whether a first resource version specified in the request parcel indicates that the locally available first code segments must be reloaded, and for reloading them, by the receiver, using the location information in the request parcel if so; and
means for comparing, by the requester, when the means for determining whether the second code segments are locally available has the positive result, whether a second resource version specified in the response parcel indicates that the locally available second code segments must be reloaded, and for reloading them, by the requester, using the location information in the response parcel if so.
-
-
17. A method for enabling software objects and applications to dynamically self-propagate through a computing network, comprising the steps of:
-
creating, by a requester, a request parcel comprising input data for processing a request from the requester and an identification of, and location information for, one or more first code segments required for processing the input data by a receiver of the request parcel;
sending the request parcel from the requester to the receiver over the computing network;
receiving the sent request parcel at the receiver;
determining, by the receiver, whether the identified first code segments in the received request parcel are locally available to the receiver, and for obtaining them using the location information in the request parcel if not, so that they become locally available to the receiver;
processing the request, by the receiver, using the input data and the locally available first code segments, thereby creating output data as a response to the received request;
creating, by the receiver, a response parcel comprising the output data for the response and an identification of, and location information for, zero or more second code segments required for processing the output data by the requester;
sending the response parcel from the receiver to the requester over the computing network;
receiving the sent response parcel at the requester;
determining, by the requester, whether the identified second code segments in the received response parcel, if any, are locally available to the requester, and for obtaining them using the location information in the response parcel if not, so that they become locally available to the requester; and
processing, by the requester, the output data for the response using, when specified in the response parcel, the locally available second code segments. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24)
removing the identified first code segments from local storage of the receiver when the life span of the first code segments is exceeded; and
removing the identified second code segments from local storage of the requester when the life span of the second code segments is exceeded.
-
-
24. The method according to claim 17, further comprising the steps of:
-
comparing, by the receiver, when the step of determining whether the first code segments are locally available has a positive result, whether a first resource version specified in the request parcel indicates that the locally available first code segments must be reloaded, and reloading them, by the receiver, using the location information in the request parcel if so; and
comparing, by the requester, when the step of determining whether the second code segments are locally available has the positive result, whether a second resource version specified in the response parcel indicates that the locally available second code segments must be reloaded, and reloading them, by the requester, using the location information in the response parcel if so.
-
-
25. A method for dynamically establishing a mirroring site to which processing of work elements can be offloaded from another site, comprising the steps of:
-
creating, by a requester, a request parcel comprising input data for processing a request from the requester and an identification of, and location information for, one or more first code segments required for processing the input data by a receiver of the request parcel;
sending the request parcel from the requester to the receiver over the computing network;
receiving the sent request parcel at the receiver;
determining, by the receiver, whether the identified first code segments in the received request parcel are locally available to the receiver, and for obtaining them using the location information in the request parcel if not, so that they become locally available to the receiver;
processing the request, by the receiver, using the input data and the locally available first code segments, thereby creating output data as a response to the received request;
creating, by the receiver, a response parcel comprising the output data for the response and an identification of, and location information for, zero or more second code segments required for processing the output data by the requester;
sending the response parcel from the receiver to the requester over the computing network;
receiving the sent response parcel at the requester;
determining, by the requester, whether the identified second code segments in the received response parcel, if any, are locally available to the requester, and for obtaining them using the location information in the response parcel if not, so that they become locally available to the requester; and
processing, by the requester, the output data for the response using, when specified in the response parcel, the locally available second code segments. - View Dependent Claims (26, 27, 28)
removing the identified first code segments from local storage of the receiver when the life span of the first code segments is exceeded; and
removing the identified second code segments from local storage of the requester when the life span of the second code segments is exceeded.
-
-
27. The method according to claim 25, further comprising the steps of:
-
comparing, by the receiver, when the step of determining whether the first code segments are locally available has a positive result, whether a first resource version specified in the request parcel indicates that the locally available first code segments must be reloaded, and reloading them, by the receiver, using the location information in the request parcel if so; and
comparing, by the requester, when the step of determining whether the second code segments are locally available has the positive result, whether a second resource version specified in the response parcel indicates that the locally available second code segments must be reloaded, and reloading them, by the requester, using the location information in the response parcel if so.
-
-
28. The method according to claim 25, wherein the request in the request parcel is one of (1) a refresh request for a read-access object, or (2) an update request for performing an update of a stored object.
-
29. A system for dynamically establishing a mirroring site to which processing of work elements can be offloaded from another site, comprising:
-
means for creating, by a requester, a request parcel comprising input data for processing a request from the requester and an identification of, and location information for, one or more first code segments required for processing the input data by a receiver of the request parcel;
means for sending the request parcel from the requester to the receiver over the computing network;
means for receiving the sent request parcel at the receiver;
means for determining, by the receiver, whether the identified first code segments in the received request parcel are locally available to the receiver, and for obtaining them using the location information in the request parcel if not, so that they become locally available to the receiver;
means for processing, by the receiver, the request using the input data and the locally available first code segments, thereby creating output data as a response to the received request;
means for creating, by the receiver, a response parcel comprising the output data for the response and an identification of, and location information for, zero or more second code segments required for processing the output data by the requester;
means for sending the response parcel from the receiver to the requester over the computing network;
means for receiving the sent response parcel at the requester;
means for determining, by the requester, whether the identified second code segments in the received response parcel, if any, are locally available to the requester, and for obtaining them using the location information in the response parcel if not, so that they become locally available to the requester; and
means for processing, by the requester, the output data for the response using, when specified in the response parcel, the locally available second code segments. - View Dependent Claims (30, 31, 32)
means for removing the identified first code segments from local storage of the receiver when the life span of the first code segments is exceeded; and
means for removing the identified second code segments from local storage of the requester when the life span of the second code segments is exceeded.
-
-
31. The system according to claim 29, further comprising:
-
means for comparing, by the receiver, when the means for determining whether the first code segments are locally available has a positive result, whether a first resource version specified in the request parcel indicates that the locally available first code segments must be reloaded, and reloading them, by the receiver, using the location information in the request parcel if so; and
means for comparing, by the requester, when the means for determining whether the second code segments are locally available has the positive result, whether a second resource version specified in the response parcel indicates that the locally available second code segments must be reloaded, and reloading them, by the requester, using the location information in the response parcel if so.
-
-
32. The system according to claim 29, wherein the request in the request parcel is one of (1) a refresh request for a read-access object, or (2) an update request for performing an update of a stored object.
-
33. A computer program product for dynamically establishing a mirroring site to which processing of work elements can be offloaded from another site, the computer program product embodied on one or more computer-readable media and comprising:
-
computer-readable program code means for creating, by a requester, a request parcel comprising input data for processing a request from the requester and an identification of, and location information for, one or more first code segments required for processing the input data by a receiver of the request parcel;
computer-readable program code means for sending the request parcel from the requester to the receiver over the computing network;
computer-readable program code means for receiving the sent request parcel at the receiver;
computer-readable program code means for determining, by the receiver, whether the identified first code segments in the received request parcel are locally available to the receiver, and for obtaining them using the location information in the request parcel if not, so that they become locally available to the receiver;
computer-readable program code means for processing the request, by the receiver, using the input data and the locally available first code segments, thereby creating output data as a response to the received request;
computer-readable program code means for creating, by the receiver, a response parcel comprising the output data for the response and an identification of, and location information for, zero or more second code segments required for processing the output data by the requester;
computer-readable program code means for sending the response parcel from the receiver to the requester over the computing network;
computer-readable program code means for receiving the sent response parcel at the requester;
computer-readable program code means for determining, by the requester, whether the identified second code segments in the received response parcel, if any, are locally available to the requester, and for obtaining them using the location information in the response parcel if not, so that they become locally available to the requester; and
computer-readable program code means for processing, by the requester, the output data for the response using, when specified in the response parcel, the locally available second code segments. - View Dependent Claims (34, 35, 36)
computer-readable program code means for removing the identified first code segments from local storage of the receiver when the life span of the first code segments is exceeded; and
computer-readable program code means for removing the identified second code segments from local storage of the requester when the life span of the second code segments is exceeded.
-
-
35. The computer program product according to claim 33, further comprising:
-
computer-readable program code means for comparing, by the receiver, when the computer-readable program code means for determining whether the first code segments are locally available has a positive result, whether a first resource version specified in the request parcel indicates that the locally available first code segments must be reloaded, and reloading them, by the receiver, using the location information in the request parcel if so; and
computer-readable program code means for comparing, by the requester, when the computer-readable program code means for determining whether the second code segments are locally available has the positive result, whether a second resource version specified in the response parcel indicates that the locally available second code segments must be reloaded, and reloading them, by the requester, using the location information in the response parcel if so.
-
-
36. The computer program product according to claim 33, wherein the request in the request parcel is one of (1) a refresh request for a read-access object, or (2) an update request for performing an update of a stored object.
-
37. A method of dynamically propagating code, comprising steps of:
-
creating a request parcel, by a requester that will request a service from a remote receiver, wherein the request parcel identifies the service as well as an identification of, and location information for, executable resources that will be required for performing the service at the remote receiver, wherein the identification and location information are usable by the remote receiver for obtaining the required executable resources if they are not already available to the remote receiver; and
sending the request parcel from the requester to the remote receiver.
-
-
38. A method of establishing a mirroring site to which processing of requests can be offloaded from a request receiver, comprising steps of:
-
creating a request parcel, by a requester that will request a service from a remote receiver, wherein the request parcel identifies the service as well as an identification of, and location information for, executable resources that will be required for performing the service at the remote receiver, wherein the identification and location information are usable by the remote receiver for obtaining the required executable resources if they are not already available to the remote receiver;
sending the request parcel from the requester to the remote receiver;
receiving the request parcel at the remote receiver; and
forwarding the received request parcel from the remote receiver to a different remote receiver, whereby the identification and location information are equally usable by the different remote receiver for obtaining the required executable resources if they are not already available to the different remote receiver.
-
Specification