servlet中的System.exit

时间:2010-05-20 07:07:54

标签: java security servlets

如果有人在servlet中写System.exit()会导致服务器或应用程序崩溃,会发生什么?

8 个答案:

答案 0 :(得分:12)

也许吧!容器应该已经修改了安全管理器(SecurityManager.checkExit()),因此调用可能会导致AccessControlException。没有webapp能够关闭服务器。

答案 1 :(得分:3)

这里已经有了这个问题的答案: http://tomcat.apache.org/tomcat-5.5-doc/security-manager-howto.html

答案 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()正在关闭该浏览器中的特定应用程序