![](/img/trans.png)
[英]org.glassfish.jersey.internal.RuntimeDelegateImpl NOT FOUND
[英]Quarkus native mode - org.glassfish.jersey.internal.RuntimeDelegateImpl Class not found
我在本机模式下使用 Quarkus 2.6.0,使用 Quarkus 进行 CXF 调用并以 JSON 格式返回这些结果,所以我使用的是 resteasy 和 resteasy-jackson。
<dependency>
<groupId>io.quarkiverse.cxf</groupId>
<artifactId>quarkus-cxf</artifactId>
<version>0.11.0</version>
</dependency>
该服务在本机模式下编译和执行,在正常情况下,该服务支持大约 150 万个请求。 但是其中一些(可能在 5 到 10 之间),服务引发了这个错误,我不知道为什么(最糟糕的是,我无法在本地环境中重现它)
我不确定在反射配置文件中发现 class 是否会解决问题(我会试一试)。
有任何想法吗?
java.lang.RuntimeException: java.lang.ClassNotFoundException: org.glassfish.jersey.internal.RuntimeDelegateImpl
at javax.ws.rs.ext.RuntimeDelegate.findDelegate(RuntimeDelegate.java:129)
at javax.ws.rs.ext.RuntimeDelegate.getInstance(RuntimeDelegate.java:96)
at org.jboss.resteasy.spi.ResteasyProviderFactory.getInstance(ResteasyProviderFactory.java:117)
at io.quarkus.resteasy.runtime.standalone.RequestDispatcher.service(RequestDispatcher.java:82)
at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler.dispatch(VertxRequestHandler.java:151)
at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler$1.run(VertxRequestHandler.java:91)
at io.quarkus.vertx.core.runtime.VertxCoreRecorder$13.runWith(VertxCoreRecorder.java:543)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.lang.Thread.run(Thread.java:829)
at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:600)
at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:192)
Caused by: java.lang.ClassNotFoundException: org.glassfish.jersey.internal.RuntimeDelegateImpl
at java.lang.Class.forName(DynamicHub.java:1347)
at java.lang.Class.forName(DynamicHub.java:1322)
at javax.ws.rs.ext.FactoryFinder.newInstance(FactoryFinder.java:93)
at javax.ws.rs.ext.FactoryFinder.find(FactoryFinder.java:210)
at javax.ws.rs.ext.RuntimeDelegate.findDelegate(RuntimeDelegate.java:111)
我不知道这是否重要,但我们有 Horizontal Pod Autoscaling,而且在白天,Pod 的数量会波动。
最后,我解决了这个问题。 问题是我们在terminationGracePeriodSeconds
变量中有少量时间(在我们的例子中是 5 秒)。
所以 K8S 杀死了 pod,最后一个请求失败了(我想有些 bean 不能被实例化,这就是它引发 RuntimeException 的原因)。
我们增加了那个周期,问题就解决了。
谢谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.