Java通过调用BAT启动程序,如果启动失败,则删除对应PID,重新启动。
-
publicvoidrestart(){
-
SimpleDateFormatm_sdfNowDate=newSimpleDateFormat("yyyyMMddHHmmss");
-
FilelogFile=newFile(m_sdfNowDate.format(Calendar.getInstance().getTime())+".log");
-
try
- {
-
log(logFile,m_sdfNowDate.format(Calendar.getInstance().getTime())+":theprogramisstarting.");
-
ResourceBundlestats=ResourceBundle.getBundle("config");
-
StringsRestartPath=stats.getString("restartPath");
-
StringsRestartName=stats.getString("restartname");
-
longnTimeBeforRestart=Long.parseLong(stats.getString("timeBeforRestart"));
-
longnTimeBeforRestartSecond=Long.parseLong(stats.getString("timeBeforRestartSecond"));
-
longnRestartTimeFirst=Long.parseLong(stats.getString("restartTimeFirst"));
-
longnRestartTimeSecond=Long.parseLong(stats.getString("restartTimeSecond"));
-
StringsPidAdress=stats.getString("pidAdress");
-
StringarrayPidAdress[]=sPidAdress.split(",");
-
StringarrayPidBefore[]=newString[arrayPidAdress.length];
-
StringarrayPidAfter[]=newString[arrayPidAdress.length];
-
StringspidGet="";
-
for(inti=0;i<arrayPidAdress.length;i++){
-
BufferedReaderxBuffReadBefore=newBufferedReader(newInputStreamReader(newFileInputStream(arrayPidAdress[i]),"UTF-8"));
- StringsPidBefore=xBuffReadBefore.readLine();
-
if(sPidBefore==null||sPidBefore.equalsIgnoreCase("")){
-
arrayPidBefore[i]="0";
-
}else{
-
spidGet=spidGet+sPidBefore+":";
- arrayPidBefore[i]=sPidBefore;
- }
- xBuffReadBefore.close();
- }
-
log(logFile,m_sdfNowDate.format(Calendar.getInstance().getTime())+":thepidgetting:"+spidGet);
-
log(logFile,m_sdfNowDate.format(Calendar.getInstance().getTime())+":waitingbeforthefirsttimerunning.");
-
Thread.currentThread().sleep(nTimeBeforRestart*1000);
-
Runtime.getRuntime().exec("cmd.exe/c"+"start/d"+sRestartPath+""+sRestartName);
-
log(logFile,m_sdfNowDate.format(Calendar.getInstance().getTime())+":runtherestartandbeginthefirsttimerunningwaiting.");
-
Thread.currentThread().sleep(nRestartTimeFirst*1000);
-
log(logFile,m_sdfNowDate.format(Calendar.getInstance().getTime())+":afterthefirsttimewaiting.");
-
for(inti=0;i<arrayPidAdress.length;i++){
-
BufferedReaderxBuffReadAfter=newBufferedReader(newInputStreamReader(newFileInputStream(arrayPidAdress[i]),"UTF-8"));
- StringsPidAfter=xBuffReadAfter.readLine();
-
if(sPidAfter==null||sPidAfter.equalsIgnoreCase("")){
-
arrayPidAfter[i]="0";
-
}else{
- arrayPidAfter[i]=sPidAfter;
- }
- xBuffReadAfter.close();
- }
-
booleanboolRestartSucess=true;
-
for(inti=0;i<arrayPidBefore.length;i++){
-
if(arrayPidBefore[i].equalsIgnoreCase(arrayPidAfter[i])){
-
boolRestartSucess=false;
-
break;
- }
- }
-
if(boolRestartSucess){
-
log(logFile,m_sdfNowDate.format(Calendar.getInstance().getTime())+":thefirsttimerestartingisOK.");
-
}else{
-
log(logFile,m_sdfNowDate.format(Calendar.getInstance().getTime())+":thefirsttimerestartingisError.");
-
for(inti=0;i<arrayPidAfter.length;i++){
-
Runtime.getRuntime().exec("ntsd-cq-p"+arrayPidAfter[i]);
-
Thread.currentThread().sleep(10000);
- }
-
log(logFile,m_sdfNowDate.format(Calendar.getInstance().getTime())+":waitingbeforthesecondtimerunning.");
-
Thread.currentThread().sleep(nTimeBeforRestartSecond*1000);
-
Runtime.getRuntime().exec("cmd.exe/c"+"start/d"+sRestartPath+""+sRestartName);
-
log(logFile,m_sdfNowDate.format(Calendar.getInstance().getTime())+":runtherestartandbeginthesecondtimerunningwaiting.");
-
Thread.currentThread().sleep(nRestartTimeSecond*1000);
-
log(logFile,m_sdfNowDate.format(Calendar.getInstance().getTime())+":afterthesecondtimewaiting.");
-
for(inti=0;i<arrayPidAdress.length;i++){
-
BufferedReaderxBuffReadAfter=newBufferedReader(newInputStreamReader(newFileInputStream(arrayPidAdress[i]),"UTF-8"));
- StringsPidAfter=xBuffReadAfter.readLine();
-
if(sPidAfter==null||sPidAfter.equalsIgnoreCase("")){
-
arrayPidAfter[i]="0";
-
}else{
- arrayPidAfter[i]=sPidAfter;
- }
- xBuffReadAfter.close();
- }
-
booleanboolRestartSucessSecond=true;
-
for(inti=0;i<arrayPidBefore.length;i++){
-
if(arrayPidBefore[i].equalsIgnoreCase(arrayPidAfter[i])){
-
boolRestartSucessSecond=false;
-
break;
- }
- }
-
if(boolRestartSucessSecond){
-
log(logFile,m_sdfNowDate.format(Calendar.getInstance().getTime())+":thesecondtimerestartingisOK.");
-
}else{
-
log(logFile,m_sdfNowDate.format(Calendar.getInstance().getTime())+":thesecondtimerestartingisError.");
- }
-
log(logFile,m_sdfNowDate.format(Calendar.getInstance().getTime())+":theprogrameisover.");
- }
- }
-
catch(Exceptione)
- {
-
log(logFile,m_sdfNowDate.format(Calendar.getInstance().getTime())+":theprogramhassomeproblem:"+e.toString());
- }
- }
-
publicvoidlog(Filefile,StringxsContent){
-
try{
-
FileOutputStreamfout=newFileOutputStream(file,true);
-
Stringscontent=xsContent+"\n";
-
byte[]b=scontent.getBytes();
- fout.write(b);
- fout.close();
-
}catch(Exceptione){
- e.printStackTrace();
- }
- }
分享到:
相关推荐
本文将深入探讨如何使用Java调用BAT文件,以及在这个过程中可能遇到的问题和解决方案。 首先,理解基本原理:Java通过`Runtime.getRuntime().exec()`方法来执行外部命令,这包括运行批处理文件。这个方法允许Java...
这篇博客“java调用bat批处理与sh脚本”将详细讲解如何在Java程序中实现这一功能。 首先,我们要理解Java是如何与操作系统进行交互的。Java提供了`Runtime`类和`ProcessBuilder`类,这两个类都可以用来执行外部命令...
首先,我们需要理解Java调用外部程序的基本原理。在Java中,我们可以使用`Runtime`类或`ProcessBuilder`类来执行操作系统级别的命令,例如运行bat文件。以下是一个简单的示例,展示如何使用`Runtime.getRuntime()....
java执行bat文件方法,其实网上也有很多,我的稍微封装了一下而已
java创建并调用bat文件
总结来说,Java调用BAT批处理文件不弹出CMD窗口的关键在于使用"start /b"组合,并结合异常处理和进程状态检查,确保批处理文件的正确执行。如果需要进一步的交互,可以使用ProcessBuilder类来更精确地控制命令行操作...
用Java写的,生成一个bat再调用,按时间从小到大排序,在指定的文件夹下为每个压缩文件单独建一个文件夹,需安装7z
最后,我们来讲解如何调用BAT批处理文件。批处理文件通常包含一系列的DOS命令,通过Java调用这些文件可以执行更复杂的操作。以下是示例代码: ```java public class BatchFileRunner { public static void main...
"JAVA代码实现远程操作服务器文件" Titulo: JAVA代码实现远程操作服务器文件 JAVA代码实现远程操作服务器文件是指使用JAVA语言实现远程操作服务器文件的功能,实现FTP,共享文件夹操作。该功能可以实现远程服务器...
在Java编程中,有时我们需要执行操作系统级别的命令,例如运行批处理文件(bat文件)来完成特定的任务。然而,当我们直接使用`Runtime.getRuntime().exec()`方法执行bat命令时,可能会遇到阻塞问题。这个问题通常...
Java远程调用批处理文件是将Java编程与批处理脚本结合的一种技术,它允许Java程序执行在远程服务器上的批处理任务,而无需人工干预。这通常涉及到网络通信和进程间交互,使得分布式系统能够更加灵活地管理和调度任务...
- `PR_OTHER_SYSTEM_DATA_IMPORT.prc`: 这可能是一个存储过程,用于导入其他系统数据,它可能包含了调用BAT文件以完成数据转换或加载的逻辑。 - `权限.SQL`: 文件名暗示这可能是一个SQL脚本,用于设置执行这些操作所...
在IT行业中,我们经常利用BAT文件来调用Java程序,特别是在需要重复执行或者集成到系统启动流程中的时候。下面我们将详细介绍如何创建和使用BAT文件来调用Java程序。 首先,你需要有一个Java程序。在给定的描述中,...
这样,只需双击.bat文件,就可以自动调用Java虚拟机(JVM)运行我们的Java程序。下面,我们将详细探讨如何实现这个过程以及涉及的相关知识点。 首先,Java程序运行需要Java开发工具包(Java Development Kit,简称...
java使用jacob包,调用VS2010编译的COM动态库 其中,包括如下信息: 1、jacob支持JDK1.6、1.7、1.8,支持win32、win64 2、附带有调用COM的java示例 3、运行run.bat,将测试示例一键打包,并同时输出测试结果(实例中...
标题中的“登录使用vbs文件调用bat格式的其他模块儿”揭示了这是一个关于系统登录过程的实现方式,其中利用了Visual Basic Script (VBS) 和Batch(BAT)脚本技术。VBS是一种脚本语言,常用于Windows环境中执行自动化...
### bat文件调用Java入门实例解析 #### 一、引言 在计算机编程领域中,批处理文件(.bat)是一种常用于Windows操作系统中的脚本文件。它通过一系列的命令来自动化执行特定任务,比如启动应用程序或执行系统操作。...
本文将详细介绍如何使用Bat文件调用Java程序,并以"InvokeHello.bat"调用"Hello.jar"和"Hello.java"为例进行讲解。 首先,让我们了解批处理文件(Bat文件)。批处理文件是Windows操作系统中的脚本文件,它包含一...
这个源码包专注于通过Java调用FFmpeg工具集来实现各种视频处理功能。FFmpeg是一款强大的跨平台开源工具,它包含了用于处理音频和视频的一系列库和命令行工具。以下是基于这个源码包可能涉及的关键知识点: 1. **...
- Sample1.cpp和Sample1.h构成了C/C++端的实现,它们将被编译成动态链接库供Java调用。 通过以上步骤,我们可以看到,JNI允许Java和C/C++代码无缝集成,实现了跨语言的混合编程。这不仅扩展了Java的功能,还能利用...