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

Last updated

Was this helpful?