掌桥专利:专业的专利平台
掌桥专利
首页

Java应用的运行方法、系统、装置及计算机可读存储介质

文献发布时间:2023-06-19 09:29:07


Java应用的运行方法、系统、装置及计算机可读存储介质

技术领域

本发明涉及Java技术领域,尤其涉及一种Java应用的运行方法、系统、装置及计算机可读存储介质。

背景技术

在Java编写应用的时候,经常需要在程序中调用另外一个现成的可执行的程序或系统命令,理论上执行结果会一致,但在实际使用的过程中,运行环境的不同会对执行结果造成一定的影响,如相同版本的Windows操作系统在不同的机器上,执行同样的批处理脚本,调用相同的目标程序可能会出现结果不一致的情况,大多的机器都能够实现当前线程阻塞直到子进程任务处理完成的效果,但部分机器存在子进程任务处理还未完成便继续往下执行的情况。而且目前Java应用在运行时难以及时、准确的了解各个子进程任务的执行情况,当有子进程任务出现异常时,无法快速、准确定位到异常子进程。

发明内容

本发明的目的是为解决上述技术问题的不足而提供一种Java应用的运行方法、系统、装置及计算机可读存储介质,在各种运行环境下都可以有效规避子进程任务处理还未完成便继续往下执行的情况,且能够快速、准确定位到异常子进程。

为了实现上述目的,本发明公开了一种Java应用的运行方法,其包括:

Java应用的当前线程调用启动脚本,所述启动脚本设置有所述Java应用的各线程与各目标可执行的程序或脚本之间的对应关系;

所述启动脚本生成一个进程状态文件,并将第一状态信息写入所述进程状态文件,所述第一状态信息包括所述启动脚本的初始化状态信息以及在初始化完成后和调用相应的所述目标可执行的程序或脚本之前所生成的运行中状态信息;

所述启动脚本调用与所述当前线程对应的所述目标可执行的程序或脚本,所述目标可执行的程序或脚本启动目标子进程;

将所述目标子进程的执行结果信息作为第二状态信息写入所述进程状态文件中;

于调用所述启动脚本后,所述当前线程以预设第一时间间隔从所述进程状态文件中读取状态信息;

当所述当前线程读取到所述目标子进程的执行结果信息时,所述Java应用进入后续操作。

较佳地,Java应用的运行方法还包括:

于调用所述启动脚本后,所述当前线程以预设第二时间间隔依据标识信息去查找所述目标子进程是否存在;

如果所述目标子进程存在,所述当前线程继续以所述预设第一时间间隔从所述进程状态文件中读取状态信息;

如果所述目标子进程不存在,所述Java应用进入后续操作;

所述预设第二时间间隔大于所述预设第一时间间隔。

较佳地,Java应用的运行方法还包括:

所述启动脚本于被调用后生成日志文件,所述日志文件记录所述启动脚本的运行信息和所述目标子进程的运行信息。

较佳地,所述目标子进程的执行结果以返回值的形式输出,对输出的所述返回值进行编译以形成所述执行结果信息并写入所述进程状态文件中。

为了实现上述目的,本发明还公开一种Java应用的运行系统,其包括:

第一调用模块,用于Java应用的当前线程调用启动脚本,所述启动脚本设置有所述Java应用的各线程与各目标可执行的程序或脚本之间的对应关系;

生成模块,用于所述启动脚本生成一个进程状态文件,并将第一状态信息写入所述进程状态文件,所述第一状态信息包括所述启动脚本的初始化状态信息以及在初始化完成后和调用相应的所述目标可执行的程序或脚本之前所生成的运行中状态信息;

第二调用模块,用于所述启动脚本调用与所述当前线程对应的所述目标可执行的程序或脚本,所述目标可执行的程序或脚本启动目标子进程;

写入模块,用于将所述目标子进程的执行结果信息作为第二状态信息写入所述进程状态文件中;

第一读取模块,用于调用所述启动脚本后,所述当前线程以预设第一时间间隔从所述进程状态文件中读取状态信息;

第一进入模块,用于当所述当前线程读取到所述目标子进程的执行结果信息时,所述Java应用进入后续操作。

较佳地,所述运行系统还包括:

检测模块,用于调用所述启动脚本后,所述当前线程以预设第二时间间隔依据标识信息去查找所述目标子进程是否存在;

第二读取模块,用于如果所述目标子进程存在,所述当前线程继续以所述预设第一时间间隔从所述进程状态文件中读取状态信息;

第二进入模块,用于如果所述目标子进程不存在,所述Java应用进入后续操作;

所述预设第二时间间隔大于所述预设第一时间间隔。

较佳地,所述启动脚本于被调用后生成日志文件,所述日志文件记录所述启动脚本的运行信息和所述目标子进程的运行信息。

较佳地,所述目标子进程的执行结果以返回值的形式输出,对输出的所述返回值进行编译以形成所述执行结果信息并写入所述进程状态文件中。

为了实现上述目的,本发明还公开一种Java应用的运行装置,其包括:

一个或多个处理器;

存储器;以及

一个或多个程序,其中一个或多个程序被存储在所述存储器中,并且被配置成由所述一个或多个处理器执行,所述程序包括用于执行如上所述Java应用的运行方法的指令。

为了实现上述目的,本发明还公开一种计算机可读存储介质,其包括测试用计算机程序,所述计算机程序可被处理器执行以完成如上所述Java应用的运行方法。

与现有技术相比,使用本发明Java应用的运行方法或系统,可以通过Java应用的当前线程调用启动脚本,生成一个进程状态文件,并可将初始化状态信息以及运行中状态信息写入进程状态文件中;接着,通过启动脚本调用与当前线程对应的目标可执行的程序或脚本,可将目标可执行的程序或脚本所启动的目标子进程的执行结果信息写入进程状态文件中;当调用启动脚本后,当前线程以预设第一时间间隔从进程状态文件中读取状态信息;当前线程读取到目标子进程的执行结果信息时,Java应用进入后续操作;由此可知,通过上述方法,Java应用的当前线程可以及时、准确地监听到目标子进程的运行状态并可在读取到目标子进程的执行结果信息时使Java应用进入后续操作,该方法简单,运行环境要求不高,适用于各种不同的操作系统或机器,从而在各种运行环境下都可以有效规避子进程任务处理还未完成便继续往下执行的情况,同时也能够快速、准确定位到异常子进程。

附图说明

图1为本发明实施例Java应用的运行方法的流程示意图。

图2为本发明实施例Java应用的运行系统的原理结构示意图。

图3为本发明实施例Java应用的运行装置的原理结构示意图。

具体实施方式

为详细说明本发明的技术内容、结构特征、实现原理及所实现目的及效果,以下结合实施方式并配合附图详予说明。

请参阅图1,本发明公开了一种Java应用的运行方法,其包括以下步骤。

S1、Java应用的当前线程调用启动脚本,启动脚本设置有Java应用的各线程与各目标可执行的程序或脚本之间的对应关系。

S2、启动脚本生成一个进程状态文件,并将第一状态信息写入进程状态文件,第一状态信息包括启动脚本的初始化状态信息以及在初始化完成后和调用相应的目标可执行的程序或脚本之前所生成的运行中状态信息。

具体地,在Java所支持的操作系统范围内,例如window,Linux,macOs等,启动脚本在window中可以用bat脚本,在Linux中可以用shell脚本,启动脚本中定义有一个生成进程状态文件的函数。目标子进程对应着一个监控任务,同时一个监控任务会有一个唯一的标识,函数会根据监控任务的标识,生成对应的一个进程状态文件。在进程状态文件生成后,可以通过I/O操作将第一状态信息写入进程状态文件中。其中第一状态信息具体可分为初始化状态和运行中状态,初始化状态是指初始化相关环境或参数,同时启动脚本需要去查找是目标可执行的程序或脚本否在指定的目录,若不存在进程状态文件更新为失败状态,若存在,继续往下执行。而运行中状态是指目标程序正在执行中,本实施例在初始化状态设置完成后和启动脚本调用目标可执行的程序之前将运行中状态写入进程状态文件中,运行中状态一直持续到目标子进程的执行结果生成之前。

S3、启动脚本调用与当前线程对应的目标可执行的程序或脚本,目标可执行的程序或脚本启动目标子进程。

S4、将目标子进程的执行结果信息作为第二状态信息写入进程状态文件中。

具体地,第二状态信息包括执行成功和执行失败。当出现其他错误情况时,也可视为执行失败。

S5、于调用启动脚本后,当前线程以预设第一时间间隔从进程状态文件中读取状态信息。

具体地,根据用户设置的第一时间周期,并且通过I/O操作读取进程状态文件的内容,以获取状态信息。

S6、当前线程读取到目标子进程的执行结果信息时,Java应用进入后续操作。

对于上述实施例中公开的Java应用的运行方法,通过Java应用的当前线程调用启动脚本,生成一个进程状态文件,并可将初始化状态信息以及运行中状态信息写入进程状态文件中;接着,通过启动脚本调用与当前线程对应的目标可执行的程序或脚本,可将目标可执行的程序或脚本所启动的目标子进程的执行结果信息写入进程状态文件中;当调用启动脚本后,当前线程以预设第一时间间隔从进程状态文件中读取状态信息;当前线程读取到目标子进程的执行结果信息时,Java应用进入后续操作;由此可知,通过上述方法,Java应用的当前线程可以及时、准确地监听到目标子进程的运行状态并可在读取到目标子进程的执行结果信息时使Java应用进入后续操作,该方法简单,运行环境要求不高,适用于各种不同的操作系统或机器,从而在各种运行环境下都可以有效规避子进程任务处理还未完成便继续往下执行的情况,同时也能够快速、准确定位到异常子进程。

进一步地,上述实施例中的Java应用的运行方法还包括:

于调用启动脚本后,当前线程以预设第二时间间隔依据标识信息去查找目标子进程是否存在;

如果目标子进程存在,当前线程继续以预设第一时间间隔从进程状态文件中读取状态信息;

如果目标子进程不存在,Java应用进入后续操作;

预设第二时间间隔大于预设第一时间间隔。

通过上述方法,当存在目标子进程因异常退出,而没有记录到相应的状态的情况时,可通过预设的第二时间间隔,根据标识信息去寻找目标子进程是否存在,就此可根据目标子进程是否存在的情况,分别作出相应的后续操作。具体地,第一时间间隔和第二时间间隔可以同时开始计时,用户可根据需求自定义设置第一时间间隔和第二时间间隔,比如,可将第一时间间隔设置为5秒,第二时间间隔设置为10分钟,则当前线程会每10分钟根据标识去查找目标子进程,如果存在,则继续以第一时间间隔从进程状态文件中读取状态信息。

更进一步地,启动脚本于被调用后生成日志文件,日志文件记录启动脚本的运行信息和目标子进程的运行信息。优选地,日志文件可只记录目标子进程以及启动脚本的输出信息。通过上述方法,用户可通过查看日志文件的内容,能清楚知道启动脚本和目标子进程各自的运作信息和状态信息,同时还可以记录错误信息,例如目标子进程找不到,或者目标子进程启动报错等。通过生成日志文件并记录运行信息,可方便提供给用户清楚了解流程定位情况。

较佳地,目标子进程的执行结果以返回值的形式输出,对输出的返回值进行编译以形成执行结果信息并写入进程状态文件中。执行结果以返回值的形式输出,再将返回值编译成对应的执行结果信息,可方便在多种运行环境下顺利执行。具体地,目标子进程的执行结果一般情况可为执行成功和执行失败,将执行成功记为0,执行失败记为1,此外当出现其他错误情况,也可将其视为执行失败,将多种执行情况简化为两种(执行成功记为0,执行失败记为1,其他情况也记为1),可减轻执行环境的工作量需求,接着将返回值编译成对应的执行结果信息,方便用户阅读,用户可迅速得知目标子进程的执行结果信息。

请参阅图2,本发明还公开了一种Java应用的运行系统,其包括:

第一调用模块10,用于Java应用的当前线程调用启动脚本,启动脚本设置有Java应用的各线程与各目标可执行的程序或脚本之间的对应关系;

生成模块11,用于启动脚本生成一个进程状态文件,并将第一状态信息写入进程状态文件,第一状态信息包括启动脚本的初始化状态信息以及在初始化完成后和调用相应的目标可执行的程序或脚本之前所生成的运行中状态信息;

第二调用模块12,用于启动脚本调用与当前线程对应的目标可执行的程序或脚本,目标可执行的程序或脚本启动目标子进程;

写入模块13,用于将目标子进程的执行结果信息作为第二状态信息写入进程状态文件中;

第一读取模块14,用于调用启动脚本后,当前线程以预设第一时间间隔从进程状态文件中读取状态信息;

第一进入模块15,用于当前线程读取到目标子进程的执行结果信息时,Java应用进入后续操作。

较佳地,运行系统还包括:

检测模块,用于调用启动脚本后,当前线程以预设第二时间间隔依据标识信息去查找目标子进程是否存在;

第二读取模块,用于如果目标子进程存在,当前线程继续以预设第一时间间隔从进程状态文件中读取状态信息;

第二进入模块,用于如果目标子进程不存在,Java应用进入后续操作;

预设第二时间间隔大于预设第一时间间隔。

较佳地,启动脚本于被调用后生成日志文件,日志文件记录启动脚本的运行信息和目标子进程的运行信息。

较佳地,目标子进程的执行结果以返回值的形式输出,对输出的返回值进行编译以形成执行结果信息并写入进程状态文件中。

上述快速Java应用的运行系统的具体工作过程详见上述Java应用的运行方法,在此不再赘述。

请参阅图3,本发明还公开一种Java应用的运行装置,其包括一个或多个处理器21、存储器20以及一个或多个程序,其中一个或多个程序被存储在存储器20中,并且被配置成由一个或多个处理器21执行,程序包括用于执行上述Java应用的运行方法的指令。

最后,本发明还公开一种计算机可读存储介质,其包括测试用计算机程序,计算机程序可被处理器执行以完成上述Java应用的运行方法。

以上所揭露的仅为本发明的较佳实例而已,当然不能以此来限定本发明之权利范围,因此依本发明申请专利范围所作的等同变化,仍属于本发明所涵盖的范围。

相关技术
  • Java应用的运行方法、系统、装置及计算机可读存储介质
  • java应用接口管理方法、系统、装置及计算机可读存储介质
技术分类

06120112179980