10
votes

System.exit in servlet

Qu'est-ce qui se passerait si quelqu'un écrit system.exit () dans un servlet serait le serveur ou l'application crash?


1 commentaires

Pourquoi n'essayez-vous pas simplement avec votre conteneur de servlet et voyez ce qui se passe?


8 Réponses :


2
votes

Le JVM exécutant le conteneur de servlet se terminerait, donc oui.


1 commentaires

Eh bien, j'espère que la plupart exécuteraient avec un gestionnaire de sécurité et seraient configurés pour restreindre cela. Si tel est le cas, la réponse est la solution, la réponse correcte est donc, dépend de si un gestionnaire de sécurité est utilisé et que la stratégie de sécurité est correctement configurée / restreinte.



12
votes

Peut-être! Le conteneur doit avoir modifié le gestionnaire de sécurité ( SecurityManager.checkexit () ) afin que l'appel puisse entraîner une AccessControlException . Aucun WebApp ne devrait pouvoir arrêter le serveur.


0 commentaires

3
votes

Il y a déjà une réponse à cette question ici: http://tomcat.apache.org/tomcat-5.5- Doc / Security-Manager-HOWTO.HTML


0 commentaires

0
votes

Eh bien, system.exit () prendra fin au courant JVM actuel. Il est donc probable que le code écrit dans les conteneurs de servlet ' addshutdownhook sera déclenché.


0 commentaires

-2
votes

System.exit () ferme l'application particulière dans ce navigateur


0 commentaires

0
votes

Non, vous ne pouvez pas parce que cela lancera une exception de sécurité.


1 commentaires

Un peu plus d'explication pourrait aider les autres programmeurs à comprendre comment cela fonctionne ou non.



0
votes

de HTTPS: // javarevisited.blogspot.in/2014/11/dont-utilisateur-systemexit-on-java-web-aplication.html :

système.exit ( ) dans l'application Web Java, qui fonctionne à l'intérieur du serveur Web ou du serveur d'applications, ce qui est le programme Java n'est pas une bonne idée de l'utiliser du tout. Pourquoi? Parce que invoquant le système.exit () tue votre JVM, appelez-le de Tomcat ou de Jetée, ne tuera pas seulement votre application, mais le serveur probablement lui-même. Cela peut être potentiellement dangereux, si ce serveur héberge également une autre application critique, ce qui n'est pas rare du tout. Selon mes expériences, System.Exit () Les appels sont assez courants dans des blocs d'essais trop larges dans le code de démarrage de l'application Web qui chargent des variables d'environnement, des fichiers de propriétés, la connexion à MQ Series, établit la connexion de la base de données, l'ouvre des connexions de socket, etc. . Ceci est toujours correct, si vous écrivez le serveur basé sur Core Java, où chaque application a son propre JVM, mais avec une application Web déployée sur Tomcat, JBoss, WebSphere, Weblogic ou tout autre serveur d'applications, à l'aide de System.exit () est grand erreur. Dans le pire des cas, peut entraîner une panne pour beaucoup d'autres applications critiques. D'autre part, il existe des moyens d'empêcher votre application Web de l'erreur de quelqu'un d'autre, en activant le gestionnaire de sécurité. Système.exit () et runtime.exit () passe tous les deux sur le gestionnaire de sécurité. L'activation du gestionnaire de sécurité attrapera ces appels et les réduire dans une exception plutôt que de fermer tout le VM.


0 commentaires

0
votes

System.exit () Arrêtez l'application de serveur exécutant (testée sur Tomcat 7).


0 commentaires