gpt4 book ai didi

java - 循环依赖阻止在 Tomcat 上进行 war 部署

转载 作者:行者123 更新时间:2023-11-28 22:47:06 27 4
gpt4 key购买 nike

我有一个休息服务 war (将调用 A)使用 Jersey 部署在本地以及多个测试 Tomcat 服务器上,但无法在 3 个 ~prod 服务器中的 1 个上加载。我相信这是处理注释时的循环依赖。服务器 B 上的另一场 war 无处不在。在服务器 A 上发生故障,如果 B 被删除,A 将工作。这是通过随机试验和错误发现的。服务器设置是相同的,只是 war 文件看起来以不同的顺序出现。我一直在研究强制以特定顺序处理 jar 文件中的注释的方法,以消除任何伪随机性。我正要发布一个关于 .甚至没有意识到这是否是订购 jar 的正确方法,我有多个切线。所以我想我首先可能会就我前进的方向征求意见。

18-Apr-2019 07:43:42.886 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/opt/tomcat/webapps/[A].war]
18-Apr-2019 07:43:43.337 SEVERE [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/[A].war]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:754)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:730)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:985)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1857)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalStateException: Unable to complete the scan for annotations for web application [/[A]] due to a StackOverflowError. Possible root causes include a too low setting for -Xss and illegal cyclic inheritance dependencies. The class hierarchy being processed was [oracle.net.aso.d->oracle.net.aso.e->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->
.
.
.
java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object]
at org.apache.catalina.startup.ContextConfig.checkHandlesTypes(ContextConfig.java:2100)
at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2044)
at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1990)
at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1960)
at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1913)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1153)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:765)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:299)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:94)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5154)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 10 more

最佳答案

oracle.net.aso.d->oracle.net.aso.e->java.lang.Object->java.lang.Object->java.lang.Object
  1. 查看消息,它扫描单个 jar 中的类并进入 java.lang.Object 循环。这很奇怪。 (如果它可以用最新版本的 Tomcat 重现,例如只有那个 jar 文件的空 Web 应用程序,请提出问题)。

  2. 从注释扫描中跳过文件相当容易。这记录在 Apache Tomcat 的常见问题解答页面的“如何使 Tomcat 启动更快”下。

请注意,您没有提到您使用的是什么版本的 Apache Tomcat (x.y.z)。

关于java - 循环依赖阻止在 Tomcat 上进行 war 部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55765566/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com