gRPC Java 在 OSGi 包中使用时找不到 NameResolver
gRPC Java cannot find a NameResolver when using in OSGi bundle
我正在尝试在 OSGi 包中使用 JAVA gRPC。我正在使用 Maven 并使用 org.apache.servicemix.bundles.grpc-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:?]
当我在运行时调试 gRPC 代码时,我可以看到添加了零个 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();
我只需要让 gRPC 客户端在 OSGi 包中工作。
非常感谢对此的任何帮助。
在 META-INF/services
中添加相关的 gRPC 提供程序。
通过引用这个找到了它,它也在 OSGi 包中使用了 gRPC
https://github.com/wso2/micro-integrator/tree/v1.2.0-m4/components/mediation/inbound-endpoints/org.wso2.micro.integrator.inbound.endpoint
我正在尝试在 OSGi 包中使用 JAVA gRPC。我正在使用 Maven 并使用 org.apache.servicemix.bundles.grpc-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:?]
当我在运行时调试 gRPC 代码时,我可以看到添加了零个 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();
我只需要让 gRPC 客户端在 OSGi 包中工作。 非常感谢对此的任何帮助。
在 META-INF/services
中添加相关的 gRPC 提供程序。
通过引用这个找到了它,它也在 OSGi 包中使用了 gRPC https://github.com/wso2/micro-integrator/tree/v1.2.0-m4/components/mediation/inbound-endpoints/org.wso2.micro.integrator.inbound.endpoint