Моё весеннее загрузочное приложение работает в контейнере Tomcat. Я получаю следующее исключение, когда наш процесс сборки удаляет существующий файл FAT и заменяет его другой сборкой с другим именем. Процесс сборки заменяет jar новым, пока приложение работает, и внезапно начинает выдавать ошибку недоступности сервиса. Перезапуск службы после замены сборки на всех серверах занимает некоторое время, и в течение этого времени, если кто-то запускает приложение, выдает эту ошибку.
Я проверил код tomcat и обнаружил, что следующий вызов возвращает нулевую запись .
org.apache.catalina.webresources.Cache#getResource -> org.apache.catalina.webresources.Cache#resourceCache
- Когда кот изгоняет этот кеш или удаляет записи из этого кеша?
- Есть ли обходной путь для этого?
2020-02-27 09:13:21,563 174233642 [http-nio-50763-exec-10] ERROR o.a.coyote.http11.Http11Processor - Error processing request
java.lang.IllegalStateException: java.io.FileNotFoundException: /usr/local/jmp/svc-1.0.2.0/lib/svc-1.0.2.0-328.jar (No such file or directory)
at org.apache.catalina.webresources.JarWarResourceSet.getArchiveEntries(JarWarResourceSet.java:148)
at org.apache.catalina.webresources.AbstractArchiveResourceSet.getResource(AbstractArchiveResourceSet.java:253)
at org.apache.catalina.webresources.StandardRoot.getResourceInternal(StandardRoot.java:281)
at org.apache.catalina.webresources.CachedResource.validateResource(CachedResource.java:87)
at org.apache.catalina.webresources.Cache.getResource(Cache.java:87)
at org.apache.catalina.webresources.StandardRoot.getResource(StandardRoot.java:216)
at org.apache.catalina.webresources.StandardRoot.getResource(StandardRoot.java:206)
at org.apache.catalina.mapper.Mapper.internalMapWrapper(Mapper.java:1036)
at org.apache.catalina.mapper.Mapper.internalMap(Mapper.java:851)
at org.apache.catalina.mapper.Mapper.map(Mapper.java:703)
at org.apache.catalina.connector.CoyoteAdapter.postParseRequest(CoyoteAdapter.java:695)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:337)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:791)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1417)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.FileNotFoundException: /usr/local/jmp/svc-1.0.2.0/lib/svc-1.0.2.0-328.jar (No such file or directory)
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:225)
at java.util.zip.ZipFile.<init>(ZipFile.java:155)
at java.util.jar.JarFile.<init>(JarFile.java:166)
at java.util.jar.JarFile.<init>(JarFile.java:130)
at org.apache.tomcat.util.compat.JreCompat.jarFileNewInstance(JreCompat.java:164)
at org.apache.tomcat.util.compat.JreCompat.jarFileNewInstance(JreCompat.java:149)
at org.apache.catalina.webresources.AbstractArchiveResourceSet.openJarFile(AbstractArchiveResourceSet.java:307)
at org.apache.catalina.webresources.JarWarResourceSet.getArchiveEntries(JarWarResourceSet.java:109)
... 20 common frames omitted