diff --git a/pom.xml b/pom.xml index 0e01855b2bec1d9f83ed7e16c0d85d1ca4433c9f..2f4b8191e3b1d6addf9236d8a1d1c47349441172 100644 --- a/pom.xml +++ b/pom.xml @@ -33,6 +33,7 @@ <project.build.testSourceDirectory>src/test/java</project.build.testSourceDirectory> <protobuf.version>3.14.0</protobuf.version> <grpc.version>1.35.0</grpc.version> + <netty-tcnative.version>2.0.34.Final</netty-tcnative.version> </properties> <repositories> <repository> @@ -184,6 +185,13 @@ <artifactId>grpc-netty</artifactId> <version>${grpc.version}</version> </dependency> + <dependency> + <groupId>io.netty</groupId> + <artifactId>netty-tcnative</artifactId> + <version>${netty-tcnative.version}</version> + <classifier>${os.detected.classifier}</classifier> + <scope>runtime</scope> + </dependency> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-protobuf</artifactId> diff --git a/src/main/java/org/caosdb/server/CaosDBServer.java b/src/main/java/org/caosdb/server/CaosDBServer.java index e0290050257ea2885f4191e3327f753e574b3fb4..a4b8d2982d12383e1f4df9c86077cc751c4fdcfb 100644 --- a/src/main/java/org/caosdb/server/CaosDBServer.java +++ b/src/main/java/org/caosdb/server/CaosDBServer.java @@ -354,7 +354,7 @@ public class CaosDBServer extends Application { runHTTPSServer( port_https, port_http, port_redirect_https, initialConnections, maxTotalConnections); } - GRPCServer.startServer(8080); + GRPCServer.startServer(8080, 8443, 8070); } private static void initDatatypes(final Access access) throws Exception { diff --git a/src/main/java/org/caosdb/server/grpc/GRPCServer.java b/src/main/java/org/caosdb/server/grpc/GRPCServer.java index ba9201993b5415cd69c08f91522e1c7372ecc46a..f145e35badfa5d8ff34ba81cde879a73bd0c2fd8 100644 --- a/src/main/java/org/caosdb/server/grpc/GRPCServer.java +++ b/src/main/java/org/caosdb/server/grpc/GRPCServer.java @@ -2,12 +2,33 @@ package org.caosdb.server.grpc; import io.grpc.Server; import io.grpc.ServerBuilder; +import io.grpcweb.GrpcPortNumRelay; +import io.grpcweb.JettyWebserverForGrpcwebTraffic; +import java.io.File; import java.io.IOException; public class GRPCServer { - public static void startServer(int port) throws IOException, InterruptedException { - Server server = ServerBuilder.forPort(port).addService(new EntityTransactionImpl()).build(); - server.start(); + public static void startServer(int port_http, int port_https, int port_web) + throws IOException, InterruptedException { + Server https_server = + ServerBuilder.forPort(port_https) + .useTransportSecurity( + new File("/home/tf/ssl/server-certificates/localhost-belial/localhost-belial.pem"), + new File( + "/home/tf/ssl/server-certificates/localhost-belial/localhost-belial.key.pk8")) + .addService(new EntityTransactionImpl()) + .build(); + https_server.start(); + + Server http_server = + ServerBuilder.forPort(port_http).addService(new EntityTransactionImpl()).build(); + http_server.start(); + + JettyWebserverForGrpcwebTraffic web = new JettyWebserverForGrpcwebTraffic(8070); + web.starts(); + + // grpc-web proxy needs to know the grpc-port# so it could connect to the grpc service. + GrpcPortNumRelay.setGrpcPortNum(port_http); } }