我正在使用apache-tomcat-8.5.15
并开始(startup.sh
)&使用其shutdown.sh
目录中包含的shell脚本停止(bin/
)它。在我的自定义shell脚本文件中,当我写:
./shutdown.sh
./startup.sh
并且运行,它似乎工作正常。但是当我用
运行时./shutdown.sh && ./startup.sh
显示
java.net.BindException: Address already in use (Bind failed)
说地址已被绑定。
为什么会这样?如何解决此错误?
或者,是否有一个可以重启tomcat的简单命令?
答案 0 :(得分:0)
为什么会这样?如何解决此错误?
当您尝试在已经被其他应用程序或其他tomcat本身进程使用的端口上运行tomcat时,会出现此问题,
是的,你可以通过杀死或停止绑定到该端口的进程来解决这个问题。
答案 1 :(得分:0)
是否有&&
不是问题。这只是一个测试错误。
这是因为
INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [38,251] milliseconds.
这部分耗时差不多40秒,因此当我用&&
测试脚本时,shutdown.sh
无法关闭tomcat进程,因为它处于初始化阶段。
要解决此问题,您可以在JAVA_OPT
设置为dev/urandom
。有关详细解决方案,请参阅this answer & comment。
事实上,没有这个问题,无论哪种方式都可以。
可能不是。
starup.sh
和shutdown.sh
是否异步运行?我对此没有明确的答案,但根据脚本中的代码(here和here),这与我的Tomcat版本相同,它们似乎没有是异步的。如果我错了,请纠正我。