From 8b286ec15363fc8cb19a3716087f88794449bf54 Mon Sep 17 00:00:00 2001 From: amberpan Date: Sun, 21 Jun 2020 22:27:48 -0400 Subject: [PATCH] refactored code into modules --- .gitignore | 3 +- build.gradle | 4 +- client/build.gradle | 48 ++++++++++++++++++ .../java/com/grpc}/client/GRPCClient.java | 17 +++---- proto/build.gradle | 23 +++++++++ .../src}/main/proto/HelloService.proto | 0 server/build.gradle | 49 +++++++++++++++++++ .../main/java/com/grpc/server/GRPCServer.java | 34 +++++++++++++ .../grpc}/server/api/HelloServiceImpl.java | 2 +- settings.gradle | 3 ++ .../com/grpc/sample/server/GRPCServer.java | 37 -------------- src/main/resources/certs/cert.pem | 17 ------- src/main/resources/certs/key.pem | 28 ----------- 13 files changed, 170 insertions(+), 95 deletions(-) create mode 100644 client/build.gradle rename {src/main/java/com/grpc/sample => client/src/main/java/com/grpc}/client/GRPCClient.java (70%) create mode 100644 proto/build.gradle rename {src => proto/src}/main/proto/HelloService.proto (100%) create mode 100644 server/build.gradle create mode 100644 server/src/main/java/com/grpc/server/GRPCServer.java rename {src/main/java/com/grpc/sample => server/src/main/java/com/grpc}/server/api/HelloServiceImpl.java (95%) delete mode 100644 src/main/java/com/grpc/sample/server/GRPCServer.java delete mode 100644 src/main/resources/certs/cert.pem delete mode 100644 src/main/resources/certs/key.pem diff --git a/.gitignore b/.gitignore index 9cf8619..2575063 100644 --- a/.gitignore +++ b/.gitignore @@ -23,4 +23,5 @@ hs_err_pid* .gradle gradle/ -.idea \ No newline at end of file +.idea +build/ \ No newline at end of file diff --git a/build.gradle b/build.gradle index 61eaa0b..8491f18 100644 --- a/build.gradle +++ b/build.gradle @@ -41,7 +41,7 @@ dependencies { testCompile group: 'junit', name: 'junit', version: '4.12' } -protobuf { +/*protobuf { protoc { artifact = 'com.google.protobuf:protoc:3.4.0' } @@ -55,7 +55,7 @@ protobuf { grpc {} } } -} +}*/ //// Inform IDEs like IntelliJ IDEA, Eclipse or NetBeans about the generated code. sourceSets { diff --git a/client/build.gradle b/client/build.gradle new file mode 100644 index 0000000..c5dc06c --- /dev/null +++ b/client/build.gradle @@ -0,0 +1,48 @@ +plugins { + id 'java' + id "com.google.protobuf" +} + +group 'org.example' +version '1.0-SNAPSHOT' + +repositories { + mavenCentral() +} + +dependencies { + protobuf project(':proto') + compile "com.google.api.grpc:proto-google-common-protos:0.1.9" + compile "io.grpc:grpc-netty:${grpcVersion}" + compile "io.grpc:grpc-protobuf:${grpcVersion}" + compile "io.grpc:grpc-stub:${grpcVersion}" + compile "io.netty:netty-tcnative-boringssl-static:${nettyTcNativeVersion}" + compile "org.bouncycastle:bcmail-jdk15:1.46" + testCompile group: 'junit', name: 'junit', version: '4.12' +} + +protobuf { + protoc { + artifact = 'com.google.protobuf:protoc:3.4.0' + } + plugins { + grpc { + artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}" + } + } + generateProtoTasks { + all()*.plugins { + grpc {} + } + } +} + +//// Inform IDEs like IntelliJ IDEA, Eclipse or NetBeans about the generated code. +sourceSets { + main { + java { + srcDirs 'build/generated/source/proto/main/grpc' + srcDirs 'build/generated/source/proto/main/java' + } + } +} \ No newline at end of file diff --git a/src/main/java/com/grpc/sample/client/GRPCClient.java b/client/src/main/java/com/grpc/client/GRPCClient.java similarity index 70% rename from src/main/java/com/grpc/sample/client/GRPCClient.java rename to client/src/main/java/com/grpc/client/GRPCClient.java index be5dfd6..a94c668 100644 --- a/src/main/java/com/grpc/sample/client/GRPCClient.java +++ b/client/src/main/java/com/grpc/client/GRPCClient.java @@ -1,27 +1,26 @@ -package com.grpc.sample.client; +package com.grpc.client; import com.google.common.base.Stopwatch; import com.grpc.sample.HelloRequest; import com.grpc.sample.HelloResponse; import com.grpc.sample.HelloServiceGrpc; -import com.grpc.sample.server.GRPCServer; import io.grpc.ManagedChannel; import io.grpc.ManagedChannelBuilder; -import io.grpc.netty.GrpcSslContexts; -import io.grpc.netty.NettyChannelBuilder; import javax.net.ssl.SSLException; -import java.io.File; import java.util.concurrent.TimeUnit; public class GRPCClient { public static void main(String[] args) throws SSLException { Stopwatch watch = Stopwatch.createStarted(); - File cert = new File(GRPCServer.class.getClassLoader().getResource("certs/cert.pem").getFile()); +// File cert = new File(GRPCClient.class.getClassLoader().getResource("certs/cert.pem").getFile()); +// ManagedChannel channel = NettyChannelBuilder.forAddress("localhost", 9002) +// .sslContext(GrpcSslContexts.forClient() +// .trustManager(cert).build()) +// .build(); - ManagedChannel channel = NettyChannelBuilder.forAddress("localhost", 9002) - .sslContext(GrpcSslContexts.forClient() - .trustManager(cert).build()) + ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 9002) + .usePlaintext(true) .build(); HelloServiceGrpc.HelloServiceBlockingStub stub = HelloServiceGrpc.newBlockingStub(channel); diff --git a/proto/build.gradle b/proto/build.gradle new file mode 100644 index 0000000..0f47d58 --- /dev/null +++ b/proto/build.gradle @@ -0,0 +1,23 @@ +plugins { + id 'java' +} + +group 'org.example' +version '1.0-SNAPSHOT' + +repositories { + mavenCentral() +} + +dependencies { + + testCompile group: 'junit', name: 'junit', version: '4.12' +} + +sourceSets { + main { + resources { + srcDirs "src/main/proto" + } + } +} \ No newline at end of file diff --git a/src/main/proto/HelloService.proto b/proto/src/main/proto/HelloService.proto similarity index 100% rename from src/main/proto/HelloService.proto rename to proto/src/main/proto/HelloService.proto diff --git a/server/build.gradle b/server/build.gradle new file mode 100644 index 0000000..7028a57 --- /dev/null +++ b/server/build.gradle @@ -0,0 +1,49 @@ +plugins { + id 'java' + id "com.google.protobuf" +} + +group 'org.example' +version '1.0-SNAPSHOT' + +repositories { + mavenCentral() +} + +dependencies { + protobuf project(':proto') + compile "com.google.api.grpc:proto-google-common-protos:0.1.9" + compile "io.grpc:grpc-netty:${grpcVersion}" + compile "io.grpc:grpc-protobuf:${grpcVersion}" + compile "io.grpc:grpc-stub:${grpcVersion}" + compile "io.netty:netty-tcnative-boringssl-static:${nettyTcNativeVersion}" + compile "org.bouncycastle:bcmail-jdk15:1.46" + + testCompile group: 'junit', name: 'junit', version: '4.12' +} + +protobuf { + protoc { + artifact = 'com.google.protobuf:protoc:3.4.0' + } + plugins { + grpc { + artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}" + } + } + generateProtoTasks { + all()*.plugins { + grpc {} + } + } +} + +//// Inform IDEs like IntelliJ IDEA, Eclipse or NetBeans about the generated code. +sourceSets { + main { + java { + srcDirs 'build/generated/source/proto/main/grpc' + srcDirs 'build/generated/source/proto/main/java' + } + } +} \ No newline at end of file diff --git a/server/src/main/java/com/grpc/server/GRPCServer.java b/server/src/main/java/com/grpc/server/GRPCServer.java new file mode 100644 index 0000000..292f835 --- /dev/null +++ b/server/src/main/java/com/grpc/server/GRPCServer.java @@ -0,0 +1,34 @@ +package com.grpc.server; + +import com.grpc.server.api.HelloServiceImpl; +import io.grpc.Server; +import io.grpc.ServerBuilder; + +import java.io.File; +import java.io.IOException; + +public class GRPCServer { + + public static void main(String[] args) throws IOException, InterruptedException { + +// File cert = new File(GRPCServer.class.getClassLoader().getResource("certs/cert.pem").getFile()); +// File key = new File(GRPCServer.class.getClassLoader().getResource("certs/key.pem").getFile()); + +// System.out.println("Certificate: "+cert.getAbsolutePath()); +// System.out.println("Key: "+key.getAbsolutePath()); + Server server = ServerBuilder.forPort(9002) +// .useTransportSecurity(cert,key) + .addService(new HelloServiceImpl()).build(); + System.out.println("Starting server..."+server); + server.start(); + System.out.println("Server started..."); + server.awaitTermination(); + + + + + + + + } +} diff --git a/src/main/java/com/grpc/sample/server/api/HelloServiceImpl.java b/server/src/main/java/com/grpc/server/api/HelloServiceImpl.java similarity index 95% rename from src/main/java/com/grpc/sample/server/api/HelloServiceImpl.java rename to server/src/main/java/com/grpc/server/api/HelloServiceImpl.java index 6f530c1..faa89bb 100644 --- a/src/main/java/com/grpc/sample/server/api/HelloServiceImpl.java +++ b/server/src/main/java/com/grpc/server/api/HelloServiceImpl.java @@ -1,4 +1,4 @@ -package com.grpc.sample.server.api; +package com.grpc.server.api; import com.grpc.sample.HelloRequest; import com.grpc.sample.HelloResponse; diff --git a/settings.gradle b/settings.gradle index 6551037..26e95d5 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,2 +1,5 @@ rootProject.name = 'GRPC' +include 'proto' +include 'client' +include 'server' diff --git a/src/main/java/com/grpc/sample/server/GRPCServer.java b/src/main/java/com/grpc/sample/server/GRPCServer.java deleted file mode 100644 index 45f985d..0000000 --- a/src/main/java/com/grpc/sample/server/GRPCServer.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.grpc.sample.server; - -import com.grpc.sample.server.api.HelloServiceImpl; -import io.grpc.Server; -import io.grpc.ServerBuilder; -import io.grpc.internal.IoUtils; -import org.apache.velocity.texen.util.FileUtil; - -import java.io.File; -import java.io.FileReader; -import java.io.IOException; - -public class GRPCServer { - - public static void main(String[] args) throws IOException, InterruptedException { - - File cert = new File(GRPCServer.class.getClassLoader().getResource("certs/cert.pem").getFile()); - File key = new File(GRPCServer.class.getClassLoader().getResource("certs/key.pem").getFile()); - - System.out.println("Certificate: "+cert.getAbsolutePath()); - System.out.println("Key: "+key.getAbsolutePath()); - Server server = ServerBuilder.forPort(9002) - .useTransportSecurity(cert,key) - .addService(new HelloServiceImpl()).build(); - System.out.println("Starting server..."+server); - server.start(); - System.out.println("Server started..."); - server.awaitTermination(); - - - - - - - - } -} diff --git a/src/main/resources/certs/cert.pem b/src/main/resources/certs/cert.pem deleted file mode 100644 index dc8ceb0..0000000 --- a/src/main/resources/certs/cert.pem +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICpDCCAYwCCQC9jl/fKyHlXjANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQDDAls -b2NhbGhvc3QwHhcNMjAwNjIxMDIzNDUxWhcNMjEwNjIxMDIzNDUxWjAUMRIwEAYD -VQQDDAlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDX -f/3ZSk+HBqGgAn9sXTM3JQqAosT+H1e+DxvyWJFfjvieNOWjfGMkBUzj16+PoEIs -C00nW/gZzOQGQbF2QIaOlu7V6Vrg3kiKUmYgv4DQm10uDvCnl9nv9o+fFLwjJRL6 -9Zrbw8D4b1MUMrTiz4PRgVX4b9iWqf6u9l1p+EscXCQ8nx6483Xkk9viPuSWh1N5 -shZBR+Zr1bcU1Z3Mdp/GN9bqgJfafX18G08ktwwXTyRFlwCdpxin1tVeBq7Ky7un -Q+xB88yKI9o7WukbfEj9qxNG9las6HAcVig3uRZRW6dvRu7gEpk/rrZUdTeBwJKx -H87FmfiGLkbiLQTFarllAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAK0McDGsdVam -T5rnD7LBmOUs0IagpG1YCVCyCUdn9MGCPZqyY3LGTk6kAbP03GxFCsDQ/9kGRVru -PpMol69kD4nUvg/QnOM6SIaFG4h/+IPAkDbSxBNrLJMiZcorw6TrLZ/NyKBqhEF9 -j9JBZQlHV9rEC7scDkENivqiPsvlyQdBEtANrlVJBrrp0K343xzcKeq5Qu1SKVX4 -tYNsFHMq4X/t61XdHjhlHuKfQKHk+mcQRpgq7TuLrmMXeXEYl4USBOZ6/lIc1AHm -ajcfl9R9PPoYa59kKhRGGwy18Nw5xQdXhKNzMzBRhzhqZhQq8j56dN3Ytofhp7Dw -J+CyKCEbPM4= ------END CERTIFICATE----- diff --git a/src/main/resources/certs/key.pem b/src/main/resources/certs/key.pem deleted file mode 100644 index d63488c..0000000 --- a/src/main/resources/certs/key.pem +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDXf/3ZSk+HBqGg -An9sXTM3JQqAosT+H1e+DxvyWJFfjvieNOWjfGMkBUzj16+PoEIsC00nW/gZzOQG -QbF2QIaOlu7V6Vrg3kiKUmYgv4DQm10uDvCnl9nv9o+fFLwjJRL69Zrbw8D4b1MU -MrTiz4PRgVX4b9iWqf6u9l1p+EscXCQ8nx6483Xkk9viPuSWh1N5shZBR+Zr1bcU -1Z3Mdp/GN9bqgJfafX18G08ktwwXTyRFlwCdpxin1tVeBq7Ky7unQ+xB88yKI9o7 -WukbfEj9qxNG9las6HAcVig3uRZRW6dvRu7gEpk/rrZUdTeBwJKxH87FmfiGLkbi -LQTFarllAgMBAAECggEALZ057jR8gOg2bdgZgKZ5oMKGZpQNfnzD5cbs828r1j49 -Ab/Qm7pIgeddTxzoXE5fs1LxEdO1wEBOQ8TD+3PNB4GLLFwokFB8qkqms2fVrFI2 -dvlSlybdSp216MZKzGWcjuJN1RaqUeu+ehgBkcC69i2aNOv3vGxfLEmZnESiIW47 -y02AvSN2vSOokYxt1uVgZBEnmUtkzWLaadDYXrdjs6hWw/ntBUXd3sCySuyi1XIt -BnvX2ODvYE9UibYmtlk8dHvVeZAAXLa30x1pRCDbHS8FCyUtg871+OuCFw6KnSB7 -EQ8m8c9igmBDYZJ6e1TWZBzTUFDwrVAB5EXLtWCwAQKBgQD8jyK7pyOd/B5E2hfd -7ZaB8nG6g61hjeL7D6nF+nsnPQxogsdNkAer8fy34ZUCd/DdyWlBfIvC8V0Xn2eE -qZPk14UnUOGuWXzH8tPm6UY3TujCc5+WyNP9cKM4t1ntYiHLn0lB8GejNVMapbVN -VKxDfj68Vfz7zDNmiJDik/sYJQKBgQDab5pITH5G6zhdEAhUQT2/7tzul8DwepiI -aMPeB25JYkRWQs1ZqOTITQZb/lrFYGIReMRdmk0VUht1068Z9FZ+3OEh2jvc/uqa -z/XNUG/0yEK3sANSxSQ2SjtxX5XBFDm1GoGDlJuG/G3PBqHes3CyijhVz39xGHQ/ -WSw552O4QQKBgDZ5yUwgqRYSo5TGVg+Qh75PxSgt7t/z8tmkb0I83QOBr4N7cfHQ -91anQ5OGHNYDePjd0M5HRv4tgZ7uyy1aRoQ92IK6d3Nb6gZW4k4UUwjrBFmtBudH -OjKYcRxyr/r8B74cBXkrma8ieWJuC8U6Vk3YlT+abI8DZLLhEh9NPAPhAoGBAKdB -DwxO7d3Vm+m+LfJ9pg+BkU9riUNZS9QfC+LFI9Ay2wqFygDeDpfESptD7jL1cwHX -y9u0G1O48+fLd2bTLSukawnltTKpSe/STm6wKZlvgY5uyoylAO5E9rD/tIYLu4gN -TJ/4uQGp5VbAyE7ibOd4aFxkLjvlspUS7YdEwplBAoGBAI9jIgxIwWuBPk4xgcAT -NpQOZgIJ+qHCxcNGVof5cWL/NhXPZiB8j84gGYMIc2RP4e0HPdFUZVFIFIObgXNY -ti226KGTNW9NweLAeSO/Cpc1bxdzGoB8e3KLZZILcJFHVr6YoMqml6bRY/cekdbM -Zsjm2lL2BBUYIfB440XZeU3W ------END PRIVATE KEY-----