我有一个经过充分测试的 Quarkus 微服务,我正在尝试以本机模式构建它。我正在使用最新的 Quarkus 3.2.2.Final。 JVM 模式下不存在问题。
当我启动本机微服务时,在启动过程中我收到警告:
"io.grpc.NameResolverRegistry","level":"WARNING","message":"No NameResolverProviders found via ServiceLoader, including for DNS. This is probably due to a broken build. If using ProGuard, check your configuration"
当然,此后,与 etcd 的通信失败并显示
cannot find a NameResolver for ip:///localhost:2379
,并且应用程序退出。
在 JVM DEBUG 模式下,我可以看到总共注册了 7 个解析器。
我尝试显式注册反射类,但没有帮助。
@RegisterForReflection(targets={
IPNameResolver.class,
HttpNameResolver.class,
HttpResolverProvider.class,
IPResolverProvider.class,
DnsSrvNameResolver.class,
NameResolverProvider.class,
LoadBalancerProvider.class,
DnsNameResolverProvider.class,
NameResolverRegistry.class
})
我怀疑这不是由于类未正确注册造成的,而是由动态类加载中一些与本机相关的特性引起的。
接下来要尝试什么有什么建议吗?我在构建过程中没有看到任何警告。
编辑:
Installed features: [cache, cdi, hibernate-validator, kafka-client, micrometer, mongodb-client, mongodb-panache, narayana-jta, quartz, reactive-routes, resteasy-reactive, resteasy-reactive-jackson, scheduler, security, security-properties-file, smallrye-context-propagation, smallrye-health, smallrye-jwt, smallrye-reactive-messaging, smallrye-reactive-messaging-kafka, vertx]
我还在本机构建器调用行中看到:
-H:-UseServiceLoaderFeature
。
编辑 2,堆栈跟踪:
2023-07-27 15:50:24,930 ERROR [io.qua.run.Application] (main) Failed to start application (with profile [prod]): java.lang.RuntimeException: Failed to start quarkus
at io.quarkus.runner.ApplicationImpl.doStart(Unknown Source)
at io.quarkus.runtime.Application.start(Application.java:101)
at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:111)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:71)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:44)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:124)
at com.y.z.responsedispatcher.ResponseDispatcher.main(ResponseDispatcher.java:10)
Caused by: java.lang.IllegalArgumentException: cannot find a NameResolver for ip:///localhost:2379
at io.grpc.internal.ManagedChannelImpl.getNameResolver(ManagedChannelImpl.java:742)
at io.grpc.internal.ManagedChannelImpl.getNameResolver(ManagedChannelImpl.java:751)
at io.grpc.internal.ManagedChannelImpl.<init>(ManagedChannelImpl.java:631)
at io.grpc.internal.ManagedChannelImplBuilder.build(ManagedChannelImplBuilder.java:631)
at io.grpc.internal.AbstractManagedChannelImplBuilder.build(AbstractManagedChannelImplBuilder.java:297)
at io.vertx.grpc.VertxChannelBuilder.build(VertxChannelBuilder.java:309)
at io.etcd.jetcd.impl.ClientConnectionManager.getChannel(ClientConnectionManager.java:70)
at io.etcd.jetcd.impl.ClientConnectionManager.newStub(ClientConnectionManager.java:102)
at io.etcd.jetcd.impl.WatchImpl.<init>(WatchImpl.java:68)
at io.etcd.jetcd.impl.ClientImpl.lambda$new$5(ClientImpl.java:53)
at io.etcd.jetcd.support.MemorizingClientSupplier.get(MemorizingClientSupplier.java:37)
at io.etcd.jetcd.impl.ClientImpl.getWatchClient(ClientImpl.java:85)
at y.z.etcd.commons.core.EtcdClient.watchValues(EtcdClient.java:118)
at y.z.etcd.commons.core.EtcdClient.watchValues(EtcdClient.java:112)
at y.z.etcd.commons.core.EtcdClient_ClientProxy.watchValues(Unknown Source)
at y.z.etcd.commons.z.services.zEtcdCache.init(zEtcdCache.java:41)
at y.z.etcd.commons.z.services.zEtcdCache_Bean.doCreate(Unknown Source)
at y.z.etcd.commons.z.services.zEtcdCache_Bean.create(Unknown Source)
at y.z.etcd.commons.z.services.zEtcdCache_Bean.create(Unknown Source)
at io.quarkus.arc.impl.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:113)
at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:37)
at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:34)
at io.quarkus.arc.impl.LazyValue.get(LazyValue.java:26)
at io.quarkus.arc.impl.ComputingCache.computeIfAbsent(ComputingCache.java:69)
at io.quarkus.arc.impl.AbstractSharedContext.get(AbstractSharedContext.java:34)
at io.quarkus.arc.impl.ClientProxies.getApplicationScopedDelegate(ClientProxies.java:21)
at y.z.etcd.commons.z.services.zEtcdCache_ClientProxy.arc$delegate(Unknown Source)
at y.z.etcd.commons.z.services.zEtcdCache_ClientProxy.arc_contextualInstance(Unknown Source)
at y.z.etcd.commons.z.services.zEtcdCache_Observer_Synthetic_7e505f92dfea7e2f74425f463632933f0b546710.notify(Unknown Source)
at io.quarkus.arc.impl.EventImpl$Notifier.notifyObservers(EventImpl.java:346)
at io.quarkus.arc.impl.EventImpl$Notifier.notify(EventImpl.java:328)
at io.quarkus.arc.impl.EventImpl.fire(EventImpl.java:82)
at io.quarkus.arc.runtime.ArcRecorder.fireLifecycleEvent(ArcRecorder.java:155)
at io.quarkus.arc.runtime.ArcRecorder.handleLifecycleEvents(ArcRecorder.java:106)
at io.quarkus.deployment.steps.LifecycleEventsBuildStep$startupEvent1144526294.deploy_0(Unknown Source)
at io.quarkus.deployment.steps.LifecycleEventsBuildStep$startupEvent1144526294.deploy(Unknown Source)
... 7 more