Cosa accadrebbe se qualcuno scrivesse System.exit()
in un servlet se il server o l'applicazione si bloccassero?System.exit in servlet
risposta
La JVM che esegue il contenitore servlet terminerebbe, quindi sì.
Beh, mi auguro che la maggior parte sarebbe in esecuzione con un gestore della sicurezza e configurato per limitare questo. In tal caso, la risposta è No. Quindi la risposta corretta è, dipende da se un gestore della sicurezza è in uso e la politica di sicurezza è correttamente configurata/limitata. –
Forse! Il contenitore dovrebbe aver modificato il gestore della sicurezza (SecurityManager.checkExit()
) in modo che la chiamata possa comportare un AccessControlException
. Nessuna webapp dovrebbe essere in grado di spegnere il server.
C'è una risposta a questa domanda già qui: http://tomcat.apache.org/tomcat-5.5-doc/security-manager-howto.html
Beh, System.exit()
terminerà la JVM in esecuzione corrente. Pertanto è probabile che venga attivato il codice scritto nei contenitori servlet 'addShutdownHook
.
System.exit() sta chiudendo l'applicazione particolare che il browser
Non funziona in questo modo. –
No non è possibile perché sarà un'eccezione di sicurezza.
Un'altra spiegazione potrebbe aiutare gli altri programmatori a capire come funziona o meno. – Daenarys
Da https://javarevisited.blogspot.in/2014/11/dont-use-systemexit-on-java-web-application.html:
System.exit() in un'applicazione Web Java, che scorre all'interno o web server o application server, che è essa stessa programma Java non è una buona idea usare affatto. Perché? poiché invocare System.exit() uccide la JVM, richiamandola da Tomcat o Jetty, non solo ucciderà l'applicazione, ma molto probabilmente il server stesso. Questo può essere potenzialmente pericoloso, se quel server ospita anche altre applicazioni critiche, il che non è affatto raro. Secondo la mia esperienza, le chiamate System.exit() sono abbastanza comuni in blocchi try-catch troppo ampi nel codice di avvio dell'applicazione Web che carica le variabili di ambiente, i file delle proprietà, si connette a MQ Series, stabilisce la connessione al database, apre le connessioni socket, ecc. Questo è ancora ok, se si sta scrivendo un server basato su Java, dove ogni applicazione ha una propria JVM, ma con un'applicazione Web distribuita su Tomcat, JBoss, WebSphere, Weblogic o qualsiasi altro server di applicazioni, usando System.exit() è grande sbaglio. Nel peggiore dei casi può causare un'interruzione per molte altre applicazioni critiche. D'altra parte, ci sono modi per prevenire la tua applicazione web da un errore di qualcun altro, abilitando Security Manager. System.exit() e Runtime.exit() passano entrambi attraverso il security manager. L'abilitazione di Security manager catturerà queste chiamate e le ridurrà in un'eccezione anziché chiudere l'intera VM.
- 1. System.exit (0) in java
- 2. System.exit in Java Thread
- 3. System.exit() in android
- 4. Come acquisire l'evento System.exit?
- 5. System.exit (0) vs JFrame.EXIT_ON_CLOSE
- 6. JFrame.dispose() vs System.exit()
- 7. proibire la chiamata a System.exit
- 8. ignorare System.exit() da un'altra classe
- 9. differenza tra System.exit() e killProcess()
- 10. Servlet asincroni vs servlet sincroni
- 11. Differenza tra finish() e System.exit (0)
- 12. ExecutorService in Java Servlet
- 13. Spring @Autowired in Servlet
- 14. Da quale thread deve essere chiamato System.exit() in un'app Swing?
- 15. Qual è lo scopo esatto di chiamare System.exit() in java
- 16. Come ottenere il contesto servlet da ServletRequest in Servlet 2.5?
- 17. Servlet: SEVERE: allocare l'eccezione per servlet
- 18. Chiamata posta servlet da un altro servlet
- 19. EJB injection in servlet failed
- 20. Riutilizzare Nashorn ScriptEngine in Servlet
- 21. Richiesta dell'URL in un servlet
- 22. Servlet Dispatcher in Spring Boot
- 23. Java. System.exit (stato int). Valore per lo stato di uscita
- 24. System.exit (0) non chiude tutte le mie attività?
- 25. Che cosa può far continuare a funzionare Java dopo System.exit()?
- 26. Dove inserire il servlet-servlet predefinito nella configurazione Spring MVC
- 27. Differenza tra servlet/mappatura servlet e filtro/mappatura del filtro?
- 28. java.lang.IllegalArgumentException: mappatura servlet specifica un nome di servlet sconosciuto GCMBroadcast
- 29. System.exit (num) o lancia una RuntimeException dal principale?
- 30. comunicazione tra servlet remoto
Perché non lo provi con il tuo particolare contenitore servo e vedi cosa succede? – Jesper