首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在OSGi包中使用时,gRPC Java找不到NameResolver

在OSGi包中使用时,gRPC Java找不到NameResolver
EN

Stack Overflow用户
提问于 2020-07-13 20:08:00
回答 1查看 1.4K关注 0票数 0

我正在尝试在OSGi包中使用JAVA gRPC。我使用的是maven和org.apache.servicsemx.bundles.grpc-1.30.2_1,它是从1.30.2_1的发布标签本地构建的。

OSGi包启动得很好,没有任何问题,但是在运行时,当创建了一个ManageChannel时,我得到一个java.lang.IllegalArgumentException: cannot find a NameResolver for localhost:4435异常。

堆栈跟踪的相关部分

代码语言:javascript
复制
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:?]

当我在运行时调试gRPC代码时,我可以看到没有添加NameResolvers。我认为这可能是一个类加载问题。

这是Apache Felix插件中配置的一部分,

代码语言:javascript
复制
<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)

代码语言:javascript
复制
ManagedChannel channel = NettyChannelBuilder.forAddress("localhost", 4435)
                    .usePlaintext()
                    .build();

我只需要让OSGi捆绑包中的gRPC客户端工作。这方面的任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-15 18:56:07

META-INF/services中添加相关的gRPC提供程序是可行的。

通过引用它,它也在OSGi包https://github.com/wso2/micro-integrator/tree/v1.2.0-m4/components/mediation/inbound-endpoints/org.wso2.micro.integrator.inbound.endpoint中使用了gRPC

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62875526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档