WO0186395A2

Remote method invocation with secure messaging in a distributed computing environment

Abstract

An interface between clients and services in a distributed computing environment is described. Method gates may provide an interface to remotely invoke functions of a service. A method gate may be generated from an advertisement that may include definitions for one or more messages for remotely invoking functions of the service. A client may generate messages containing representations of method calls. The service may invoke functions that correspond to the set of messages. A method gate on the service may unmarshal the message and invoke the function. The client may receive the results of the function directly. Alternatively, the results may be stored, an advertisement to the results may be provided, and a gate may be generated to access the results. Message gates may perform the sending and receiving of the messages between the client and service. In one embodiment, functions of the service may be computer programming language (e.g. Java) methods. In one embodiment, a message including a representation of a method call may be generated when no actual method call was made. In one embodiment, a method call may be transformed into messages that may be sent to the service; the service may not know that the messages were generated from a method call. In one embodiment, a service may transform messages requesting functions into method calls; the client may not know that the service is invoking methods to perform the functions. A credential may be embedded in messages and used for message authentication on the service.

Term

No projected expiry on record.

  1. Priority
  2. Filed
  3. Published
  4. Today

68 claims: 46 independent, 22 dependent

  1. 1
    WHAT IS CLAIMED IS 1. A method for remotely invoking methods in a distributed computing environment, comprising:a client generating a message in a data representation language, wherein the message includes ύiformation representing a computer programming language method call, and wherein the message further includes a credential for allowing the client access to a service configured to perform functions on behalf of clients in the disfributed computing envfronment;the client sending the message to the service;the service examining the credential included in the message;if said examining determines the credential is authentic, the service performing a function on behalf of the client in accordance with the ύiformation representing the computer programming language method call included in the message;and if said examining determines the credential is not authentic, the service not performing the function on behalf of the client.
  2. 2
    The method as recited in claύn 1, wherein the client comprises a client method gate configured to provide an interface to the service by generating data representation language messages including ύiformation representing method calls, and wherein said generating a message is performed by the client method gate.
  3. 3
    The method as recited in claύn 2, wherein said sending the message is performed by the client method gate.
  4. 4
    The method as recited in claύn 2, wherein the client further comprises a client process, the method further comprisύig:the client process generating the computer programming language method call;and the client method gate receiving the method call generated by the client process;wherein said generating a message is performed in response to said receiving the method call.
  5. 5
    The method as recited in claύn 2, wherein the client further comprises a client message endpoint, wherein said sending the message to the service comprises:the client method gate sending the message to the client message endpoint, wherein the client message endpoint is configured to send messages in the data representation language to the service;the client message endpoint attaching the credential to the message;and the client message endpoint sending the message to the service.
  6. 6
    The method as recited in claύn 1, further comprising the service providing to the client a service advertisement comprising a data representation language message schema comprising descriptions of data representation language messages the client is authorized to send to the service, and wherein said generating a message is performed in accordance with a description of the message comprised in the message schema.
  7. 13
    The method as recited in claύn 1, wherein the service comprises one or more computer programming language methods executable within the service, wherein the ύiformation representing the computer programming language method call includes an identifier of the method call, and wherein said performing a function comprises:regenerating the method call in accordance with the identifier of the method call included in the ύiformation representing the method call;and executing a computer programming language method of the service in accordance with the regenerated method call.
  8. 14
    The method as recited in claύn 13, wherein the ύiformation representing the computer programming language method call further includes one or more parameter values of the method call, and wherein said executmg a computer programming language method in accordance with the regenerated method call comprises providing the one or more parameter values from the ύiformation representing the method call as parameter values of the method call.
  9. 15
    The method as recited in claύn 13, wherein the service further comprises a service method gate configured to provide an interface to the one or more computer programmύig language methods of the service by receiving data representation language messages and invoking computer programmύig language methods specified by the messages, and wherein said regenerating the method call is performed by the service method gate.
  10. 16
    The method as recited in claύn 1, wherein said performing a function generates results data, the method further comprisύig the service providing the generated results data to the client.
  11. 17
    The method as recited in claύn 1, whereύi said performing a function generates results data, and wherein the service comprises a service message endpoint configured to send messages in the data representation language to the client for the service, the method further comprising:the service message endpoint sending a results message to the client, wherein the results message includes the generated results data.
  12. 18
    The method as recited in claύn 1, wherein said performing a function generates results data, the method further comprising:storing the generated results data to a space service in the disfributed computing envfronment;providing an advertisement for the stored results data to the client, wherein the advertisement comprises information to enable access by the client to the stored results data;and the client accessing the stored results data from the space service in accordance with the information in the provided advertisement.
  13. 19
    The method as recited in claύn 18, whereύi the client accessing the stored results data comprises:generatύig a client results message endpoint in accordance with the information in the provided advertisement, wherein the client results message endpoint is configured to send messages in the data representation language to the space service for the client;generating a results request message in the data representation language, whereύi the results request message requests the results data be provided to the client;the client results message endpoint sending the results request message to the space service;and the space service sending the requested results data to the client results message endpoint in response to the results request message.
  14. 24
    The method as recited in claύn 16, whereύi the virtual machine is a Java Virtual Machine (JVM).
  15. 25
    A distributed computing system comprisύig:a service device comprisύig one or more functions executable on the service device on behalf of client devices in the disfributed computmg system;a client device configured to: generate a message in a data representation language, whereύi the message includes infonnation represent ig a computer programming language method call, and wherein the message further includes a credential for allowing the client device access to the service device;and send the message to the service device;wherein the service device is configured to: examine the credential included in the message;if said examining verifies the credential, perfonn a function on behalf of the client in accordance with the information representing the computer programming language method call included in the message;and if said examining does not verify the credential, not perform the function on behalf of the client.
  16. 26
    The system as recited in claύn 25, wherein the client device comprises a client method gate configured to provide an interface to the service by generating data representation language messages mcludmg information representing method calls, and wherein said generating a message is performed by the client method gate.
  17. 27
    The system as recited in claύn 26, wherein the client device further comprises a client process, wherein the client process is configured to generate the computer programming language method call;wherein the client method gate is further configured to receive the method call generated by the client process;and whereύi said generating a message is performed by the client method gate in response to said receiving the method call.
  18. 28
    The system as recited in claύn 26, wherein the client device further comprises a client message endpoint, wherein the client method gate is further configured to send the message to the client message endpoint; and wherein the client message endpoint is configured to:attach the credential to the message;and send the message to the service device.
  19. 32
    The system as recited in claύn 31, wherein the address is a Uniform Resource Identifier (URI).
  20. 33
    The system as recited in claύn 31, whereύi the client device is further configured to:generate a client message endpoint in accordance with the service advertisement, wherein the client message endpoint is configured to send the data representation language messages to the address;and wherein said sending the message to the service device is performed by the client message endpoint.
  21. 34
    The system as recited in claύn 25, wherein the service device comprises one or more computer programming language methods executable withm the service device, whereύi the ύiformation representύig the computer programming language method call includes an identifier of the method call, and wherein, in said performing a function, the service device is further configured to:regenerate the method call in accordance with the identifier of the method call included in the ύiformation representing the method call;and execute a computer programming language method of the service device in accordance with the regenerated method call.
  22. 36
    The system as recited in claύn 34, wherein the service device further comprises a service method gate configured to provide an interface to the one or more computer programmύig language methods of the service by receiving data representation language messages and invoking methods specified by the messages, and whereύi said regenerating the method call is performed by the service method gate.
  23. 37
    The system as recited in claύn 25, whereύi said performing a function generates results data, wherein the service device comprises a service message endpoint configured to send a results message in the data representation language to the client device, wherein the results message includes the generated results data.
  24. 38
    The system as recited in claύn 25, further comprising:a space service;wherein the service device is further configured to: store results data generated by said performing a function to the space service;provide an advertisement for the stored results data to the client device, wherein the advertisement comprises information to enable access by the client device to the stored results data;and wherein the client device is further configured to access the stored results data from the space service in accordance with the information in the provided advertisement.
  25. 39
    The system as recited in claύn 38, wherein, in accessing the stored results data, the client device is further configured to generate a client results message endpoint in accordance with the iformation in the provided advertisement; wherein the client results message endpoint is configured to:generate a results request message in the data representation language, wherein the results request message requests the results data be provided to the client device;and send the results request message to the space service;and wherein the space service is configured to send the requested results data to the client results message endpoint in response to the results request message.
  26. 40
    The system as recited in claύn 38, wherein the ύiformation to enable access by the client device to the stored results data comprises one or more Uniform Resource Identifiers (URIs) for accessing the stored results data.
  27. 42
    The system as recited in claύn 25, wherein said computer programmύig language is the Java programming language, and wherein the ύiformation representing the method call in the message represents a Java method call to a Java method implemented on the service, and wherein, in said performing a function, the service device is further configured to invoke the Java method on the service device in accordance with the information representύig the Java method call included in the message.
  28. 45
    A device comprising:a client component;and a method gate;whereύi the client component is configured to generate a computer programming language method call;wherein the method gate is configured to: access the computer programming language method call generated by the client component;generate a message in a data representation language, whereύi the message includes information representing a computer programming language method call, and wherein the message further includes a credential for allowing the client device access to a service in a disfributed computing envfronment;and send the message to the service;whereύi the service is operable to verify the message as authentic by examining the credential included in the message, and to perform a function on behalf of the client component in accordance with the infonnation representing the computer programming language method call included hi the message if the message is verified as authentic.
  29. 46
    The device as recited in claύn 45, wherein the method gate comprises a data representation language message schema comprising descriptions of data representation language messages the device is authorized to send to the service, wherein said generating a message is performed in accordance with a description of the message comprised in the message schema.
  30. 49
    A device comprising:a client component configured to generate a message in a data representation language, wherein the message includes infonnation representύig a computer programming language method call;and a message endpomt configured to: attach a credential to the message for allowing the client component access to a service in a distributed computing environment;and send the message to a service in a disfributed computing envfronment;wherein the service is operable to verify the message as authentic by examining the credential included in the message, and to perform a function on behalf of the client component in accordance with the information representing the computer programmmg language method call included in the message if the message is authentic.
  31. 50
    The device as recited in claύn 49, wherein the client component is further configured to generate the computer programming language method call, and whereύi said generating a message is performed in response to said generathig the computer programming language method call.
  32. 52
    The device as recited in claύn 51, wherein the virtual machine is a Java Virtual Machine (JVM).
  33. 53
    The device as recited in claύn 49, wherein the service is further operable to store results data generated by the function to a space service in the distributed computing envfronment, and wherein the client component is further configured to:access a data representation language advertisement for the results data, whereύi the advertisement comprises information to enable access by the client component to the results data;and access the results data from the space service in accordance with the information in the provided advertisement for the stored results data.
  34. 54
    The device as recited in claύn 49, wherein said computer programmύig language is the Java programming language, and wherein the ύiformation representing a method call in the message represents a Java method call to a Java method implemented on the service.
  35. 55
    A device comprising:a message endpoint configured to: receive a message in a data representation language sent by a client of the device in a disfributed computing environment, wherein the message includes ύiformation representing a computer programming language method call, and wherein the message further includes a credential for allowing the client access to the device;and verify the message as authentic by examining the credential included in the message;a service component configured to: perform a function on behalf of the client in accordance with the information representing the computer programming language method call included in the message if the message is verified as authentic by the message endpoint;store results data generated by said performing a function to a space service in the distributed computing enviromnent;and provide an advertisement for the stored results data to the client, wherein the advertisement comprises ύiformation to enable access by the client to the stored results data.
  36. 56
    The device as recited in clahn 55, wherein the service component comprises a computer programming language method, wherein the message endpoint is further configured to:regenerate the computer programming language method call in accordance with an identifier of the method call included in the message;and invoke the computer programming language method of the service component with the regenerated method call;whereύi, n said performing a function, the service component is further configured to execute the computer programmύig language method in accordance with the regenerated method call in response to said invocation.
  37. 58
    The device as recited in claύn 55, wherein said computer programming language is the Java programming language.
  38. 59
    A canier medium comprising program instructions, wherein the program instructions are computer- executable to implement:a client generating a message in a data representation language, wherein the message includes ύiformation representύig a computer programmύig language method call, and wherein the message further includes a credential for allowing the client access to a service configured to perform functions on behalf of clients in the distributed computing envfronment;the client sending the message to the service;the service examining the credential included in the message;if said examining determines the credential is authentic, the service performing a function on behalf of the client in accordance with the information representing the computer programmύig language method call included in the message;and if said examining determines the credential is not authentic, the service not performing the function on behalf of the client.
  39. 61
    The canier medium as recited in claύn 60, whereύi the program instructions are further computer- executable to implement:the client generatύig a client method gate in accordance with the service advertisement, whereύi the client method gate is configured to provide to the client an mterface to the service by generating the data representation language messages described in the message schema;wherein said generating a message is performed by the client method gate.
  40. 62
    The canier medium as recited in claύn 61, wherein the program instructions are further computer- executable to implement:the client generating a client message endpomt in accordance with the service advertisement, wherein the client message endpoint is configured to send the data representation language messages to an address on the service included in the service advertisement;the client message endpomt receiving the generated message from the client method gate;the client message endpomt attaching the credential to the message;and wherein said sending the message to the service is perfonned by the client message endpomt.
  41. 63
    The canier medium as recited in claύn 59, wherein the service comprises one or more computer programming language methods executable withύi the service, whereύi the ύiformation representing the computer programming language method call includes an identifier of the method call, and whereύi, in said performing a function, the program instructions are further computer-executable to implement:regenerating the method call in accordance with the identifier of the method call included in the ύiformation representing the method call;and executing a computer programming language method of the service in accordance with the regenerated method call.
  42. 64
    The canier medium as recited in claύn 63, wherein the ύiformation representing the computer programmύig language method call further includes one or more parameter values of the method call, and wherein, in said executmg a computer programming language method in accordance with the regenerated method call, the program instructions are further computer-executable to implement providing the one or more parameter values from the information representing the method call as parameter values of the method call.
  43. 65
    The canier medium as recited in claύn 63, wherein the service further comprises a service method gate configured to provide an interface to the one or more computer programming language methods of the service by receiving data representation language messages and invoking computer programming language methods specified by the messages, and wherein said regenerating the method call is performed by the service method gate.
  44. 66
    The canier medium as recited in claύn 59, wherein said performing a function generates results data, and wherein the program instructions are further computer-executable to implement:storing the generated results data to a space service in the disfributed computing envfronment;providing an advertisement for the stored results data to the client, wherein the advertisement comprises information to enable access by the client to the stored results data;and the client accessing the stored results data from the space service in accordance with the infonnation in the provided advertisement.
  45. 67
    The canier medium as recited in claύn 59, wherein said data representation language is extensible Markup Language (XML).
  46. 68
    The canier medium as recited in claύn 59, wherein said computer programmύig language is the Java programmύig language, and wherein the ύiformation representing the method call in the message represents a Java method call to a Java method implemented on the service, and wherein, in said performing a function, the program instructions are further computer-executable to implement invokmg the Java method on the service in accordance with the ύiformation representing the Java method call included in the message.
Independent claims46