Apparatus and methods for communicating between resource domains
First Claim
1. A method for code from a first logical VM invoking a remote method of a second logical VM, the method comprising when code from a first logical VM is invoking a remote method of a second logical VM:
- wrapping each argument of the remote method when each argument is determined to be a remote object, wherein the first logical VM is associated with a first set of related code that are to be terminated together if misbehaving and the second logical VM is associated with a second set of related code that are to be terminated together if misbehaving, the first set of related code differing from the second set of related code;
copying each argument of the remote method when each argument is determined not to be a remote object;
invoking the remote method using each wrapped or copied argument;
wrapping the result of the invoked remote method when the result is determined to be a remote object;
copying the result of the invoked remote method when the result is determined not to be a remote object;
returning the wrapped or copied result only when an invocation thread associated with invoking the remote method of the second logical VM is not being terminated; and
throwing an exception on the remote method of the second logical VM when the invocation thread associated with invoking the remote method of the second logical VM is being terminated.
2 Assignments
0 Petitions
Accused Products
Abstract
Disclosed is a method for executing a remote method. Each argument of the remote method is wrapped when the argument is a remote object (e.g. the argument'"'"'s declared class implements a remote marker interface). However, each argument of the remote method is copied when an argument is not a remote object. The remote method is invoked using the wrapped or copied argument(s) (e.g. the wrapped or copied arguments are passed to the invoked method). A result of the invoked remote method is then wrapped (e.g., prior to being passed to the process that is receiving the result) when the result is a remote object (e.g., the result'"'"'s declared class does not implement the remote marker interface). In contrast, the result of the remote method is copied (e.g., the copy is then passed to the process that is receiving the result) when the result is are remote object.
-
Citations
27 Claims
-
1. A method for code from a first logical VM invoking a remote method of a second logical VM, the method comprising when code from a first logical VM is invoking a remote method of a second logical VM:
-
wrapping each argument of the remote method when each argument is determined to be a remote object, wherein the first logical VM is associated with a first set of related code that are to be terminated together if misbehaving and the second logical VM is associated with a second set of related code that are to be terminated together if misbehaving, the first set of related code differing from the second set of related code;
copying each argument of the remote method when each argument is determined not to be a remote object;
invoking the remote method using each wrapped or copied argument;
wrapping the result of the invoked remote method when the result is determined to be a remote object;
copying the result of the invoked remote method when the result is determined not to be a remote object;
returning the wrapped or copied result only when an invocation thread associated with invoking the remote method of the second logical VM is not being terminated; and
throwing an exception on the remote method of the second logical VM when the invocation thread associated with invoking the remote method of the second logical VM is being terminated. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 25)
creating a wrapper object for the argument or the result and remembering an association between the wrapper object and the argument or the result when a wrapper object has not already been created; and
finding the wrapper object for the argument or the result based on a previous association between the argument or the result and the wrapper object when the wrapper object has already been created.
-
-
5. A method as recited in claim 4, wherein creating the wrapper object for each argument and the result includes:
-
finding or generating a remote stub class;
creating an instantiation of the remote stub class; and
setting a data member within the remote stub class to refer to the argument or the result.
-
-
6. A method as recited in claim 5, wherein generating the remote stub class includes:
-
generating a class name;
adding a method implementation for each method of a class of the argument or result being wrapped into a class definition array; and
remembering an association between the class and the remote stub class.
-
-
7. A method as recited in claim 6, wherein finding the remote stub class is based on a previously remembered association between a class and the remote stub class.
-
8. A method as recited in claim 1, wherein copying each argument and the result includes:
-
serializing each argument or the result into a byte array when the each argument or the result implements serialization;
deserializing the each argument or the result with respect to a target class loader associated with code that will use the copy of each argument or the result when the each argument or the result implements serialization;
implementing a failure process when the each argument or the result does not implement serialization.
-
-
25. A method as recited in claim 1, wherein the first set of related code of the first logical VM is assigned to a first protection domain and the second set of related code of the second logical VM is assigned to a second protection domain that differs from the first protection domain.
-
9. A computer readable medium containing computer codes for executing a remote method, the computer readable medium comprising:
-
computer code for when code from a first logical VM is invoking a remote method of a second logical VM, wrapping each argument of the remote method when each argument is determined to be a remote object, wherein the first logical VM is associated with a first set of related code that are to be terminated together if misbehaving and the second logical VM is associated with a second set of related code that are to be terminated together if misbehaving, the first set of related code differing from the second set of related code;
computer code for wrapping each argument of the remote method when each argument is determined to be a remote object;
computer code for copying each argument of the remote method when each argument is determined not to be a remote object;
computer code for invoking the remote method using the wrapped or copied argument(s);
computer code for wrapping the result of the invoked remote method when the result is determined to be a remote object;
computer code for copying the result of the invoked remote method when the result is determined not to be a remote object; and
computer code for returning the wrapped or copied result only when an invocation thread associated with invoking the remote method of the second logical VM is not being terminated; and
computer code for throwing an exception on the remote method of the second logical VM when the invocation thread associated with invoking the remote method of the second logical VM is being terminated. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16, 26)
creating a wrapper object for the argument or the result and remembering an association between the wrapper object and the argument or the result when a wrapper object has not already been created; and
finding the wrapper object for the argument or the result based on a previous association between the argument or the result and the wrapper object when the wrapper object has already been created.
-
-
13. A computer readable medium as recited in claim 12, wherein creating the wrapper object for the argument or the result includes:
-
finding or generating a remote stub class;
creating an instantiation of the remote stub class; and
setting a data member within the remote stub class to refer to the argument or the result.
-
-
14. A computer readable medium as recited in claim 13, wherein generating the remote stub class includes:
-
generating a class name;
adding a method implementation for each method of a class of the argument or result being wrapped into a class definition array; and
remember an association between the class and the remote stub class.
-
-
15. A computer readable medium as recited in claim 14, wherein finding the remote stub class is based on a previously remembered association between a class and the remote stub class.
-
16. A computer readable medium as recited in claim 9, wherein copying each of the argument or the result includes:
-
serializing each argument or the result into a byte array when the each argument or the result implements serialization;
deserializing each argument or the result with respect to a target class loader associated with code that is using the copy of each argument or the result when the each argument or the result implements serialization;
implementing a failure process when the each argument or the result does not implement serialization.
-
-
26. A computer readable medium as recited in claim 9, wherein the first set of related code of the first logical VM is assigned to a first protection domain and the second set of related code of the second logical VM is assigned to a second protection domain that differs from the first protection domain.
-
17. A computer system for executing a remote method, the computer system comprising:
-
a memory; and
a processor coupled to the memory, wherein at least one of the memory and the processor are adapted for when code from a first logical VM is invoking a remote method of a second logical VM;
wrapping each argument of the remote method when each argument is determined to be a remote object, wherein the first logical VM is associated with a first set of related code that are to be terminated together if misbehaving and the second logical VM is associated with a second set of related code that are to be terminated together if misbehaving, the first set of related code differing from the second set of related code;
copying each argument of the remote method when each argument is determined not to be a remote object;
invoking the remote method using each wrapped or copied argument;
wrapping the result of the invoked remote method when the result is determined to be a remote object;
copying the result of the invoked remote method when the result is determined not to be a remote object;
returning the wrapped or copied result only when an invocation thread associated with invoking the remote method of the second logical VM is not being terminated; and
throwing an exception on the remote method of the second logical VM when the invocation thread associated with invoking the remote method of the second logical VM is being terminated. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24, 27)
creating a wrapper object for the argument or the result and remembering an association between the wrapper object and the argument or the result when a wrapper object has not already been created; and
finding the wrapper object for the argument or the result based on a previous association between the argument or the result and the wrapper object when the wrapper object has already been created.
-
-
21. A computer system as recited in claim 20, wherein creating the wrapper object for the argument or the result includes:
-
finding or generating a remote stub class;
creating an instantiation of the remote stub class; and
setting a data member within the remote stub class to refer to the argument or the result.
-
-
22. A computer system as recited in claim 21, wherein generating the remote stub class includes:
-
generating a class name;
adding a method implementation for each method of a class of the argument or result being wrapped into a class definition array; and
remember an association between the class and the remote stub class.
-
-
23. A computer system as recited in claim 22, wherein finding the remote stub class is based on a previously remembered association between a class and the remote stub class.
-
24. A computer system as recited in claim 17, wherein copying each of the argument or the result includes:
-
serializing each argument or the result into a byte array when the each argument or the result implements serialization;
deserializing each argument or the result with respect to a target class loader associated with code that is using the copy of each argument or the result when the each argument or the result implements serialization;
implementing a failure process when the each argument or the result does not implement serialization.
-
-
27. A computer system as recited in claim 17, wherein the first set of related code of the first logical VM is assigned to a first protection domain and the second set of related code of the second logical VM is assigned to a second protection domain that differs from the first protection domain.
Specification