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

2020-09-21 21:13发布

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

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


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


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

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

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


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


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

付费偷看设置
发送
4条回答
绿领巾童鞋
1楼-- · 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

clasier
2楼-- · 2020-09-21 21:32

您能解释一下为什么首先需要用户重新启动应用程序的原因吗?

95年老男孩
3楼-- · 2020-09-21 21:39

我基本上需要通过从文档存储库中读取一些配置文件来重新初始化应用程序。

木偶小白
4楼-- · 2020-09-21 21:35

您好,Kalpa,

我怀疑当您尝试从同一Tomcat实例中关闭Tomcat时会发生这种情况。 这应该从外部应用程序完成。 如果您已经尝试过并且行为相同,则可能是SCP试图从误解的关机中恢复。

在这种情况下,我建议向SAP支持小组举报一个事件以进行进一步调查。 我认为应该可以通过程序关闭应用程序。

关于,
伊万

一周热门 更多>