Как использовать стековый драйвер из стандартной среды GAE?

Выполнение этой строки:

logging = LoggingOptions.getDefaultInstance().getService()

В стандартном окружении Google App Engine результаты с:

com.google.api.server.spi.SystemService invokeServiceMethod: exception occurred while calling backend method (SystemService.java:398)
java.lang.NoClassDefFoundError: java.nio.channels.spi.SelectorProvider is a restricted class. Please see the Google App Engine developer's guide for more details.
    at java.nio.channels.spi.SelectorProvider.<clinit>(SelectorProvider.java)
    at io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:59)
    at io.grpc.netty.Utils$DefaultEventLoopGroupResource.create(Utils.java:187)
    at io.grpc.netty.Utils$DefaultEventLoopGroupResource.create(Utils.java:171)
    at io.grpc.internal.SharedResourceHolder.getInternal(SharedResourceHolder.java:121)
    at io.grpc.internal.SharedResourceHolder.get(SharedResourceHolder.java:91)
    at io.grpc.netty.NettyChannelBuilder$NettyTransportFactory.<init>(NettyChannelBuilder.java:311)
    at io.grpc.netty.NettyChannelBuilder$NettyTransportFactory.<init>(NettyChannelBuilder.java:280)
    at io.grpc.netty.NettyChannelBuilder.buildTransportFactory(NettyChannelBuilder.java:230)
    at io.grpc.internal.AbstractManagedChannelImplBuilder.build(AbstractManagedChannelImplBuilder.java:239)
    at com.google.api.gax.grpc.InstantiatingChannelProvider.createChannel(InstantiatingChannelProvider.java:123)
    at com.google.api.gax.grpc.InstantiatingChannelProvider.getChannel(InstantiatingChannelProvider.java:110)
    at com.google.api.gax.grpc.ProviderManager.getChannel(ProviderManager.java:105)
    at com.google.api.gax.grpc.ChannelAndExecutor.create(ChannelAndExecutor.java:67)
    at com.google.api.gax.grpc.ClientSettings.getChannelAndExecutor(ClientSettings.java:81)
    at com.google.cloud.logging.spi.v2.ConfigServiceV2Client.<init>(ConfigServiceV2Client.java:131)
    at com.google.cloud.logging.spi.v2.ConfigServiceV2Client.create(ConfigServiceV2Client.java:122)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.<init>(DefaultLoggingRpc.java:141)
    at com.google.cloud.logging.LoggingOptions$DefaultLoggingRpcFactory.create(LoggingOptions.java:68)
    at com.google.cloud.logging.LoggingOptions$DefaultLoggingRpcFactory.create(LoggingOptions.java:62)
    at com.google.cloud.ServiceOptions.getRpc(ServiceOptions.java:503)
    at com.google.cloud.logging.LoggingImpl.<init>(LoggingImpl.java:96)
    at com.google.cloud.logging.LoggingOptions$DefaultLoggingFactory.create(LoggingOptions.java:43)
    at com.google.cloud.logging.LoggingOptions$DefaultLoggingFactory.create(LoggingOptions.java:38)
    at com.google.cloud.ServiceOptions.getService(ServiceOptions.java:490)

Есть ли способ заставить его работать?

1 ответ

Вам нужно будет использовать v2 api google-api-services. Объяснение:


Google предоставляет два набора поддерживаемых библиотек для взаимодействия со своими облачными сервисами.

  1. Клиентские библиотеки Google API[1] (google-api-services): старые библиотеки, которые обеспечивают программное наложение поверх интерфейса REST каждого API
  2. Облачные библиотеки Google[2] (google-cloud): альфа / бета библиотеки, основанные на gRPC. Они, как утверждается, намного более производительны, но НЕ поддерживаются в Standard Appengine (эту небольшую заметку можно найти на их странице github. [3]) из-за ограничений сетевой безопасности на gRPC.

Каждый набор библиотек теперь имеет набор apis v1 и v2 для обоих наборов библиотек (v1 больше не поддерживается).

  1. google-api-services v2 документация [4]
  2. google-cloud v2 документация [5]

Источники:

Другие вопросы по тегам