✒️
[Lab] gRPC
  • Introduction
  • Environment setup and prerequisite
  • Write your .proto file
  • Generate server and client code in Java
  • Implement the server code in Java
  • Implement the client in Java
  • Implement the client in GO
Powered by GitBook
On this page
  • Compile your program
  • Test your program

Was this helpful?

Implement the client in Java

We now write a simple Java client program to call the CalculatorService.

Create CalculatorClient.java in src/main/cslab/grpclab:

cd ~/grpclab
nano src/main/java/cslab/grpclab/CalculatorClient.java
CalculatorClient.java
package cslab.grpclab;

import io.grpc.Channel;
import io.grpc.ManagedChannelBuilder;

public class CalculatorClient {
    public static void main(String[] args){
        //Create a connection to `CalculatorServer`
        Channel channel = ManagedChannelBuilder.forAddress("127.0.0.1", 8980)
                                                .usePlaintext() // disable TLS
                                                .build();

        //Create a stub of Calculator service for invoking the method of Calculator service later on
        CalculatorGrpc.CalculatorBlockingStub stub = CalculatorGrpc.newBlockingStub(channel);

        // Calculate "1 + 1" by calling the CalculatorService
        float a = 1;
        float b = 1;

        //Create the `CalculationRequest` object and set the value of `a` and `b`
        CalculatorOuterClass.CalculationRequest request = CalculatorOuterClass.CalculationRequest.newBuilder()
                                                            .setA(a)
                                                            .setB(b)
                                                            .build();

        //Invoking the `sum` function of `CalculatorService` through the stub
        CalculatorOuterClass.CalculationRespond respond = stub.sum(request);
        System.out.println(String.format("JavaClient: The result of %f + %f = %f", a, b, respond.getResult()));

        // Calculate "3 x 2" by calling the CalculatorService
        a = 3;
        b = 2;
        request = CalculatorOuterClass.CalculationRequest.newBuilder()
                                                            .setA(a)
                                                            .setB(b)
                                                            .build();
        respond = stub.product(request);
        System.out.println(String.format("JavaClient: The result of %f x %f = %f", a, b, respond.getResult()));

    }
}

Compile your program

Again we need to compile our code into the JAR. Execute the following command.

mvn package

grpclab-1-jar-with-dependencies.jar will be generated under target which contains the bytecode of your program and dependency libraries.

Test your program

Now we have the CalculatorServer and CalculatorClient. We can test our programs.

Launch the CalculatorServer in the background:

java -cp target/grpclab-1-jar-with-dependencies.jar cslab.grpclab.CalculatorServer &

Launch the CalculatorClient:

java -cp target/grpclab-1-jar-with-dependencies.jar cslab.grpclab.CalculatorClient 

You should see the following output from CalculatorClient:

JavaClient: The result of 1.000000 + 1.000000 = 2.000000
JavaClient: The result of 3.000000 x 2.000000 = 6.000000

You can kill the CalculatorServer by using command:

kill %1
PreviousImplement the server code in JavaNextImplement the client in GO

Last updated 6 months ago

Was this helpful?