Package io.grpc.stub

API for the Stub layer.

The gRPC Java API is split into two main parts: The stub layer and the call layer. The stub layer is a wrapper around the call layer.

In the most common case of gRPC over Protocol Buffers, stub classes are automatically generated from service definition .proto files by the Protobuf compiler. See gRPC Java Generated Code Guide .

The server side stub classes are abstract classes with RPC methods for the server application to implement/override. These classes internally use ServerCalls to interact with the call layer. The RPC methods consume a StreamObserver object responseObserver as one of its arguments. When users are implementing/override these methods in the server application, they may call the onNext(), onError() and onCompleted() methods on the responseObserver argument to send out a response message, error and completion notification respectively. If the RPC is client-streaming or bidirectional-streaming, the abstract RPC method should return a requestObserver which is also a StreamObserver object. User should typically implement the onNext(), onError() and onCompleted() callbacks of requestObserver to define how the server application would react when receiving a message, error and completion notification respectively from the client side.

The client side stub classes are implementations of AbstractStub that provide the RPC methods for the client application to call. The RPC methods in the client stubs internally use ClientCalls to interact with the call layer. For asynchronous stubs, the RPC methods also consume a StreamObserver object responseObserver as one of its arguments, and moreover for client-streaming or bidirectional-streaming, also return a requestObserver which is also a StreamObserver object. In contrast to the server side, users should implement the onNext(), onError() and onCompleted() callbacks of responseObserver to define what the client application would do when receiving a response message, error and completion notification respectively from the server side, and then pass the responseObserver to the RPC method in the client stub. If the RPC method returns a requestObserver, users should call the onNext(), onError() and onCompleted() methods on the requestObserver to send out a request message, error and completion notification respectively.