Невозможно создать соединение grpc в 32-битной Windows-машине - PullRequest
0 голосов
/ 18 июня 2019

Я пытаюсь получить доступ к списку подписчиков в моем проекте GCP, используя мой код Java и несколько библиотек, предоставленных GCP. Этот код прекрасно работает в моей 64-битной среде Windows, но не работает в 32-битной среде Windows.

Я видел в нескольких документах, что netty не поддерживается на 32-битных машинах, и мы можем при необходимости создавать наши собственные двоичные файлы.

https://netty.io/wiki/forked-tomcat-native.html#how-to-build

CredentialsProvider credentialsProvider = FixedCredentialsProvider.create( ServiceAccountCredentials.fromStream(new FileInputStream(JSONPath))); try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create(SubscriptionAdminSettings.newBuilder().setCredentialsProvider(credentialsProvider).build())) { ListSubscriptionsRequest listSubscriptionsRequest = ListSubscriptionsRequest.newBuilder() .setProject(ProjectName.of(ProjectId).toString()) .build(); SubscriptionAdminClient.ListSubscriptionsPagedResponse response = subscriptionAdminClient.listSubscriptions(listSubscriptionsRequest); logger.log(Level.SEVERE,"response List: "+response.toString()); Iterable<Subscription> subscriptions = response.iterateAll(); for (Subscription subscription : subscriptions) { if(subscription.getName().equals(SubscriptionId)){ return true; } }

[20: 02: 30: 384] | [06-17-2019] | [io.grpc.netty.shaded.io.grpc.netty.GrpcSslContexts] | [INFO] | [36]: netty-tcnative недоступен (это может быть нормальным) | java.lang.IllegalArgumentException: не удалось загрузить любую из указанных библиотек: [netty_tcnative_windows_x86_32, netty_tcnative_x86_32, netty_tcnative] в io.grpc.netty.shaded.io.netty.util.internal.NativeLibraryLoader.jl. на io.grpc.netty.shaded.io.netty.handler.ssl.OpenSsl.loadTcNative (OpenSsl.java:526) на io.grpc.netty.shaded.io.netty.handler.ssl.OpenSsl. (OpenSsl.java:93) на io.grpc.netty.shaded.io.grpc.netty.GrpcSslContexts.defaultSslProvider (GrpcSslContexts.java:244) на io.grpc.netty.shaded.io.grpc.netty.GrpcSslContexts.configure (GrpcSslContexts.java:171) на io.grpc.netty.shaded.io.grpc.netty.GrpcSslContexts.forClient (GrpcSslContexts.java:120) в io.grpc.netty.shaded.io.grpc.netty.NettyChannelBuilder.buildTransportFactory (NettyChannelBuilder.java:385) в io.grpc.internal.AbstractManagedChannelImplBuilder.build (AbstractManagedChannelImplBuilder.java:435) на com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.createSingleChannel (InstantiatingGrpcChannelProvider.java:254) на com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.createChannel (InstantiatingGrpcChannelProvider.java:165) на com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.getTransportChannel (InstantiatingGrpcChannelProvider.java:157) на com.google.api.gax.rpc.ClientContext.create (ClientContext.java:157) на com.google.cloud.pubsub.v1.stub.GrpcSubscriberStub.create (GrpcSubscriberStub.java:260) на com.google.cloud.pubsub.v1.stub.SubscriberStubSettings.createStub (SubscriberStubSettings.java:241) на com.google.cloud.pubsub.v1.SubscriptionAdminClient. (SubscriptionAdminClient.java:177) на com.google.cloud.pubsub.v1.SubscriptionAdminClient.create (SubscriptionAdminClient.java:158)

Ответы [ 2 ]

0 голосов
/ 24 июня 2019

grpc-java SECURITY.md описывает ваши параметры:

  1. Используйте Java 9+, которые поддерживают ALPN без необходимости tcnative
  2. Для 32-битныхВ частности, Windows, вы можете Conscrypt

Документация также описывает, как использовать Conscrypt.А именно, чтобы добавить зависимость от conscrypt-openjdk-uber и зарегистрировать ее в качестве поставщика безопасности по умолчанию:

import org.conscrypt.Conscrypt;
import java.security.Security;
...

// Somewhere in main()
Security.insertProviderAt(Conscrypt.newProvider(), 1);
0 голосов
/ 21 июня 2019

Вы ответили на свой вопрос ... netty-tcnative- * не поддерживает 32-битные платформы, поэтому вам нужно будет скомпилировать его самостоятельно и включить в свой путь к классам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...