【tomcat】linux下启动tomcat卡在Deploying web application directory

本文介绍了解决Linux环境下Tomcat启动时卡在部署web应用的问题,通过修改java.security文件中的随机数生成源设置,从使用/dev/random改为/dev/urandom,避免了因熵池不足导致的启动延迟。

在linux下启动tomcat时发现一直启动不起来,通过tailf ../logs/catalina.out (因为在bin目录,所以需要返回上一层,具体参数可根据情况而定) 查看日志,发现一只卡在Deploying web application directory..../webapps/host-manager

下面上解决方案

find / -name java.security #先找到 java.security 文件位置

编辑java.security 这个文件

把文件中的

securerandom.source=file:/dev/random

替换成为

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

即可。

下面是引用的部分说明

tomcat启动的时候会实例化SecureRandom对象,实例化对象使用org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom类产生安全随机类SecureRandom的实例作为会话ID产生。Tomcat使用SHA1PRNG算法是基于SHA-1算法实现且保密性较强的伪随机数生成器。在SHA1PRNG中,有一个种子产生器,它根据配置执行各种操作。

Linux 中的随机数可以从两个特殊的文件中产生,一个是 /dev/urandom,另外一个是 /dev/random。他们产生随机数的原理是利用当前系统的熵池来计算出固定一定数量的随机比特,然后将这些比特作为字节流返回。熵池就是当前系统的环境噪音,熵指的是一个系统的混乱程度,系统噪音可以通过很多参数来评估,如内存的使用,文件的使用量,不同类型的进程数量等等。如果当前环境噪音变化的不是很剧烈或者当前环境噪音很小,比如刚开机的时候,而当前需要大量的随机比特,这时产生的随机数的随机效果就不是很好了。

这就是为什么会有 /dev/urandom 和 /dev/random 这两种不同的文件,后者在不能产生新的随机数时会阻塞程序,而前者不会(ublock),当然产生的随机数效果就不太好了,这对加密解密这样的应用来说就不是一种很好的选择。/dev/random 会阻塞当前的程序,直到根据熵池产生新的随机字节之后才返回,所以使用 /dev/random 比使用 /dev/urandom 产生大量随机数的速度要慢。

SecureRandom generateSeed  使用 /dev/random 生成种子。但是 /dev/random 是一个阻塞数字生成器,如果它没有足够的随机数据提供,它就一直等,这迫使 JVM 等待。键盘和鼠标输入以及磁盘活动可以产生所需的随机性或熵。但在一个服务器缺乏这样的活动,可能会出现问题。
作者:fengchao2016 
来源:优快云 
原文:https://blog.youkuaiyun.com/fengchao2016/article/details/89156187 

信息: Deploying web application directory lx01 2010-11-11 22:52:05 org.apache.catalina.startup.HostConfig deployDirectory 信息: Deploying web application directory blog 2010-11-11 22:52:06 org.apache.catalina.core.StandardContext listenerStart 严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3915) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546) at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1041) at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:964) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) at org.apache.catalina.core.StandardHost.start(StandardHost.java:785) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java:519) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:581) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 2010-11-11 22:52:06 org.apache.catalina.core.StandardContext listenerStart 严重: Skipped installing application listeners due to previous error(s) 2010-11-11 22:52:06 org.apache.catalina.core.StandardContext start 严重: Error listenerStart 2010-11-11 22:52:06 org.apache.catalina.core.StandardContext start 严重: Context [/blog] startup failed due to previous errors ApplicationFilterConfig[name=EncodingFilter, filterClass=com.v512.guestbook.web.CharacterEncodingFilter]
org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directoryTomcat服务器启动时的一条日志信息。这个日志信息表明正在部署一个包含Web应用程序的目录。具体而言,这个日志信息是来自于Apache Tomcat服务器的HostConfig类的deployDirectory方法。在这个方法执行过程中,Tomcat服务器将会部署指定目录下的Web应用程序。这个日志信息在服务器启动过程中是很常见的,它表示服务器正在准备加载和启动Web应用程序。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [信息: Deploying web application directory lx01](https://download.youkuaiyun.com/download/qscqikezi/2827378)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [tomcat启动 org.apache.catalina.startup.HostConfig.deployDirectory 问题](https://blog.youkuaiyun.com/weixin_43805551/article/details/123226814)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [[localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory报错,Tomcat启动失败](https://blog.youkuaiyun.com/qq_43021617/article/details/110005987)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值