Claims
- 1. An automatic caching method for a distributed application having a client and a server, comprising:
intercepting a call between the client and the server in order to collect information about objects accessed on the server during the call; prefetching data from an object on the server based on collected information; placing data into a client cache; synchronizing marked calls with the server; and synchronizing the client cache with the server.
- 2. The automatic caching method of claim 1, further comprising:
invalidating the client cache at the end of an activity.
- 3. The automatic casting method of claim 1, further comprising:
storing data in a proxy for the object that is locally accessible to the client.
- 4. The automatic caching method of claim 3, wherein storing data in the proxy comprises creating the proxy from a proxy class.
- 5. The automatic caching method of claim 4, wherein creating the proxy comprises storing a reference to the proxy in the client cache.
- 6. The automatic caching method of claim 4, wherein creating the proxy comprises storing a reference to the object inside the proxy.
- 7. The automatic caching method of claim 5, further comprising:
invalidating the proxy at the end of an activity.
- 8. The automatic caching method of claim 5, further comprising:
partially invalidating the client cache at the end of an activity.
- 9.The automatic caching method of claim 1, further comprising:
invoking a method of the object in response to a request received by a proxy to invoke the method of the object.
- 10. The automatic caching method of claim 9, wherein invoking the method of the object comprises synchronizing data stored in the proxy with data in the object.
- 11. The automatic caching method of claim 1, wherein collected information comprises object attributes requested by the client during the call.
- 12. The automatic caching method of claim 1, wherein collected information comprises information for accessing an interface of the object.
- 13. An automatic caching method for a distributed application having a client and a server, comprising:
intercepting a call between the client and the server in order to collect information about objects accessed on the server during the call; prefetching data from an object on the server based on collected information; placing data into a client cache; synchronizing marked calls with the server; synchronizing the client cache with the server; invalidating the client cache at the end of an activity; storing data in a proxy for the object that is locally accessible to the client; and invoking a method of the object in response to a request received by the proxy to invoke the method of the object.
- 14. An automatic caching method for an existing distributed application having a client and a server, comprising:
interposing a runtime between the client and the server which intercepts a call between the client and the server, the runtime having a capability to create a proxy for an object on the server; collecting information about the object accessed by the client during an activity; prefetching data from the object based on collected information; and storing data in the proxy for the object that is locally accessible to the client.
- 15. The automatic caching method of claim 14, wherein collected information comprises object attributes accessed by the client during an activity.
- 16. The automatic caching method of claim 14, wherein interposing the runtime between the client and the server comprises instrumenting the client such that a request normally sent to the server is directed to the runtime.
- 17. The automatic caching method of claim 14, wherein the runtime has a client portion that runs in the same machine as the client and a server portion that runs in the same machine as the server.
- 18. The automatic caching method of claim 17, further comprising:
sending a request to the server portion by the client portion to synchronize data stored in the proxy with data in the object.
- 19. The automatic caching method of claim 17, further comprising:
sending a request to the server portion to invoke a method of the object on behalf of the proxy.
- 20. The automatic caching method of claim 19, further comprising:
synchronizing data stored in the proxy with the data in the object by the server portion prior to invoking the method of the object.
- 21. An automatic caching system for a distributed application having a client and a server, comprising:
a client runtime interposed between the client and the server, the client runtime having a capability to intercept a call between the client and the server in order to insert a service for collecting information about objects accessed on the server during the call; means for prefetching data from the objects on the server based on collected information; and means for storing data fetched from the objects on the server in a memory locally accessible to the client.
- 22. The automatic caching system of claim 21, wherein the client runtime comprises a plurality of proxies for caching the data fetched from the server.
- 23. The automatic caching system of claim 22, wherein each of the proxies is associated with an object on the server.
- 24. The automatic caching system of claim 23, further comprising:
a server runtime interposed between the client runtime and the server which synchronizes data cached in the proxies with data in the objects.
- 25. A computer-readable medium having recorded thereon instructions executable by a processor, the instructions for:
intercepting a call between a client and a server; collecting information about an object accessed on the server during an activity; prefetching data from the object based on collected information; and storing data in a proxy for the object that is locally accessible to the client.
- 26. The computer-readable medium of claim 25, further comprising:
instructions for creating the proxy from a proxy class.
- 27. The computer-readable medium of claim 26, further comprising;
instructions for obtaining a reference to the object and storing the reference in the proxy.
- 28. The computer-readable medium of claim 25, further comprising:
instructions for sending a request to the server to invoke a method of the object.
- 29. The computer-readable medium of claim 25, further comprising:
instructions for interposing the proxy for the object such that the client accesses the proxy instead of the object.
- 30. The computer-readable medium of claim 25, further comprising:
instructions for synchronizing data stored in the proxy with data in the object.
- 31. A computer-readable medium having recorded thereon instructions executable by a processor, the instructions for:
intercepting a call between a client and a server; collecting information about an object accessed on the server during an activity; prefetching data from the object based on collected information; storing data in a proxy for the object that is locally accessible to the client; creating the proxy from a proxy class; obtaining a reference to the object and storing the reference in the proxy; sending a request to the server to invoke a method of the object; interposing the proxy for the object such that the client accesses the proxy instead of the object; and synchronizing data stored in the proxy with data in the object.
- 32. An apparatus for a distributed application having a client and a server, comprising:
means for intercepting a call between the client and the server in order to collect information about objects accessed on the server during the call; means for prefetching data from an object on the server based on collected information; means for placing data into a client cache; means for synchronizing marked calls with the server; and means for synchronizing the client cache with the server.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application contains disclosure related to U.S. patent application Ser. No. ______, entitled “Transparent Injection of Intelligent Proxies into Existing Distributed Applications.”