public class JsonRpcServer extends StringRpcServer
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.RpcServer
,
JsonRpcClient
RpcServer.RpcConsumer
Modifier and Type | Field and Description |
---|---|
Class<?> |
interfaceClass
The interface this server implements.
|
Object |
interfaceInstance
The instance backing this server.
|
ServiceDescription |
serviceDescription
Holds the JSON-RPC service description for this client.
|
STRING_ENCODING
Constructor and Description |
---|
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.
|
Modifier and Type | Method and Description |
---|---|
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.
|
handleCall, handleCast, handleStringCall, handleStringCast
close, getChannel, getQueueName, handleCall, handleCall, handleCast, handleCast, mainloop, postprocessReplyProperties, preprocessReplyProperties, processRequest, setupConsumer, terminateMainloop
public ServiceDescription serviceDescription
public Class<?> interfaceClass
public Object interfaceInstance
public JsonRpcServer(Channel channel, Class<?> interfaceClass, Object interfaceInstance) throws IOException
channel
- AMQP channel to useinterfaceClass
- Java interface that this server is exposing to the worldinterfaceInstance
- Java instance (of interfaceClass) that is being exposedIOException
- if something goes wrong during an AMQP operationpublic JsonRpcServer(Channel channel, String queueName, Class<?> interfaceClass, Object interfaceInstance) throws IOException
channel
- AMQP channel to usequeueName
- AMQP queue name to listen for requests oninterfaceClass
- Java interface that this server is exposing to the worldinterfaceInstance
- Java instance (of interfaceClass) that is being exposedIOException
- if something goes wrong during an AMQP operationpublic String handleStringCall(String requestBody, AMQP.BasicProperties replyProperties)
handleStringCall
in class StringRpcServer
public String doCall(String requestBody)
requestBody
- the JSON-RPC request string (a JSON encoded value)public Method matchingMethod(String methodName, Object[] params)
public static String errorResponse(Object id, int code, String message, Object errorArg)
public static String resultResponse(Object id, Object result)
public static String response(Object id, String label, Object value)
public ServiceDescription getServiceDescription()
Copyright © 2017 Pivotal Software, Inc.. All rights reserved.