几年前,我们在独立的 java 应用程序中遇到了 Spring 组件扫描缓慢的问题,所以我在 stackoverflow 中询问:慢弹簧元件扫描 https://stackoverflow.com/questions/17747364/slow-spring-component-scan。几年后,我再次偶然发现这个问题,我想我找到了它慢的原因:这是因为 jar 文件已签名。
目前我们的应用程序中有大约 170 个 jar 文件。我们自己的和第三方。我们签署了所有这些。
通常我们使用webstart,组件扫描的性能还可以。
只需执行“java -cp mainclass”即可使用巨大的类路径启动我们的应用程序,组件扫描需要几分钟的时间。
如果我只是从所有 jar 文件(仅包含签名信息)中删除 MANIFEST.MF 文件,然后再次运行该应用程序,速度将与 Webstart 一样快。
看来签名检查花费了很多时间。
我尝试在 Java 控制台中停用签名扫描。没有效果。还是很慢。 java有运行时参数吗?
我目前在签名的 uber-jar 上遇到了同样的问题。它可能与自动装配无关,但与上下文组件扫描有关,以防您也在 XML 配置中使用它。我找到了一个旧的 Spring 核心ticket https://jira.spring.io/browse/SPR-4694提到这一点。票证已关闭解决方法:无法修复尽管...
我已经删除了组件扫描并将其替换为 XML bean,并且它似乎可以正常工作。我仍然对使用内省(org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean)在运行时生成的 CXF Web 服务有问题。创建每个服务大约需要 2 分钟。但至少取得了一些进展。
还有一些值得注意的事情:尽管在 Java 9 上使用 Java Web Start 时应用程序速度很慢,但在 1.8 上却非常快
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)