如果有人在servlet中写System.exit()
会导致服务器或应用程序崩溃,会发生什么?
答案 0 :(得分:12)
也许吧!容器应该已经修改了安全管理器(SecurityManager.checkExit()
),因此调用可能会导致AccessControlException
。没有webapp能够关闭服务器。
答案 1 :(得分:3)
答案 2 :(得分:2)
运行servlet容器的JVM将终止,所以,是的。
答案 3 :(得分:0)
好吧,System.exit()
将终止当前运行的JVM。因此,很可能会触发在servlet容器'addShutdownHook
中编写的代码。
答案 4 :(得分:0)
不,你不能,因为它会引发安全例外。
答案 5 :(得分:0)
来自https://javarevisited.blogspot.in/2014/11/dont-use-systemexit-on-java-web-application.html:
Java Web应用程序中的System.exit()在Web服务器或应用程序服务器中运行,它本身就是Java程序,根本不是一个好主意。为什么?因为调用System.exit()会杀死你的JVM,从Tomcat或Jetty调用它,不仅会杀死你的应用程序,而且很可能会杀死服务器本身。如果该服务器还托管其他关键应用程序,这可能是有潜在危险的,这根本不常见。根据我的经验,System.exit()调用在Web应用程序启动代码中过于宽泛的try-catch块中非常常见,它们加载环境变量,属性文件,连接到MQ Series,建立数据库连接,打开套接字连接等等。如果您正在编写基于Java的核心服务器,其中每个应用程序都有自己的JVM,但是在Tomcat,JBoss,WebSphere,Weblogic或任何其他应用程序服务器上部署Web应用程序,使用System.exit()很大,这仍然没问题。错误。在最坏的情况下,可能导致许多其他关键应用程序中断。另一方面,通过启用安全管理器,有一些方法可以防止您的Web应用程序出错。 System.exit()和Runtime.exit()都通过安全管理器。启用安全管理器将捕获这些调用并将其减少为异常,而不是关闭整个VM。
答案 6 :(得分:0)
System.exit()将关闭运行Application的服务器(已在tomcat 7上测试)。
答案 7 :(得分:-2)
System.exit()正在关闭该浏览器中的特定应用程序