public class

JsonRpcServer

extends StringRpcServer
java.lang.Object
   ↳ com.rabbitmq.client.RpcServer
     ↳ com.rabbitmq.client.StringRpcServer
       ↳ com.rabbitmq.tools.jsonrpc.JsonRpcServer

Class Overview

JSON-RPC Server class. Given a Java Class, representing an interface, and an implementation of that interface, JsonRpcServer will reflect on the class to construct the ServiceDescription, and will route incoming requests for methods on the interface to the implementation object while the mainloop() is running.

Summary

Fields
public Class<?> interfaceClass The interface this server implements.
public Object interfaceInstance The instance backing this server.
public ServiceDescription serviceDescription Holds the JSON-RPC service description for this client.
Public Constructors
JsonRpcServer(Channel channel, Class<?> interfaceClass, Object interfaceInstance)
Construct a server that talks to the outside world using the given channel, and constructs a fresh temporary queue.
JsonRpcServer(Channel channel, String queueName, Class<?> interfaceClass, Object interfaceInstance)
Construct a server that talks to the outside world using the given channel and queue name.
Public Methods
String doCall(String requestBody)
Runs a single JSON-RPC request.
static String errorResponse(Object id, int code, String message, Object errorArg)
Construct and encode a JSON-RPC error response for the request ID given, using the code, message, and possible (JSON-encodable) argument passed in.
ServiceDescription getServiceDescription()
Public API - gets the service description record that this service built from interfaceClass at construction time.
String handleStringCall(String requestBody, AMQP.BasicProperties replyProperties)
Override our superclass' method, dispatching to doCall.
Method matchingMethod(String methodName, Object[] params)
Retrieves the best matching method for the given method name and parameters.
static String response(Object id, String label, Object value)
Private API - used by errorResponse and resultResponse.
static String resultResponse(Object id, Object result)
Construct and encode a JSON-RPC success response for the request ID given, using the result value passed in.
[Expand]
Inherited Methods
From class com.rabbitmq.client.StringRpcServer
From class com.rabbitmq.client.RpcServer
From class java.lang.Object

Fields

public Class<?> interfaceClass

The interface this server implements.

public Object interfaceInstance

The instance backing this server.

public ServiceDescription serviceDescription

Holds the JSON-RPC service description for this client.

Public Constructors

public JsonRpcServer (Channel channel, Class<?> interfaceClass, Object interfaceInstance)

Construct a server that talks to the outside world using the given channel, and constructs a fresh temporary queue. Use getQueueName() to discover the created queue name.

Parameters
channel AMQP channel to use
interfaceClass Java interface that this server is exposing to the world
interfaceInstance Java instance (of interfaceClass) that is being exposed
Throws
IOException if something goes wrong during an AMQP operation

public JsonRpcServer (Channel channel, String queueName, Class<?> interfaceClass, Object interfaceInstance)

Construct a server that talks to the outside world using the given channel and queue name. Our superclass, RpcServer, expects the queue to exist at the time of construction.

Parameters
channel AMQP channel to use
queueName AMQP queue name to listen for requests on
interfaceClass Java interface that this server is exposing to the world
interfaceInstance Java instance (of interfaceClass) that is being exposed
Throws
IOException if something goes wrong during an AMQP operation

Public Methods

public String doCall (String requestBody)

Runs a single JSON-RPC request.

Parameters
requestBody the JSON-RPC request string (a JSON encoded value)
Returns
  • a JSON-RPC response string (a JSON encoded value)

public static String errorResponse (Object id, int code, String message, Object errorArg)

Construct and encode a JSON-RPC error response for the request ID given, using the code, message, and possible (JSON-encodable) argument passed in.

public ServiceDescription getServiceDescription ()

Public API - gets the service description record that this service built from interfaceClass at construction time.

public String handleStringCall (String requestBody, AMQP.BasicProperties replyProperties)

Override our superclass' method, dispatching to doCall.

public Method matchingMethod (String methodName, Object[] params)

Retrieves the best matching method for the given method name and parameters. Subclasses may override this if they have specialised dispatching requirements, so long as they continue to honour their ServiceDescription.

public static String response (Object id, String label, Object value)

Private API - used by errorResponse and resultResponse.

public static String resultResponse (Object id, Object result)

Construct and encode a JSON-RPC success response for the request ID given, using the result value passed in.