Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## com.rabbitmq.tools.jsonrpc
Class JsonRpcServer

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

    public class JsonRpcServer

extends StringRpcServer

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.

See Also:
  `RpcServer`, `JsonRpcClient`

Field Summary
`java.lang.Class<?>` | `interfaceClass` The interface this server implements.
`java.lang.Object` | `interfaceInstance` The instance backing this server.
`ServiceDescription` | `serviceDescription` Holds the JSON-RPC service description for this client.

Fields inherited from class com.rabbitmq.client.StringRpcServer
`STRING_ENCODING`

Constructor Summary
`JsonRpcServer(Channel channel, java.lang.Class<?> interfaceClass, java.lang.Object interfaceInstance)` Construct a server that talks to the outside world using the given channel, and constructs a fresh temporary queue.
`JsonRpcServer(Channel channel, java.lang.String queueName, java.lang.Class<?> interfaceClass, java.lang.Object interfaceInstance)` Construct a server that talks to the outside world using the given channel and queue name.

Method Summary
`java.lang.String` | `doCall(java.lang.String requestBody)` Runs a single JSON-RPC request.
`static java.lang.String` | `errorResponse(java.lang.Object id, int code, java.lang.String message, java.lang.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.
`java.lang.String` | `handleStringCall(java.lang.String requestBody, AMQP.BasicProperties replyProperties)` Override our superclass' method, dispatching to doCall.
`java.lang.reflect.Method` | `matchingMethod(java.lang.String methodName, java.lang.Object[] params)` Retrieves the best matching method for the given method name and parameters.
`static java.lang.String` | `response(java.lang.Object id, java.lang.String label, java.lang.Object value)` Private API - used by errorResponse and resultResponse.
`static java.lang.String` | `resultResponse(java.lang.Object id, java.lang.Object result)` Construct and encode a JSON-RPC success response for the request ID given, using the result value passed in.

Methods inherited from class com.rabbitmq.client.StringRpcServer
`handleCall, handleCast, handleStringCall, handleStringCast`

Methods inherited from class com.rabbitmq.client.RpcServer
`close, getChannel, getQueueName, handleCall, handleCall, handleCast, handleCast, mainloop, processRequest, setupConsumer, terminateMainloop`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### serviceDescription

    public ServiceDescription serviceDescription

  Holds the JSON-RPC service description for this client.

### interfaceClass

    public java.lang.Class<?> interfaceClass

  The interface this server implements.

### interfaceInstance

    public java.lang.Object interfaceInstance

  The instance backing this server.

Constructor Detail

### JsonRpcServer

    public JsonRpcServer(Channel channel,
                         java.lang.Class<?> interfaceClass,
                         java.lang.Object interfaceInstance)
                  throws java.io.IOException

  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:
    `java.io.IOException` - if something goes wrong during an AMQP operation

### JsonRpcServer

    public JsonRpcServer(Channel channel,
                         java.lang.String queueName,
                         java.lang.Class<?> interfaceClass,
                         java.lang.Object interfaceInstance)
                  throws java.io.IOException

  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:
    `java.io.IOException` - if something goes wrong during an AMQP operation

Method Detail

### handleStringCall

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

  Override our superclass' method, dispatching to doCall.

  Overrides:
    `handleStringCall` in class `StringRpcServer`

### doCall

    public java.lang.String doCall(java.lang.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)

### matchingMethod

    public java.lang.reflect.Method matchingMethod(java.lang.String methodName,
                                                   java.lang.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.

### errorResponse

    public static java.lang.String errorResponse(java.lang.Object id,
                                                 int code,
                                                 java.lang.String message,
                                                 java.lang.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.

### resultResponse

    public static java.lang.String resultResponse(java.lang.Object id,
                                                  java.lang.Object result)

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

### response

    public static java.lang.String response(java.lang.Object id,
                                            java.lang.String label,
                                            java.lang.Object value)

  Private API - used by errorResponse and resultResponse.

### getServiceDescription

    public ServiceDescription getServiceDescription()

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

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD