Tomcat启动很慢,日志上无任何错误,在日志中查看到如下信息:

At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.

原因

Tomcat 7/8都使用org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom类产生安全随机类SecureRandom的实例作为会话ID,这里花去了342秒,也即接近6分钟。

SHA1PRNG算法是基于SHA-1算法实现且保密性较强的伪随机数生成器。

在SHA1PRNG中,有一个种子产生器,它根据配置执行各种操作。

1)如果java.security.egd属性或securerandom.source属性指定的是"file:/dev/random"或"file:/dev/urandom",那么JVM会使用本地种子产生器NativeSeedGenerator,它会调用super()方法,即调用SeedGenerator.URLSeedGenerator(/dev/random)方法进行初始化。

2)如果java.security.egd属性或securerandom.source属性指定的是其它已存在的URL,那么会调用SeedGenerator.URLSeedGenerator(url)方法进行初始化。

这就是为什么我们设置值为"file:///dev/urandom"或者值为"file:/./dev/random"都会起作用的原因。

在这个实现中,产生器会评估熵池(entropy pool)中的噪声数量。随机数是从熵池中进行创建的。当读操作时,/dev/random设备会只返回熵池中噪声的随机字节。/dev/random非常适合那些需要非常高质量随机性的场景,比如一次性的支付或生成密钥的场景。

当熵池为空时,来自/dev/random的读操作将被阻塞,直到熵池收集到足够的环境噪声数据。这么做的目的是成为一个密码安全的伪随机数发生器,熵池要有尽可能大的输出。对于生成高质量的加密密钥或者是需要长期保护的场景,一定要这么做。

那么什么是环境噪声?

随机数产生器会手机来自设备驱动器和其它源的环境噪声数据,并放入熵池中。产生器会评估熵池中的噪声数据的数量。当熵池为空时,这个噪声数据的收集是比较花时间的。这就意味着,Tomcat在生产环境中使用熵池时,会被阻塞较长的时间。

解决

有两种解决办法:

1)在Tomcat环境中解决

可以通过配置JRE使用非阻塞的Entropy Source。

在catalina.sh中加入这么一行:-Djava.security.egd=file:/dev/./urandom即可。

加入后再启动Tomcat,整个启动耗时下降到Server startup in 2912 ms。

2)在JVM环境中解决

打开$JAVA_PATH/jre/lib/security/java.security这个文件,找到下面的内容:

securerandom.source=file:/dev/urandom

替换成

securerandom.source=file:/dev/./urandom

参考资料:https://blog.csdn.net/chszs/article/details/49494701

java jar 启动好慢_Tomcat启动很慢,提示“At least one JAR was scanned for TLDs yet contained no TLDs.”...相关推荐

  1. Tomcat启动提示At least one JAR was scanned for TLDs yet contained no TLDs

    Tomcat启动很慢,每次卡在At least one JAR was scanned for TLDs yet contained no TLDs! 原因 是Tomcat启动时会扫描大量jar包,如 ...

  2. 解决:Tomcat启动提示At least one JAR was scanned for TLDs yet contained no TLDs

    文章目录 一.问题描述 二.问题原因 三.问题解决 3.1 解决步骤 3.2 从Tomcat的Bin目录中启动服务器 3.3 Eclipse启动Tomcat 一.问题描述 报错内容 十月 11, 20 ...

  3. (完美解决)Tomcat启动提示At least one JAR was scanned for TLDs yet contained no TLDs

    一.文章前言     本文是亲测有效解决At least one JAR was scanned for TLDs yet contained no TLDs问题,绝对不是为了积分随便粘贴复制然后压根 ...

  4. Tomcat8.5.40启动后一直卡在日志At least one JAR was scanned for TLDs yet contained no TLDs

    问题描述: 将打包好的war包放到webapps下面,启动tomcat(8.5.40版本)后,tomcat启动界面一直卡在日志At least one JAR was scanned for TLDs ...

  5. Tomcat 解决“At least one JAR was scanned for TLDs yet contained no TLDs”问题

    今天在部署war包到服务器的时候,突然出现以下错误,之前没有,造成的原因未知. org.apache.jasper.servlet.TldScanner.scanJars At least one J ...

  6. 9 tlds tomcat_解决Tomcat7“At least one JAR was scanned for TLDs yet contained no TLDs”问题

    Tomcat版本]7.0.42 [问题描述]Tomcat启动后,访问动态页面后提示"At least one JAR was scanned for TLDs yet contained n ...

  7. At least one JAR was scanned for TLDs yet contained no TLDs 解决办法

    在尝试以下操作前,请先关闭杀毒软件,确保不是受杀毒软件的影响: 我部署的系统报如下错误,就是百度杀毒引起的. 以下是转载内容: Jun 03, 2013 1:09:49 PM org.apache.j ...

  8. 解决At least one JAR was scanned for TLDs yet contained no TLDs. 问题

    解决At least one JAR was scanned for TLDs yet contained no TLDs. 问题 参考文章: (1)解决At least one JAR was sc ...

  9. java d 配置不生效_Tomcat启动失败问题 (指定的主资源集 [D:\java\apache-tomcat-9.0.35\webapps\AppManageSystem] 无效)...

    警告: 部署描述符[D:\java\apache-tomcat-9.0.35\conf\Catalina\localhost\AppManageSystem.xml]中值为[/AppManageSys ...

  10. 重启tomcat报错 Tomcat7“At least one JAR was scanned for TLDs yet contained no TLDs”

    修改$CATALINA_BASE/conf/catalina.properties文件,添加org.apache.el.parser.SKIP_IDENTIFIER_CHECK=true选项. 重启t ...

最新文章

  1. Modeling Filters and Whitening Filters
  2. python数据分析——世界杯分析预测
  3. ArrayList add(int index,E element)
  4. 究竟是“二O一六年”还是“二零一六年”?嘴上会说可你会写吗?
  5. mysql驱动为什么自动加载_为什么JDBC中加载驱动要使用反射?
  6. P4551 最长异或路径
  7. Spring Boot 10:处理Json数据中的null值
  8. python saml2 认证实例程序demo
  9. 第五届大数据科学与工程国际会议(2021)成功召开
  10. php编程输出心形图案_如何用C语言先输出一段文字如何再输出心形图案?
  11. mysql删除某天前的数据
  12. java openoffic excel转html,Java利用OpenOffice進行將word,excel轉化成html解析到界面(上)...
  13. 【一起学Rust | 进阶篇 | Service Manager库】Rust专用跨平台服务管理库
  14. linux关闭虚拟网卡,KVM---关闭虚拟网卡virbr0的方法
  15. 华为服务器centos安装系统,华为裸金属服务器泰山200安装Centos7图文解析
  16. 郭德纲的网络效应和网络利用
  17. 优教信使同步辅学总是显示服务器,优教信使同步学习卡在教学中的应用论文
  18. 【数据结构】红黑树入门知识
  19. Nginx 负载均衡 ip_hash和一致性hash
  20. ssh authentication魔鬼细节--.ssh文件夹权限

热门文章

  1. 大学计算机课程学习路线 左飞老师
  2. 区块链的底层技术:P2P网络原理与应用详解
  3. 如何在word中的方框里打钩
  4. 一个完整的python文件即是一个模块_004孤荷凌寒从零开始学区块链第四天继续尝试用Python来设计一个区块链网络...
  5. 巨头环伺下,青云QingCloud的云计算之路危机重重
  6. unity教程:MMORPG网络游戏如何实现玩家同步
  7. 论文阅读笔记《Deep Graph Matching under Quadratic Constraint》
  8. 智能电子快递面单系统
  9. 005_Sketch 工具使用手册
  10. arm嵌入式led灯闪烁实验报告_嵌入式ARM键盘控制LED灯实验报告