Vla*_*lad 4 java tomcat spring-boot
我有一个带有嵌入式 tomcat (tomcat-embed-core-8.5.57.jar) 的 spring-boot “fat” jar (1.5.22)。
jar 内部 - BOOT-INF/lib 下有许多“内部”jar。
类加载器加载这些内部 jar 的顺序是什么?
如果我在多台计算机上运行- 内部罐子是否会以相同的确切java -jar myFatSpringBoot.jar顺序被拾取,或者它是否“取决于”每台计算机上的某些内容?(FS/tmpfs/java/等)
更新:许多响应者表示,它按照它们在 fat jar 中出现的确切顺序获取内罐(因此至少 QA 和 PROD 对于同一个 fat jar 应该表现相同的方式,这与非 spring-boot .war 应用程序不同)。
现在我想知道在创建/打包罐子的过程中我们是否有任何机制来保存/强制/指定内部罐子的顺序?(maven/gradle/...)
中的 jar始终按照它们在 jar 中出现的顺序添加到 Spring Boot\xe2\x80\x99s 类加载器BOOT-INF/lib中。这意味着,如果您在多个 jar 中声明了相同的类文件或资源,则无论操作系统、Java 版本等如何,相同的类文件或资源始终会在应用程序的多次运行中获胜。即使您正在使用Spring Boot 支持在运行时自动解压某些 jar。
Spring Boot 还在它构建的每个 jar 中打包了一个BOOT-INF/classpath.idx索引文件。它列出了所有嵌套的 jar,“按照它们应添加到类路径的顺序”。如果您解压缩 jar 文件,以便BOOT-INF/lib文件系统对 jar 文件进行排序,如果您继续使用 Spring BootJarLauncher来启动应用程序,它将遵循索引中的顺序。
Spring Boot 包含测试,例如这些测试,用于验证类路径的顺序,无论是在使用 启动应用程序时java -jar还是使用java org.springframework.boot.loader.JarLauncher.
| 归档时间: |
|
| 查看次数: |
3130 次 |
| 最近记录: |