Source: https://patents.google.com/patent/US6466947B2/en
Timestamp: 2019-08-20 15:46:30
Document Index: 135124611

Matched Legal Cases: ['application No. 60', 'application No. 09', 'art 1', 'art 2', 'art 1', 'art 2']

US6466947B2 - Apparatus and method for dynamically verifying information in a distributed system - Google Patents
Apparatus and method for dynamically verifying information in a distributed system Download PDF
US6466947B2
US6466947B2 US09/044,932 US4493298A US6466947B2 US 6466947 B2 US6466947 B2 US 6466947B2 US 4493298 A US4493298 A US 4493298A US 6466947 B2 US6466947 B2 US 6466947B2
verification object
US09/044,932
US20020016790A1 (en
1998-03-20 Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
1998-03-20 Priority to US09/044,932 priority Critical patent/US6466947B2/en
1998-06-23 Assigned to SUN MICROSYSTEMS, INC. reassignment SUN MICROSYSTEMS, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ARNOLD, KENNETH C.R.C., WALDO, JAMES H., WOLLRATH, ANN M.
1999-02-16 Priority claimed from PCT/US1999/003222 external-priority patent/WO1999044296A2/en
1999-06-14 Priority claimed from US09/332,031 external-priority patent/US6708171B1/en
2002-02-07 Publication of US20020016790A1 publication Critical patent/US20020016790A1/en
2002-10-15 Publication of US6466947B2 publication Critical patent/US6466947B2/en
2018-03-20 Anticipated expiration legal-status Critical
Use of a policy object for verification in a distributed system. A machine downloads a policy object containing a reference to code governing verification of data. The machine uses the reference to obtain the code and locally verify data or other information. As particular rules for the data change, the policy object may be updated to provide a reference to the code for the new rules when it is downloaded.
Provisional U.S. patent application No. 60/076,048, now expired entitled “Distributed Computing System,” filed on Feb. 26, 1998.
U.S. patent application Ser. No. 09/044,923 now U.S. Pat. No. 6,263,350, entitled “Method and System for Leasing Storage,” and filed on the same date herewith.
U.S. patent application Ser. No. 09/044,838, entitled “Method, Apparatus, and Product for Leasing of Delegation Certificates in a Distributed System, ” and filed on the same date herewith.
U.S. patent application Ser. No. 09/044,834 now pending, entitled “Method, Apparatus and Product for Leasing of Group Membership in a Distributed System, ” filed on the same date herewith.
U.S. patent application Ser. No. 09/044,916 now U.S. Pat. No. 6,016,500, entitled “Leasing for Failure Detection, ” and filed on the same date herewith.
U.S. patent application No. 09/044,933 now pending, entitled “Method for Transporting Behavior in Event Based System, ” and filed on the same date herewith.
U.S. patent application Ser. No. 09/044,919 now U.S.Pat. No. 6,272,559, entitled “Deferred Reconstruction of Objects and Remote Loading for Event Notification in a Distributed System,” and filed on the same date herewith.
U.S. patent application Ser. No. 09/044,938 now pending, entitled “Methods and Apparatus for Remote Method Invocation, ”and filed on the same date herewith.
U.S. patent application Ser. No. 09/045,652 now U.S. Pat. No. 6,134,603, entitled “Method and System for Deterministic Hashes to identify Remote Methods, ” and filed on the same date herewith.
U.S. patent application Ser. No. 09/044,790 now pending, entitled “Method and Apparatus for Determining Status of Remote Objects in a Distributed System, ” and filed on the same date herewith.
U.S. patent application Ser. No. 09/044,930, now U.S. Pat. No. 6,393,497, entitled “Downloadable Smart Proxies for Performing Processing Associated with a Remote Procedure Call in a Distributed System,” and filed on same date herewith.
U.S. patent application Ser. No. 09/044,917 now U.S. Pat. No. 6,237,024, entitled “Suspension and Continuation of Remote Methods,” and filed on the same date herewith.
U.S. patent application Ser. No. 09/044,835 now U.S. Pat. No. 6,182,083, entitled “Method and System for Multi-Entry and Multi-Template Matching in a Database,” and filed on the same date herewith.
U.S. patent application Ser. No. 09/044,839 now abandoned, entitled “Method and System for Inplace Modifications in a Database,” and filed on the same date herewith.
U.S. patent application Ser. No. 09/044,945 now abandoned, entitled “Method and System for Typesafe Attribute Matching in a Database,” and filed on the same date herewith.
U.S. patent application Ser. No. 09/044,931 now U.S. Pat. No. 6,185,611, entitled “Dynamin Lookup Service in a Distributed System,” and filed on the same date herewith.
U.S. patent application Ser. No. 09/044,939 now pending, entitled “Apparatus and Method for Providing Downloadable Code for Use in Communicating with a Device in a Distributed System,” filed on the same date herewith.
U.S. patent application Ser. No. 09/044,826 now pending, entitled “Method and System for Facilitating Access to a Lookup Service,” and filed on the same date herewith.
U.S. patent application Ser. No. 09/044,936 now pending, entitled “An Interactive Design Tool for Persistent Shared Memory Spaces, ” and filed on the same date herewith.
U.S. patent application Ser. No. 09/044,934 now pending, entitled “Polymorphic Token-Based Control,” and filed on the same date herewith.
U.S. patent application Ser. No. 09/044,915 now U.S. Pat. No. 6,138,238, entitled “Stack-Based Access Control,” and filed on the same date herewith.
U.S. patent application Ser. No. 09/044,944 now U.S. Pat. No. 6,226,746, entitled “Stack-Based Security Requirements,” and filed on the same date herewith.
U.S. patent application Ser. No. 09/044,837 now U.S. Pat. No. 6,282,652, entitled “Per-Method Designation of Security Requirements,” and filed on the same date herewith.
The present invention relates to a system and method for transmitting objects between machines in a distributed system and more particularly to dynamically verifying information in a distributed system.
The server program receives the call (step 112), processes the call by invoking the appropriate procedure (step 115), and returns a response to the RPC mechanism 108 (step 116). The RPC 108 then packs the response in a response packet (step 114) and transmits it to the client program 100 (step 113).
The Java™ programming language is an object-oriented programming language that is typically compiled into a platform-independent format, using a bytecode instruction set, which can be executed on any platform supporting the Java virtual machine (JVM). This language is described, for example, in a text entitled “The Java Language Specification” by James Gosling, Bill Joy, and Guy Steele, Addison-Wesley, 1996, which is incorporated herein by reference. The JVM is described, for example, in a text entitled “The Java Virtual Machine Specification,” by Tim Lindholm and Frank Yellin, Addison Wesley, 1996, which is incorporated herein by reference.
Because the JVM may be implemented on any type of platform, implementing distributed programs using the JVM significantly reduces the difficulties associated with developing programs for heterogenous distributed systems. Moreover, the JVM uses a Java remote method invocation system (RMI) that enables communication among programs of the system. RMI is explained in, for example, the following document, which is incorporated herein by reference: Remote Method Invocation Specification, Sun Microsystems, Inc. (1997), which is available via universal resource locator (URL) http://www.javasoft.com/products/jdk/1.1/docs/guide/rmi/spec/rmiTOC.doc.html.
Machine 202 receives the byte stream 207. Using RMI 206, machine 202 automatically converts it into the corresponding object 204, which is a copy of object 203 and which makes the object available for use by an program executing on machine 202. Machine 202 may also transmit the object to another machine by first converting the object into a byte stream and then sending it to the third machine, which also automatically converts the byte stream into the corresponding object.
The communication among the machines may include verification of data or other information. Such verification typically requires multiple calls for verification of particular data or other information, which may result in a large volume of calls and potentially increased expense for the verification. Accordingly, a need exists for efficient verification of data or other information in a distributed system.
A first method consistent with the present invention transmits a request for a verification object. A response to the request is received, including an indication of a first code corresponding to the verification object and an indication of a second code for processing associated with verification. The verification object is constructed using the indicated first code and information is verified using the indicated second code.
A second method consistent with the present invention transmits a request for a verification object. A response to the request is received, including an indication of a code corresponding to the verification object. The verification object is constructed using the indicated code and information is verified based on the constructed object.
A third method consistent with the present invention receives at a machine a request for an object for use in verification. A response to the request is transmitted, including an indication of a first code for constructing the verification object and including an indication of a second code for processing associated with the verification.
A first apparatus consistent with the present invention transmits a request for a verification object. The apparatus receives a response to the request, including an indication of a first code corresponding to the verification object and an indication of a second code for processing associated with verification. The apparatus constructs the verification object using the indicated first code and verifies information using the indicated second code.
A second apparatus consistent with the present invention transmits a request for a verification object and receives a response to the request, including an indication of a code corresponding to the verification object. The apparatus constructs the verification object using the indicated code and verifies information based on the constructed object.
A third apparatus consistent with the present invention receives at a machine a request for an object for use in verification. The apparatus transmits a response to the request, including an indication of a first code for constructing the verification object and including an indication of a second code for processing associated with the verification.
FIG. 6 is a diagram of an exemplary distributed network for use in transmission of a policy object; and
FIG. 7 is a flow chart of a process for data validation using a policy object.
Machines consistent with the present invention may use a policy object, also referred to as a verification object, in a distributed system, the policy object performing processing when verification is needed. A machine downloads a policy object containing a reference to code governing verification of data or other information. The machine uses the reference to obtain the code and locally verify, for example, data constraints among items, data items, or objects. A verification object may also be used to verify other types of information. As particular rules for the data or information change, the policy object may be updated to provide a reference to the code for the new rules when it is downloaded.
Systems consistent with the present invention may efficiently transfer policy objects using a variant of an RPC or RMI, passing arguments and return values from one process to another process each of which may be on different machines. The term “machines” is used in this context to refer to a physical machine or a virtual machine. Multiple virtual machines may exist on the same physical machine. Examples of RPC systems include distributed computed environment (DCE) RPC and Microsoft distributed common object model (DCOM) RPC.
Distributed Processing Systems
Applications 307, 308, and 309 can be programs that are either previously written and modified to work with, or that are specially written to take advantage of, the services offered by an implementation consistent with the present invention. Applications 307, 308, and 309 invoke operations to be performed in accordance with an implementation consistent with this invention.
A Java space 522 is an object repository used by programs within distributed system 400 to store objects. Programs use a Java space 522 to store objects persistently as well as to make them accessible to other devices within distributed system 400. Java spaces are described in U.S. patent application Ser. No. 08/971,529, now U.S. Pat. No. 6,032,151 entitled “Database System Employing Polymorphic Entry and Entry Matching,” assigned to a common assignee, and filed on Nov. 17, 1997, which is incorporated herein by reference. One skilled in the art will appreciate that an exemplary distributed system 400 may contain many lookup services, discovery servers, and Java spaces.
FIG. 6 is a diagram of an object-oriented distributed network 600 for use in transmission of a policy object for use in verification. Network 600 includes client machine 601 and server machine 604, which may be implemented with computers or virtual machines executing on one or more computers, or the machines described with reference to FIGS. 3, 4, and 5. Client machine 601 includes RMI 602 and associated object 603. Server machine 604 includes RMI 605 and associated policy object 606.
Client machine 601, using RMI 602, transmits a call or request 609 to RMI 605 requesting a policy object 606. In response, RMI 605 transmits in call 610 policy object 606 or a reference to it. RMI 602 and client machine 601 use the policy object, represented as object 603, for verification of data or other information. If necessary, RMI 602 may access code server 607 to obtain code 608 used by the policy object. A code server is an entity and process that has access to code and responds to requests for a particular type or class of object and returns code for that object. A code server may be located within machine 604 or on another machine. Also, the code may be resident on the same platform as the code server or on a separate platform.
RMI 602 may access such code by using a network-accessible location in the form of a URL for code that is associated with the object. URLs are known in the art and an explanation, which is incorporated herein by reference, appears in, for example, a text entitled “The Java Tutorial: Object-Oriented Programming for the Internet,” pp. 494-507, by Mary Campione and Kathy Walrath, Addison-Wesley, 1996.
The objects may be transmitted as object streams as described in The Object Serialization Specification or The RMI Specification, both available from Sun Microsystems, Inc. Streams, including input and output streams, are also described in, for example, the following text, which is incorporated herein by reference: “The Java Tutorial: Object-Oriented Programming for the Internet,” pp. 325-53, by Mary Campione and Kathy Walrath, Addison-Wesley, 1996.
Transmission of a Policy Object
FIG. 7 is a flow chart of a process 700 for verification using a policy object, also referred to as a verification object. A machine first determines if verification is requested (step 701). If so, it requests a policy object from a server (step 702) and receives the policy object including a reference to code for use in verification of data or other information (step 703). Using the reference, it downloads code for the verification (step 704). The downloading of code may occur using the methods described in U.S. patent application Ser. No. 08/950,756, filed on Oct. 15, 1997, and entitled “Deferred Reconstruction of Objects and Remote Loading in a Distributed System,” which is incorporated herein by reference.
The machine then obtains data or other information (step 705). It determines if the data or information is valid using the policy object (step 706), which may occur through local processing. Validation may be based on particular predefined criteria. If the data or information was not valid, it obtains new data or information; for example, it provides a message to the user requesting re-entry of the data (step 707). The machine then determines if there is more data or information to process (step 708). If so, it returns to step 705 to receive and verify additional data. Otherwise, it makes use of the verified data or other information (step 709); for example, it may submit data to the server. During these steps, the server may send an indication of code, such as a reference to the code or the code itself, for updating the policy or rules concerning verification. Thus, the policy or rules may be dynamically updated so that client machines receive and maintain code or a reference to code for the current policy or rules.
Machines implementing the steps shown in FIG. 7 may include computer processors for performing the functions, as shown in FIGS. 3, 4, 5, and 6. They may include modules or programs configured to cause the processors to perform the above functions. They may also include computer program products stored in a memory. The computer program products may include a computer-readable medium or media having computer-readable code embodied therein for causing the machines to perform functions described in this specification. The media may include a computer data signal embodied in a carrier wave and representing sequences of instructions which, when executed by a processor, cause the processor to securely address a peripheral device at an absolute address by performing the method described in this specification. The media may also include data structures for use in performing the method described in this specification. In addition, the processing shown in FIG. 7 may occur through the use of smart proxies, which are described in U.S. patent application filed on even date herewith, assigned to a common assignee, and entitled “Downloadable Smart Proxies for Performing Processing Associated with a Remote Procedure Call in a Distributed System,” which is incorporated herein by reference.
Example of a Policy Object
The following provides an example of using a policy object to verify data in an expense report consistent with the present invention. Table 1 provides an example of a remote policy interface written in the Java programming language defining methods a client can invoke on a server for this expense report example.
public interface ExpenseServer extends Remote {
Policy getPolicy () throws RemoteException;
void submitReport (ExpenseReport report)
throws RemoteException, InvalidReportException;
The interface shown in Table 1 supports two methods. A get policy (“getPolicy”) method returns an object that implements the interface. A submit report (“submitReport”) method submits a completed expense request, throwing (generating) an exception if the report is malformed for any reason. The policy interface declares a method, shown in Table 2, informing a client whether it is acceptable to add an entry to the expense report.
public interface Policy {
void checkValid (ExpenseEntry entry)
throws Policy ViolationException;
If an expense report entry is valid, meaning that it matches current policy, the method returns normally. Otherwise it throws an exception that describes the error. The exemplary policy interface may be local (not remote) and thus may be implemented by an object local to a client. Table 3 illustrates how the client may operate for this example.
Policy curPolicy = server.getPolicy ();
start a new expense report
show the GUI to the user
while (user keeps adding entries) {
curPolicy.checkValid(entry); // throws exception if not OK
add the entry to the expense report
} catch (policyViolationException e) {
show the error to the user
server. submitReport (report);
When a user requests the client software to start up a new expense report, the client invokes “server.getPolicy” method to ask the server to return an object that embodies the current expense policy. Each entry that is added is first submitted to that policy object for approval. If the policy object reports no error, the entry is added to the report; otherwise the error is displayed to the user for corrective action. When the user is finished adding entries to the report, the entire report is submitted.
Table 4 illustrates how the server may operate for this example.
class ExpenseServerImpl
implements ExpenseServer
ExpenseServerImpl () throws RemoteException {
// . . . set up server state . . .
public Policy getPolicy () {
return new TodaysPolicy();
public void submitReport (ExpenseReport report) {
// . . . write the report into the db . . .
The type “UnicastRemoteObject” defines the kind of remote object corresponding to this server, in this example a single server as opposed to a replicated service. The Java programming language class “ExpenseServerImpl” implements the methods of the remote interface “ExpenseServer.” Clients on remote hosts can use RMI to send messages to “ExpenseServerImpl” objects.
Table 5 provides an example of an implementation of a policy for this expense report example.
public class TodaysPolicy implements Policy {
public void checkValid(ExpenseEntry entry)
throws Policy ViolationException
if (entry.dollars() < 20) {
return; // no receipt required
} else if (entry.haveReceipt() == false) {
throw new Policy ViolationException (“receipt required”);
The policy defined in Table 5 checks to ensure that any entry without a receipt is less than twenty dollars. If the policy changes tomorrow so that only meals under twenty dollars are exempt from the “receipts required” policy, an implementation of new policy may be provided as shown in Table 6.
public class TomorrowsPolicy implements Policy {
throws PolicyViolationException
if(entry.isMeal() && entry.dollars() < 20) {
throw new PolicyViolationException (“receipt required”);
The new policy (“TomorrowsPolicy”) defined in Table 6 may be installed on a server, and the server may then deliver the new policy objects instead of the current (“TodaysPolicy”) objects. When a client invokes the server's get policy method, RMI on the client verifies whether the returned object is of a known type. The first time each client encounters a “TomorrowsPolicy” object, the client's RMI downloads the implementation for the policy before “getPolicy” method returns, and the client thus begins enforcing the new policy. This expense report example is only one example of use of a policy object for verification, and many other applications of a policy object are possible.
While the present invention has been described in connection with an exemplary embodiment, it will be understood that many modifications will be readily apparent to those skilled in the art, and this application is intended to cover any adaptations or variations thereof. For example, different labels or definitions for the policy object may be used without departing from the scope of the invention. This invention should be limited only by the claims and equivalents thereof.
1. A method for verifying data in a distributed system, comprising:
determining whether a need exists to verify data;
transmitting a request for a verification object;
receiving from a romote device the verification object in response to the request, the verification object including a first executable code;
constructing second executable code from the first executable code included in the verification object; and
verifying the data by executing at least one of the first executable code included in the verification object, the second executable code, a combination of part of the first executable code included in the verification object and the second executable code, and a combination of both the first executable code included in the verification object and the second executable code.
generating a notification indicating a successful verification of the data based on a result of the verifying step.
determining whether a need exists to verify additional data; and
based on the determination that a need exists to verify additional data, verifying the additional data by executing at least one of the first executable code included in the verification object, the second executable code, the combination of part of the first executable code included in the verification object and the second executable code, and the combination of both the first executable code included in the verification object and the second executable code.
4. The method of claim 3, wherein the step of determining whether a need exists to verify additional data includes:
determining whether at least one of the first executable code included in the verification object, the second executable code, the combination of part of the first executable code included in the verification object and the second executable code, and the combination of both the first executable code included in the verification object and the second executable code is suitable for purposes of verifying the additional data, wherein the step of verifying the additional data is performed based on a result of the determination that a least one of the first executable code included in the verification object, the second executable code, the combination of part of the first executable code included in the verification object and the second executable code, and the combination of both the first executable code included in the verification object and the second executable code is suitable for purposes of verifying the additional data.
5. A method for verifying data in a distributed system, comprising:
receiving from a remote device a response to the request including a first executable code; and
constructing the verification object using the first executable code, the verification object exhibiting second executable code for processing associated with verifying the data.
6. The method of claim 5, wherein constructing the verification object using the first executable code, the further comprises:
selectively determining from the verification object whether to obtain the first executable code from a repository of executable code, and, based on the a result of this determination, obtaining the first executable code from the repository; and
constructing second executable code from the first executable code included in the verification object.
based on the determination that a need exists to verify additional data, verifying the additional data by executing at least one of the first executable code included in the verification object, the second executable code, the combination of part of the first executable code included in the verification object and the second executable code, and the combination of both the first executable code included in the verification object and the second executable code without transmitting a new request for a verification object.
10. The method of claim 9, wherein the step of determining whether a need exists to verify additional data includes:
determining whether the first executable code is suitable for purposes of verifying the additional data, wherein the step of verifying the additional data without transmitting a new request for a verification object is performed based on a result of the determination that at least on of the first executable code included in the verification object, the second executable code, the combination of part of the first executable code included in the verification object and the second executable code, and the combination of both the first executable code included in the verification object and the second executable code is suitable for purposes of verifying the additional data.
a memory storing a program; and
a processor responsive to the program to
determine whether a need exists to verify data,
transmit a request for a verification object,
receive from a remote device the verification object in response to the request, the verification object including a first executable code,
construct second executable code from the first executable code included in the verification object, and
verify the data by executing at least one of the first executable code included in the verification object, the second executable code, a combination of part of the first executable code included in the verification object and the second executable code, and a combination of both the first executable code included in the verification object and the second executable code.
12. The apparatus of claim 11, wherein processor further generates a notification indicating a successful verification of the data based on a result of the verifying step.
13. The apparatus of claim 11, wherein the processor further determines whether a need exists verify additional data, and based on the determination that a need exists to verify additional data, verifying the additional data by executing at least one of the first executable code included in the verification object, the second executable code, the combination of part of the first executable code included in the verification object and the second executable code, and the combination of both the first executable code included in the verification object and the second executable code.
14. The apparatus of claim 13, wherein when the processor determines whether a need exists to verify additional data, the processor further determines whether at least one of the first executable code included in the verification object, the second executable code, the combination of part of the first executable code included in the verification object and the second executable code, and the combination of both the first executable code included in the verification object and the second executable code is suitable for purposes of verifying the additional data, wherein verifying the additional data is performed based on a result of the determination that at least one of the first executable code included in the verification object, the second executable code, the combination of part of the first executable code included in the verification object and the second executable code, and the combination of both the first executable code included in the verification object and the second executable code is suitable for purposes of verifying the additional data.
receive from a remote device a response to the request including a first executable code, and
construct the verification object using the first executable code, the verification object exhibiting second executable code for processing associated with verifying the data.
16. The apparatus of claim 15, wherein when the processor constructs the verification object using the first executable code, the processor further determines from the verification object whether to obtain the first executable code from a repository of executable code, and, based on the a result of this determination, obtains the first executable code from the repository, and constructs second executable code from the first executable code included in the verification object.
17. The apparatus of claim 15, wherein the processor further verifies the data by executing at least one of the first executable code included in the verification object, the second executable code, a combination of part of the first executable code included in the verification object and the second executable code, and a combination of both the first executable code included in the verification object and the second executable code.
18. The apparatus of claim 15, wherein the processor further generates a notification indicating a successful verification of the data based on a result of the verifying step.
19. The apparatus of claim 15, wherein the processor further determines whether a need exists to verify additional data, and based on the determination that a need exists to verify additional data, verifies the additional data by executing at least one of the first executable code included in the verification object, the second executable code, the combination of part of the first executable code included in the verification object and the second executable code, and the combination of both the first executable code included in the verification object and the second executable code without transmitting a new request for a verification object.
20. The apparatus of claim 19, wherein when the processor determines whether a need exists to verify additional data, the processor further determines whether the executable code is suitable for purposes of verifying the additional data, wherein verifying the additional data without transmitting a new request for a verification object is performed based on a result of the determination that at least one of the first executable code included the verification object, the second executable code, the combination of part of the first executable code included in the verification object and the second executable code, and the combination of both the first executable code included in the verification object and the second executable code is suitable for purposes of verifying the additional data.
21. A computer-readable medium containing instructions for causing a processor to perform a method for verifying data in a distributed system, the method comprising:
receiving from a remote device the verification object in response to the request, the verification object including a first executable code;
22. The computer-readable medium of claim 21, further comprising:
23. The computer-readable medium of claim 21, further comprising:
24. The computer-readable medium of claim 23, wherein the step of determining whether a need exists to verify additional data includes:
determining whether at least one of the first executable code included in the verification object, the second executable code, the combination of part of the first executable code included in the verification object and the second executable code, and the combination of both the first executable code included in the verification object and the second executable code is suitable for purposes of verifying the additional data; wherein the step of verifying the additional data is performed additional data is preformed on a result on a result of the determination that at least one of the first executable code included in the verification object, the second executable code, the combination of part of the first executable code included in the verification object and the second executable code, and the combination of both the first executable code included in the verification object and the second executable code is suitable for purposes of verifying the additional data.
25. A computer-readable medium containing instructions for causing a processor to perform a method for verifying data in a distributed system, the method comprising:
26. The computer-readable medium of claim 25, wherein constructing the verification object using the first executable code further comprises:
selectively determining from the verification object whether to obtain the first executable code from a repository of executable code from the repository; and
27. The computer-readable medium of claim 25, further comprising:
28. The computer-readable medium of claim 25, further comprising:
29. The computer-readable medium of claim 25, further comprising:
based on the determination that a need exists to verify additional data; verifying the additional data by executing at least on of the first executable code included in the verification object, the second executable code, the combination of part of the first executable code included in the verification object and the second executable code, and the combination of both the first executable code included in the verification object and the second executable code without transmitting a new request for verification object.
30. The computer-readable medium of claim 29, wherein the step of determining whether a need exists to verify additional data includes:
determining whether the first executable code is suitable for purposes of verifying the additional data, wherein the step of verifying the additional data without transmitting a new request for a verification object is performed based on a result of the determination that at least one of the first executable code included in the verification object, the second executable code, the combination of part of the first executable code included in the verification object and the second executable code, and the combination of both the first executable code included in the verification object and the second executable code is suitable for purposes of verifying the additional data.
US09/044,932 1998-03-20 1998-03-20 Apparatus and method for dynamically verifying information in a distributed system Expired - Lifetime US6466947B2 (en)
US09/044,932 US6466947B2 (en) 1998-03-20 1998-03-20 Apparatus and method for dynamically verifying information in a distributed system
PCT/US1999/003222 WO1999044296A2 (en) 1998-02-26 1999-02-16 Apparatus and method for dynamically verifying information in a distributed system
AU26803/99A AU2680399A (en) 1998-02-26 1999-02-16 Apparatus and method for dynamically verifying information in a distributed system
KR1020007009317A KR20010041227A (en) 1998-02-26 1999-02-16 Apparatus and method for dynamically verifying information in a distributed system
CN99803342A CN1292115A (en) 1998-02-26 1999-02-16 Apparatus and method for dynamically verifying information in distributed system
EP99907039A EP1057272A2 (en) 1998-02-26 1999-02-16 Apparatus and method for dynamically verifying information in a distributed system
JP2000533947A JP2002505491A (en) 1998-02-26 1999-02-16 Apparatus and method for dynamic information certificate in the distributed system
US09/332,031 US6708171B1 (en) 1996-04-23 1999-06-14 Network proxy
US10/141,934 US6983285B2 (en) 1998-03-20 2002-05-10 Apparatus and method for dynamically verifying information in a distributed system
US10/141,932 US7089263B2 (en) 1998-02-26 2002-05-10 Apparatus and method for dynamically verifying information in a distributed system
US09/030,840 Continuation-In-Part US6446070B1 (en) 1998-02-26 1998-02-26 Method and apparatus for dynamic distributed computing over a network
US09/044,939 Continuation-In-Part US6560656B1 (en) 1998-02-26 1998-03-20 Apparatus and method for providing downloadable code for use in communicating with a device in a distributed system
US10/141,932 Continuation US7089263B2 (en) 1998-02-26 2002-05-10 Apparatus and method for dynamically verifying information in a distributed system
US10/141,934 Division US6983285B2 (en) 1998-03-20 2002-05-10 Apparatus and method for dynamically verifying information in a distributed system
US20020016790A1 US20020016790A1 (en) 2002-02-07
US6466947B2 true US6466947B2 (en) 2002-10-15
ID=21935118
US09/044,932 Expired - Lifetime US6466947B2 (en) 1998-03-20 1998-03-20 Apparatus and method for dynamically verifying information in a distributed system
US10/141,934 Expired - Lifetime US6983285B2 (en) 1998-03-20 2002-05-10 Apparatus and method for dynamically verifying information in a distributed system
US (2) US6466947B2 (en)
US20040054809A1 (en) * 2002-08-26 2004-03-18 Goff Max K. Synchronous object unification protocol
US20040210627A1 (en) * 2003-04-21 2004-10-21 Spotware Technologies, Inc. System for restricting use of a grid computer by a computing grid
US20040215973A1 (en) * 2003-04-25 2004-10-28 Spotware Technologies, Inc. System for authenticating and screening grid jobs on a computing grid
US20050080838A1 (en) * 2003-09-30 2005-04-14 International Business Machines Corporation Method, system, and storage medium for providing context-based dynamic policy assignment in a distributed processing environment
US20050257245A1 (en) * 2003-10-10 2005-11-17 Bea Systems, Inc. Distributed security system with dynamic roles
US20050268309A1 (en) * 2001-06-28 2005-12-01 Microsoft Corporation Transparent and sub-classable proxies
US20060182137A1 (en) * 2005-02-14 2006-08-17 Hao Zhou Fast and memory protected asynchronous message scheme in a multi-process and multi-thread environment
US20060277284A1 (en) * 2005-06-03 2006-12-07 Andrew Boyd Distributed kernel operating system
US20060294206A1 (en) * 2005-06-23 2006-12-28 Marc Graveline Opaque cryptographic web application data protection
US20070061427A1 (en) * 2004-11-15 2007-03-15 Nimrod Vishnia-Shabtai System and method for dynamically modifying synchronized business information server interfaces
US20070097881A1 (en) * 2005-10-28 2007-05-03 Timothy Jenkins System for configuring switches in a network
US20080010664A1 (en) * 2004-08-30 2008-01-10 Maurizio Pelizza Method and System for Providing Interactive Services in Digital Television
US20090204612A1 (en) * 2008-02-12 2009-08-13 Bae Systems Information And Electronic Systems Integration Inc. Apparatus and method for dynamic web service discovery
US20100229111A1 (en) * 2004-11-15 2010-09-09 Cherny Eugene Accelerated system and methods for synchronizing, managing, and publishing business information
US6965999B2 (en) * 1998-05-01 2005-11-15 Microsoft Corporation Intelligent trust management method and system
US6601171B1 (en) * 1999-02-18 2003-07-29 Novell, Inc. Deputization in a distributed computing system
US7568218B2 (en) * 2002-10-31 2009-07-28 Microsoft Corporation Selective cross-realm authentication
TW200536362A (en) * 2004-04-30 2005-11-01 Chin-Lung Peng Internet phone system and method for establishing peer to peer communication
US7941800B2 (en) * 2006-02-23 2011-05-10 Microsoft Corporation Transferring data between virtual machines by way of virtual machine bus in pipe mode
US20110265069A1 (en) * 2010-04-21 2011-10-27 Salesforce.Com Methods and systems for execution of tenant code in an on-demand service environment including utilization of shared resources and inline governor limit enforcement
CN204083826U (en) * 2014-07-11 2015-01-07 北京文海阳工贸有限责任公司 Luminous ball
US10205631B1 (en) * 2015-10-30 2019-02-12 Intuit Inc. Distributing an access control service to local nodes
US6058383A (en) * 1996-06-27 2000-05-02 Kent Ridge Digital Labs Computationally efficient method for trusted and dynamic digital objects dissemination
US6067575A (en) * 1995-12-08 2000-05-23 Sun Microsystems, Inc. System and method for generating trusted, architecture specific, compiled versions of architecture neutral programs
US6282295B1 (en) * 1997-10-28 2001-08-28 Adam Lucas Young Auto-recoverable and auto-certifiable cryptostem using zero-knowledge proofs for key escrow in general exponential ciphers
US199842A (en) * 1878-01-29 Improvement in insoles for boots and shoes
US59212A (en) * 1866-10-30 Improved brick-machine
US111814A (en) * 1871-02-14 Improvement in breech-loading fire-arms
US1919842A (en) * 1927-03-25 1933-07-25 Air Liquide Process for the treatment of gaseous mixtures containing hydrogen
US5724540A (en) * 1988-03-28 1998-03-03 Hitachi, Ltd. Memory system having a column address counter and a page address counter
JPH0293952A (en) * 1988-09-30 1990-04-04 Hitachi Ltd Virtual computer system
JPH05173988A (en) * 1991-12-26 1993-07-13 Toshiba Corp Decentralized processing system and transaction processing system applied to the same
US5303042A (en) * 1992-03-25 1994-04-12 One Touch Systems, Inc. Computer-implemented method and apparatus for remote educational instruction
US5475840A (en) * 1993-04-13 1995-12-12 Sun Microsystems, Inc. High performance dynamic linking through caching
US5506984A (en) * 1993-06-30 1996-04-09 Digital Equipment Corporation Method and system for data retrieval in a distributed system using linked location references on a plurality of nodes
US5664191A (en) * 1994-06-30 1997-09-02 Microsoft Corporation Method and system for improving the locality of memory references during execution of a computer program
EP0694837A1 (en) * 1994-07-25 1996-01-31 International Business Machines Corporation Dynamic workload balancing
US5806042A (en) * 1995-10-11 1998-09-08 Kelly; William Franklin System for designing and implementing bank owned life insurance (BOLI) with a reinsurance option
US5761507A (en) * 1996-03-05 1998-06-02 International Business Machines Corporation Client/server architecture supporting concurrent servers within a server with a transaction manager providing server/connection decoupling
US5754977A (en) * 1996-03-06 1998-05-19 Intervoice Limited Partnership System and method for preventing enrollment of confusable patterns in a reference database
US5758077A (en) * 1996-08-02 1998-05-26 Hewlett-Packard Company Service-centric monitoring system and method for monitoring of distributed services in a computing network
US6212578B1 (en) * 1996-09-09 2001-04-03 Oracle Corporation Method and apparatus for managing dependencies in a distributed computing environment for ensuring the safety of remote procedure calls
US6282581B1 (en) * 1997-03-27 2001-08-28 Hewlett-Packard Company Mechanism for resource allocation and for dispatching incoming calls in a distributed object environment
US6189046B1 (en) * 1997-03-27 2001-02-13 Hewlett-Packard Company Mechanism and method for merging cached location information in a distributed object environment
US6192044B1 (en) * 1997-03-31 2001-02-20 Intel Corporation Employing a look-up service and a callee connection service to establish a network phone call between a caller and a callee
US6003050A (en) * 1997-04-02 1999-12-14 Microsoft Corporation Method for integrating a virtual machine with input method editors
US6157960A (en) * 1997-05-07 2000-12-05 International Business Machines Corporation Technique for programmatically creating distributed object programs
US6219675B1 (en) * 1997-06-05 2001-04-17 Microsoft Corporation Distribution of a centralized database
US6078655A (en) * 1997-08-27 2000-06-20 At&T Corp Automatic international reattempt method and apparatus
AU9273898A (en) 1997-10-01 1999-04-23 British Telecommunications Public Limited Company Resource management system
US6253256B1 (en) * 1997-10-15 2001-06-26 Sun Microsystems, Inc. Deferred reconstruction of objects and remote loading in a distributed system
US6272559B1 (en) * 1997-10-15 2001-08-07 Sun Microsystems, Inc. Deferred reconstruction of objects and remote loading for event notification in a distributed system
US6604127B2 (en) * 1998-03-20 2003-08-05 Brian T. Murphy Dynamic lookup service in distributed system
US6603772B1 (en) * 1999-03-31 2003-08-05 Cisco Technology, Inc. Multicast routing with multicast virtual output queues and shortest queue first allocation
AU6902300A (en) 1999-08-13 2001-03-13 Sun Microsystems, Inc. Graceful distribution in application server load balancing
US6564174B1 (en) * 1999-09-29 2003-05-13 Bmc Software, Inc. Enterprise management system and method which indicates chaotic behavior in system resource usage for more accurate modeling and prediction
WO2001090903A1 (en) 2000-05-24 2001-11-29 Cohere Networks, Inc. Apparatus, system, and method for balancing loads to network servers
US6757262B1 (en) * 2000-09-15 2004-06-29 Motorola, Inc. Service framework supporting remote service discovery and connection
JP2002132739A (en) * 2000-10-23 2002-05-10 Nec Corp Stab retrieval loading system and method, server device, client device and computer readable recording medium
1998-03-20 US US09/044,932 patent/US6466947B2/en not_active Expired - Lifetime
2002-05-10 US US10/141,934 patent/US6983285B2/en not_active Expired - Lifetime
Agha et al., Actorspaces: An Open Distributed Programming Paradigm, University of Illinois, Report No. UTUCDCS-R-92-1766, Open Systems Laboratory TR No. 8, Nov. 1992, pp. 1-12.
Ahmed et al., A Program Building Tool for Parallel Applications, Yale University, Dec. 1, 1993, pp. 1-23.
Aldrich et al., "Providing Easier Access to Remote Objects in Distributed Systems," Calif. Institute of Technology, www.cs.caltech.edu/%7Ejedi/paper/jedipaper.html, Nov. 21, 1997.
Alexander, et al., "Active Bridging", Proceedings of the ACM/SIGCOMM'97 Conference, Cannes, France, Sep. 1997.
Anderson et al., Persistent Linda: Linda + Transactions + Query Processing, Proceedings of the 13th Symposium on Fault Tolerant Systems, 1994, pp. 93-109.
Anonymous: "Change-Notification Service for Shared Files" IBM Technical Disclosure Bulletin, vol. 36, No. 8, pp. 77-82, XP002108713 New York, US.
Bevan, D.I., "An Efficient Reference Counting Solution To The Distributed Garbage Collection Problem", Parall Computing, NL, Elsevier Publishers, Amsterdam, vol. 9, No. 2, pp. 179-192.
Birrell et al., "Implementing Remote Procedure Calls", ACM Transactions on Computer Systems, vol. 2, No. 1, Feb. 1984, pp. 39-59.
Birrell et al., Implementing Remote Procedure Calls, ACM Transactions on Computer Systems, vol. 2, No. 1, Feb. 1984, pp. 39-59.
Birrell et al., Network Objects, DEC SRC Research Report 115, Feb. 28, 1994.
Cannon et al., Adding Fault-Tolerant Transaction Processing to LINDA, Software-Practice and Experience, vol. 24(5), May 1994, pp. 449-466.
Cardelli, Obliq. A lightweight language for network objects, Nov. 5, 1993, pp. 1-37.
Carriero et al, Distributed Data Structures in Linda, Yale Research Report YALEU/DCS/RR-438, Nov. 1985.
Carriero et al., Distributed Data Structures in Linda, Principals of Programming Language, 1986, pp. 1-16.
Chung et al., A "Tiny' Pascal Compiler: Part 1: The P-Code Interpreter, BYTE Publications, Inc., Sep. 1978.
Chung et al., A "Tiny' Pascal Compiler: Part 2: The P-Compiler, BYTE Publications, Inc., Oct. 1978.
Chung et al., A ‘Tiny’ Pascal Compiler: Part 1: The P-Code Interpreter, BYTE Publications, Inc., Sep. 1978.
Chung et al., A ‘Tiny’ Pascal Compiler: Part 2: The P-Compiler, BYTE Publications, Inc., Oct. 1978.
Coulouris et al., Distributed Systems Concepts and Designs, Second Edition, Addison-Wesley, 1994.
Dijkstra, Self-stabilizing Systems in Spite of Distributed Control, Communications of the ACM, vol. 17, No. 11, Nov. 1974, pp. 643-644.
Dolev et al., On the Minimal Synchronism Needed for Distributed Consensus, Journal of the ACM, vol. 34, No. 1, Jan. 1987, pp. 77-97.
Dollimore et al., "The Design of a System for Distributing Shared Objects," The Computer Journal, No. 6, Cambridge, GB, Dec. 1991.
Gelernter et al., Parallel Programming in Linda, Yale University, Jan. 1985, pp. 1-21.
Gelernter, Generative Communication in Linda, ACM Transactions on Programming Languages and Systems, vol. 7, No. 1, Jan. 1985, pp. 80-112.
Gosling et al., "The Java (TM) Language Specification", Addison-Wesley, 1996.
Guth, Rob: "JavaOne: Sun to Expand Java Distributed Computing Effort", "HTTP://WWW.SUNWORLD.COM/SWOL-02-1998/SWOL-02-SUNSPOTS.HTML," XP-002109935, P.1, 1998.
Guyennet et al., "Distributed Share Memory Layer for Cooperative Work Applications," IEEE, 0742-1303/97, pp. 72-78, 1997.
Hamilton et al., "Subcontract: a flexible base for distributed programming"; Proceedings of 14th Symposium of Operating System Principles; (Dec. 1993).
Hamilton, Java and the Shift to Net-Centric Computing Computer, Aug. 1996, pp. 31-39.
Harris et al., Proposal for a General Java Proxy Class for Distributed Systems and Other Uses, Netscape Communications Corp., Jun. 25, 1997.
Hartman, J., Manber, U., et al., Liquid Software: A new paradigm for networked systems, Technical Report 96-11, Department of Comp. Sci., Univ. of Arizona, Jun. 1996.
Hodges, Douglas, "Managing Object Lifetimes in OLE," Aug. 25, 1994, pp. 1-41.
Hoshi et al., "Allocation of the Cross-Connect Function in Leased Circuit Networks," 1992, ICC'92, conference record, SUPERCOMM/ICC '02, D a New World of Communications, IEEE International Conference, pp. 1408-1412.
Jaworski, Java 1.1 Developer's Guide, Sams.net, 1997.
Jones, Richard, et al., "Garbage Collection: Algorithms for Automatic Dynamic Memory Management," pp. 165-175, John Wiley & Sons, 1996.
Kambhatla et al., Recovery with Limited Replay: Fault-Tolerant Processes in Linda, Oregon Graduate Institute, Technical Report CSIE 90-019, Sep. 1990, pp. 1-16.
Krasner, The Smalltalk-80 Virtual Machine, BYTE Publications Inc., Aug. 1991, pp. 300-320.
LINDA Database Search, Jul. 20, 1995, pp. 1-68.
Lindholm et al., "The Java (TM) Virtual Machine Specification", Addison Wesley, 1996.
Liskov et al., Distributed Object Management in Thor, International Workshop on Distributed Object Management, 1992, pp. 12.
McDaniel, An Analysis of a Mesa Instruction Set, Xerox Corporation, May 1982.
Mitchell et al., Mesa Language Manual, Xerox Corporation.
Mummert et al., Long Term Distributed File Reference Tracing: Implementation and Experience, Carnegie Mellon University School of Computer Science, Nov. 1994, pp. 1-28.
Operating Systems Review, ACM Press, vol. 27, No. 5, Dec. 1993, pp. 217-230.
Pier, A Retrospective on the Dorado, A High-Performance Personal Computer, IEEE Conference Proceedings, The 10th Annual international Symposium on Computer Architecture, 1983.
Pier, A Retrospective on the Dorado, A High-Performance Personal Computer, Xerox Corporation, Aug. 1983.
Pinakis, Using Linda as the Basis of an Operating System Microkernel, University of Western Australia, Department of Computer Sciences, Aug. 1993, pp. 1-165.
Remote Method Invocation Specification, Sun Microsystems, Inc., (1997), http://java.sun.com/products/jdk/1.1/docs/guide/rmi/spec/rmiTOC.doc.html.
Sharrott et al., ObjectMap: Integrating High Performance Resources into a Distributed Object-oriented Environment, ICODP, 1995.
Transparent Network Computing, Locus Computing Corporation, Jan. 5, 1995.
Venners, B., "Jini Technology, Out of the Box", Javaworld, Online!, pp 1-4, Dec. 1998.
Waldo J et al: "Events in an RPC based distributed system" Proceedings of the 1995 Usenix Technical Conference, Proceedings Usenix Winter 1995 Technical Conference, New Orleans, LA. USA, Jan. 16-20, 1995, pp. 131-142.
Wilson, P.R., et al., "Design of the Opportunistic Garbage Collector," Proceedings of the Object Oriented Programming Systems Languages And Applications Conference, New Orleans, vol. 24, No. 10, Oct. 1989.
Wollrath et al., A Distributed Object Model for the Java(TM) System, USENIX Association, Conference on Object-Oriented Technologies and Systems, Jun. 17-21, 1996.
Wollrath et al., A Distributed Object Model for the Java™ System, USENIX Association, Conference on Object-Oriented Technologies and Systems, Jun. 17-21, 1996.
Yemini, Y. and S. da silva, "Towards Programmable Networks", IFIP/IEEE International Workshop on Distributed Systems: Operations and Management, L'Aquila, Italy, Oct. 1996.
Yin J. et al., "Using Leases to Support Server Driven Consistency in Large-Scale Systems", Computer Services Department, University of Texas at Austin, p. 285-294.
US7506357B1 (en) * 1998-10-28 2009-03-17 Bea Systems, Inc. System and method for maintaining security in a distributed computer network
US7647597B2 (en) * 2001-06-28 2010-01-12 Microsoft Corporation Transparent and sub-classable proxies
US7627626B2 (en) * 2003-04-21 2009-12-01 Gateway, Inc. System for restricting use of a grid computer by a computing grid
US7487348B2 (en) 2003-04-25 2009-02-03 Gateway Inc. System for authenticating and screening grid jobs on a computing grid
US8032623B2 (en) 2003-09-30 2011-10-04 International Business Machines Corporation Context-based dynamic policy assignment in a distributed processing environment
US20090132647A1 (en) * 2003-09-30 2009-05-21 International Business Machines Corporation Context-based dynamic policy assignment in a distributed processing environment
US20080133637A1 (en) * 2003-09-30 2008-06-05 International Business Machines Corporation Method, system, and storage medium for providing context-based dynamic policy assignment in a distributed processing environment
US7349966B2 (en) 2003-09-30 2008-03-25 International Business Machines Corporation Method, system, and storage medium for providing context-based dynamic policy assignment in a distributed processing environment
US7490154B2 (en) 2003-09-30 2009-02-10 International Business Machines Corporation Method, system, and storage medium for providing context-based dynamic policy assignment in a distributed processing environment
US7738497B2 (en) * 2004-11-15 2010-06-15 Sap, Ag System and method for dynamically modifying synchronized business information server interfaces
US8325750B2 (en) 2004-11-15 2012-12-04 Sap Ag Accelerated system and methods for synchronizing, managing, and publishing business information
US8526316B2 (en) 2004-11-15 2013-09-03 Sap Ag System and method for dynamically modifying synchronized business information server interfaces
US7549151B2 (en) 2005-02-14 2009-06-16 Qnx Software Systems Fast and memory protected asynchronous message scheme in a multi-process and multi-thread environment
US20110035502A1 (en) * 2005-06-03 2011-02-10 Andrew Boyd Distributed Kernel Operating System
US7765310B2 (en) * 2005-06-23 2010-07-27 International Business Machines Corporation Opaque cryptographic web application data protection
US7680096B2 (en) 2005-10-28 2010-03-16 Qnx Software Systems Gmbh & Co. Kg System for configuring switches in a network
US7987163B2 (en) 2008-02-12 2011-07-26 Bae Systems Information And Electronic Systems Integration Inc. Apparatus and method for dynamic web service discovery
US6983285B2 (en) 2006-01-03
US20030023613A1 (en) 2003-01-30
US20020016790A1 (en) 2002-02-07
Gray et al. 2002 D'Agents: Applications and performance of a mobile‐agent system
EP0767563B1 (en) 2004-07-28 Method and apparatus for multiprotocol operation in a client/server system
US8001232B1 (en) 2011-08-16 Event message endpoints in a distributed computing environment
EP0810524B1 (en) 2003-05-07 Apparatus and method for processing servlets
EP0501610B1 (en) 1999-03-17 Object oriented distributed computing system
JP4777634B2 (en) 2011-09-21 Context-aware automatic service discovery and execution engine in the mobile ad-hoc network
US9110711B2 (en) 2015-08-18 Dynamic displays in a distributed computing environment
Gray et al. 2000 Mobile agents: Motivations and state of the art
CA2349863C (en) 2008-05-06 A duplicated naming service in a distributed processing system
CA2349883C (en) 2007-03-27 A smart stub or enterprise javatm bean in a distributed processing system
US6950875B1 (en) 2005-09-27 Message conductors in a distributed computing environment
US7210148B2 (en) 2007-04-24 Method and apparatus for dynamic distributed computing over a network
US5671414A (en) 1997-09-23 Method and apparatus for providing simple secure management of remote servers
US6898618B1 (en) 2005-05-24 Client-specified display services in a distributed computing environment
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:ARNOLD, KENNETH C.R.C.;WOLLRATH, ANN M.;WALDO, JAMES H.;REEL/FRAME:009290/0015