从应用程序内部重新启动Java应用程序

2020-09-21 21:13发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)确切地说,我已经在SAP Clo...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


确切地说,我已经在SAP Cloud平台" Java Web Tomcat 8"运行时中部署了Java应用程序。 我有一个需要提供允许用户从应用程序内部重新启动应用程序的功能的要求。 Cloud Platform是否支持实现此目标。


另一方面,我意外地发现,如果执行 System.exit(0),应用程序将自行重启,但找不到任何可以保证该行为的文档。 对于某些退出代码,Cloud Platform是否会重新启动应用程序?

4条回答
绿领巾童鞋
2020-09-21 21:24

您好,卡尔帕,

您的Web应用程序实际上是在Servlet容器中运行的,该容器由选定的运行时提供给您(即:Java Web Tomcat 8)。
由于容器负责您的应用程序生命周期,因此永远不要调用System.exit(0)。 这不是SCP的"东西"。 调用System.exit(0)将关闭负责Tomcat的整个VM。

这是我重启时的两分钱:SCP负责应用程序的运行状况。 SCP可能认为VM终止是一个关键问题,因为没有人下令停止应用程序。 因此,它可能会尝试重新启动整个容器,以使应用程序状态恢复正常。 这些是可能的假设。

如果确实需要正常停止应用程序,则应连接到关闭端口,并在其上写上SHUTDOWN字样。

尝试{
     Socket socket = new Socket(" localhost",8005); //这是SDK上server.xml中的标准
     如果(socket.isConnected()){
         PrintWriter pw =新的PrintWriter(socket.getOutputStream(),true);
         pw.println(" SHUTDOWN");//发送关闭命令-同样是标准的
         pw.close();
         socket.close();
     }
 } catch(Exception e){
     e.printStackTrace();
 }
 

关于,
Ivan

一周热门 更多>