From 38989db6c1c37ec68698d1da4679789adba5fafb Mon Sep 17 00:00:00 2001 From: Ganesh Pagade Date: Sat, 29 Jul 2017 00:29:28 +0530 Subject: [PATCH 1/2] code for gRPC --- grpc/pom.xml | 73 +++++++++++++++++++ .../org/baeldung/grpc/client/GrpcClient.java | 28 +++++++ .../org/baeldung/grpc/server/GrpcServer.java | 19 +++++ .../grpc/server/HelloServiceImpl.java | 29 ++++++++ grpc/src/main/proto/HelloService.proto | 16 ++++ 5 files changed, 165 insertions(+) create mode 100644 grpc/pom.xml create mode 100644 grpc/src/main/java/org/baeldung/grpc/client/GrpcClient.java create mode 100644 grpc/src/main/java/org/baeldung/grpc/server/GrpcServer.java create mode 100644 grpc/src/main/java/org/baeldung/grpc/server/HelloServiceImpl.java create mode 100644 grpc/src/main/proto/HelloService.proto diff --git a/grpc/pom.xml b/grpc/pom.xml new file mode 100644 index 0000000000..056db0c3fe --- /dev/null +++ b/grpc/pom.xml @@ -0,0 +1,73 @@ + + 4.0.0 + + grpc + grpc-demo + 0.0.1-SNAPSHOT + jar + + grpc-demo + http://maven.apache.org + + + UTF-8 + + + + + io.grpc + grpc-netty + 1.4.0 + + + io.grpc + grpc-protobuf + 1.4.0 + + + io.grpc + grpc-stub + 1.4.0 + + + junit + junit + 4.12 + test + + + + + + kr.motd.maven + os-maven-plugin + 1.5.0.Final + + + + + org.xolstice.maven.plugins + protobuf-maven-plugin + 0.5.0 + + + com.google.protobuf:protoc:3.3.0:exe:${os.detected.classifier} + + grpc-java + + io.grpc:protoc-gen-grpc-java:1.4.0:exe:${os.detected.classifier} + + + + + + compile + compile-custom + + + + + + + diff --git a/grpc/src/main/java/org/baeldung/grpc/client/GrpcClient.java b/grpc/src/main/java/org/baeldung/grpc/client/GrpcClient.java new file mode 100644 index 0000000000..1a1809387f --- /dev/null +++ b/grpc/src/main/java/org/baeldung/grpc/client/GrpcClient.java @@ -0,0 +1,28 @@ +package org.baeldung.grpc.client; + +import org.baeldung.grpc.HelloRequest; +import org.baeldung.grpc.HelloResponse; +import org.baeldung.grpc.HelloServiceGrpc; + +import io.grpc.ManagedChannel; +import io.grpc.ManagedChannelBuilder; + +public class GrpcClient { + public static void main(String[] args) throws InterruptedException { + ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 8080) + .usePlaintext(true) + .build(); + + HelloServiceGrpc.HelloServiceBlockingStub stub + = HelloServiceGrpc.newBlockingStub(channel); + + HelloResponse helloResponse = stub.hello(HelloRequest.newBuilder() + .setFirstName("Baeldung") + .setLastName("gRPC") + .build()); + + System.out.println("Response received from server:\n" + helloResponse); + + channel.shutdown(); + } +} diff --git a/grpc/src/main/java/org/baeldung/grpc/server/GrpcServer.java b/grpc/src/main/java/org/baeldung/grpc/server/GrpcServer.java new file mode 100644 index 0000000000..9f119fe45d --- /dev/null +++ b/grpc/src/main/java/org/baeldung/grpc/server/GrpcServer.java @@ -0,0 +1,19 @@ +package org.baeldung.grpc.server; + +import java.io.IOException; + +import io.grpc.Server; +import io.grpc.ServerBuilder; + +public class GrpcServer +{ + public static void main(String[] args) throws IOException, InterruptedException { + Server server = ServerBuilder.forPort(8080) + .addService(new HelloServiceImpl()).build(); + + System.out.println("Starting server..."); + server.start(); + System.out.println("Server started!"); + server.awaitTermination(); + } +} diff --git a/grpc/src/main/java/org/baeldung/grpc/server/HelloServiceImpl.java b/grpc/src/main/java/org/baeldung/grpc/server/HelloServiceImpl.java new file mode 100644 index 0000000000..b08ad02c97 --- /dev/null +++ b/grpc/src/main/java/org/baeldung/grpc/server/HelloServiceImpl.java @@ -0,0 +1,29 @@ +package org.baeldung.grpc.server; + +import org.baeldung.grpc.HelloRequest; +import org.baeldung.grpc.HelloResponse; +import org.baeldung.grpc.HelloServiceGrpc.HelloServiceImplBase; + +import io.grpc.stub.StreamObserver; + +public class HelloServiceImpl extends HelloServiceImplBase { + + @Override + public void hello( + HelloRequest request, StreamObserver responseObserver) { + System.out.println("Request received from client:\n" + request); + + String greeting = new StringBuilder().append("Hello, ") + .append(request.getFirstName()) + .append(" ") + .append(request.getLastName()) + .toString(); + + HelloResponse response = HelloResponse.newBuilder() + .setGreeting(greeting) + .build(); + + responseObserver.onNext(response); + responseObserver.onCompleted(); + } +} diff --git a/grpc/src/main/proto/HelloService.proto b/grpc/src/main/proto/HelloService.proto new file mode 100644 index 0000000000..4f53191ab9 --- /dev/null +++ b/grpc/src/main/proto/HelloService.proto @@ -0,0 +1,16 @@ +syntax = "proto3"; +option java_multiple_files = true; +package org.baeldung.grpc; + +message HelloRequest { + string firstName = 1; + string lastName = 2; +} + +message HelloResponse { + string greeting = 1; +} + +service HelloService { + rpc hello(HelloRequest) returns (HelloResponse); +} From 6fcbc9b065e88f65e47c4785d6ae83f22739a2e7 Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Tue, 1 Aug 2017 22:31:21 +0100 Subject: [PATCH 2/2] BAEL-1022 - minor fixes --- grpc/pom.xml | 135 +++++++++--------- .../org/baeldung/grpc/server/GrpcServer.java | 5 +- 2 files changed, 70 insertions(+), 70 deletions(-) diff --git a/grpc/pom.xml b/grpc/pom.xml index 056db0c3fe..074075b5cc 100644 --- a/grpc/pom.xml +++ b/grpc/pom.xml @@ -1,73 +1,74 @@ - 4.0.0 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 - grpc - grpc-demo - 0.0.1-SNAPSHOT - jar + grpc + grpc-demo + 0.0.1-SNAPSHOT + jar - grpc-demo - http://maven.apache.org + grpc-demo + http://maven.apache.org - - UTF-8 - + + UTF-8 + 1.5.0 + - - - io.grpc - grpc-netty - 1.4.0 - - - io.grpc - grpc-protobuf - 1.4.0 - - - io.grpc - grpc-stub - 1.4.0 - - - junit - junit - 4.12 - test - - - - - - kr.motd.maven - os-maven-plugin - 1.5.0.Final - - - - - org.xolstice.maven.plugins - protobuf-maven-plugin - 0.5.0 - - - com.google.protobuf:protoc:3.3.0:exe:${os.detected.classifier} - - grpc-java - - io.grpc:protoc-gen-grpc-java:1.4.0:exe:${os.detected.classifier} - - - - - - compile - compile-custom - - - - - - + + + io.grpc + grpc-netty + ${io.grpc.version} + + + io.grpc + grpc-protobuf + ${io.grpc.version} + + + io.grpc + grpc-stub + ${io.grpc.version} + + + junit + junit + 4.12 + test + + + + + + kr.motd.maven + os-maven-plugin + 1.5.0.Final + + + + + org.xolstice.maven.plugins + protobuf-maven-plugin + 0.5.0 + + + com.google.protobuf:protoc:3.3.0:exe:${os.detected.classifier} + + grpc-java + + io.grpc:protoc-gen-grpc-java:1.4.0:exe:${os.detected.classifier} + + + + + + compile + compile-custom + + + + + + diff --git a/grpc/src/main/java/org/baeldung/grpc/server/GrpcServer.java b/grpc/src/main/java/org/baeldung/grpc/server/GrpcServer.java index 9f119fe45d..8a2b94e53b 100644 --- a/grpc/src/main/java/org/baeldung/grpc/server/GrpcServer.java +++ b/grpc/src/main/java/org/baeldung/grpc/server/GrpcServer.java @@ -5,11 +5,10 @@ import java.io.IOException; import io.grpc.Server; import io.grpc.ServerBuilder; -public class GrpcServer -{ +public class GrpcServer { public static void main(String[] args) throws IOException, InterruptedException { Server server = ServerBuilder.forPort(8080) - .addService(new HelloServiceImpl()).build(); + .addService(new HelloServiceImpl()).build(); System.out.println("Starting server..."); server.start();