sofastack / sofa-ark

SOFAArk is a light-weight,java based classloader isolation framework.
https://www.sofastack.tech/projects/sofa-boot/sofa-ark-readme/
Apache License 2.0
1.56k stars 497 forks source link

替换部署新的 biz web 包时,提示 contextPath 重复(webContextPath配置没变) #464

Closed lisong2010 closed 2 years ago

lisong2010 commented 2 years ago

Your question

Biz 包是 web 服务,重新打包新版本,部署提示 下列错误,请问不希望更改webContextPath情况下如何部署? 打包配置有:/app

org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is java.lang.IllegalArgumentException: addChild: Child name '/app' is not unique at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:155) ~[spring-boot-2.1.0.RELEASE.jar!/:2.1.0.RELEASE] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:540) ~[spring-context-5.1.2.RELEASE.jar!/:5.1.2.RELEASE] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140) ~[spring-boot-2.1.0.RELEASE.jar!/:2.1.0.RELEASE] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775) [spring-boot-2.1.0.RELEASE.jar!/:2.1.0.RELEASE] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) [spring-boot-2.1.0.RELEASE.jar!/:2.1.0.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:316) [spring-boot-2.1.0.RELEASE.jar!/:2.1.0.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260) [spring-boot-2.1.0.RELEASE.jar!/:2.1.0.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248) [spring-boot-2.1.0.RELEASE.jar!/:2.1.0.RELEASE] at io.sofastack.dynamic.provider.ProviderApplication.main(ProviderApplication.java:16) [null-null-20211206113221732!/:4.0.0] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_291] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_291] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_291] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_291] at com.alipay.sofa.ark.bootstrap.MainMethodRunner.run(MainMethodRunner.java:48) [sofa-ark-archive-1.1.0.jar!/:na] at com.alipay.sofa.ark.container.model.BizModel.start(BizModel.java:228) [sofa-ark-container-1.1.0.jar!/:na] at com.alipay.sofa.ark.api.ArkClient.installBiz(ArkClient.java:153) [sofa-ark-api-1.1.0.jar!/:na] at com.alipay.sofa.ark.api.ArkClient.installOperation(ArkClient.java:321) [sofa-ark-api-1.1.0.jar!/:na] at com.alipay.sofa.ark.api.ArkClient.installOperation(ArkClient.java:306) [sofa-ark-api-1.1.0.jar!/:na] at com.alipay.sofa.ark.container.service.biz.BizCommandProvider$BizCommand$1.run(BizCommandProvider.java:243) [sofa-ark-container-1.1.0.jar!/:na] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_291] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_291] at java.lang.Thread.run(Thread.java:748) [na:1.8.0_291] Caused by: java.lang.IllegalArgumentException: addChild: Child name '/app' is not unique at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:730) ~[tomcat-embed-core-9.0.12.jar!/:9.0.12] at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:719) ~[tomcat-embed-core-9.0.12.jar!/:9.0.12] at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:703) ~[tomcat-embed-core-9.0.12.jar!/:9.0.12] at com.alipay.sofa.ark.springboot.web.ArkTomcatServletWebServerFactory.prepareContext(ArkTomcatServletWebServerFactory.java:200) ~[sofa-ark-springboot-starter-1.1.0.jar!/:na] at com.alipay.sofa.ark.springboot.web.ArkTomcatServletWebServerFactory.getWebServer(ArkTomcatServletWebServerFactory.java:93) ~[sofa-ark-springboot-starter-1.1.0.jar!/:na] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:179) ~[spring-boot-2.1.0.RELEASE.jar!/:2.1.0.RELEASE] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:152) ~[spring-boot-2.1.0.RELEASE.jar!/:2.1.0.RELEASE] ... 21 common frames omitted

seeflood commented 2 years ago

感谢反馈,@alaneuler @glmapper 帮忙看看哈

whoisje commented 2 years ago

我复现了同样的问题,下面ark-biz-01是springboot的web服务打的jar包,复现步骤

  1. ArkClient.installBiz (ark-biz-01)
  2. ArkClient.uninstallBiz (ark-biz-01)
  3. ArkClient.installBiz (ark-biz-01)

在执行ArkClient.uninstallBiz (ark-biz-01)后我的web服务依旧是可以访问的,说明并没有卸载干净,web服务依旧处于运行状态中,再次ArkClient.installBiz (ark-biz-01)时报错。

lylingzhen commented 2 years ago

cc @lvjing2 关注,web context 问题。

lvjing2 commented 2 years ago

我用最新版 ark demo没有复现问题,麻烦使用最新的demo试下呢?

jhon-ye commented 2 years ago
image image image

我现在也出现同样的问题,biz 卸载之后仍然能处理流量 ark version :1.1.5

lvjing2 commented 2 years ago
image image image

我现在也出现同样的问题,biz 卸载之后仍然能处理流量 ark version :1.1.5

能否给出例子,我没能复现这个问题。

lylingzhen commented 2 years ago

@lisong2010 Hello,问题还有么,如果没有这个 Issue 先关闭,有问题可以随时 Reopen。