gRP C Java не может найти NameResolver при использовании в пакете OSGi - PullRequest
0 голосов
/ 13 июля 2020

Я пытаюсь использовать JAVA gRP C в пакете OSGi. Я использую maven и использую org. apache .servicemix.bundles.grp c -1.30.2_1, который локально создается из тега выпуска для 1.30.2_1 .

Пакет OSGi запускается нормально без каких-либо проблем, но во время выполнения, когда создается ManageChannel, я получаю исключение java.lang.IllegalArgumentException: cannot find a NameResolver for localhost:4435.

Соответствующая часть трассировки стека

java.lang.IllegalArgumentException: cannot find a NameResolver for localhost:4435
    at io.grpc.internal.ManagedChannelImpl.getNameResolver(ManagedChannelImpl.java:724) ~[org.apache.servicemix.bundles.grpc-1.30.2_1.jar:?]
    at io.grpc.internal.ManagedChannelImpl.<init>(ManagedChannelImpl.java:606) ~[org.apache.servicemix.bundles.grpc-1.30.2_1.jar:?]
    at io.grpc.internal.AbstractManagedChannelImplBuilder.build(AbstractManagedChannelImplBuilder.java:518) ~[org.apache.servicemix.bundles.grpc-1.30.2_1.jar:?]

Когда я отлаживаю gRP C код во время выполнения Я вижу, что добавлено ноль NameResolvers. Я думаю, что это может быть проблема с загрузкой классов.

Это часть конфигурации из Apache плагина Felix,

<Import-Package>
    ...,
    org.apache.servicemix.bundles.grpc.*; version="1.30.2_1",
    io.grpc*;
</Import-Package>
<Embed-Dependency>org.apache.servicemix.bundles.grpc;scope=compile</Embed-Dependency>

Код построения канала (здесь используется io.grpc.netty.shaded.io.grpc.netty.NettyChannelBuilder)

ManagedChannel channel = NettyChannelBuilder.forAddress("localhost", 4435)
                    .usePlaintext()
                    .build();

Мне нужно только, чтобы клиент gRP C работал в пакете OSGi. Любая помощь по этому поводу приветствуется.

1 Ответ

0 голосов
/ 15 июля 2020

Добавление соответствующих поставщиков gRP C в META-INF/services сработало.

Понял, что это выяснилось, сославшись на это, которое также использует gRP C внутри пакета OSGi https://github.com/wso2/micro-integrator/tree/v1.2.0-m4/components/mediation/inbound-endpoints/org.wso2.micro.integrator.inbound.endpoint

...