因?yàn)槠綍r(shí)Tomcat在windows上的重啟一般都是用vbs或者是 .bat腳本來寫的.只要做能做到用JAVA調(diào)用這兩種 腳本就可以了. 在JAVA的API里面.可以用代碼控制本地的可執(zhí)行文件 而不能直接調(diào)用腳本.因此需要把腳本轉(zhuǎn) 換成可執(zhí)行文件可以下載 visualVBS來把vbs腳本轉(zhuǎn)換成.exe .bat轉(zhuǎn)換的腳本更多.網(wǎng)上搜索一下就能找到了. 之后在線程里面直接調(diào)用JAVA API里面的執(zhí)行代碼就可以 做到重啟TOMCAT了.DEMO: 首先是重啟腳本,寫成.vbs set WshShell=WScript.CreateObject("WScript.Shell") WshShell.Run("net stop tomcat5") WScript.Sleep(10000) WshShell.Run("net start tomcat5") 然后用visualVBS轉(zhuǎn)換成.exe文件 然后做一個(gè)類,重啟Tomcat專用 package com.uf.tool.util; public class TomcatReset { private String tomcat=""; public TomcatReset() {Configconfig=Config.getConfig(); tomcat=config.getProperties("tomcat");} public void tomcatRun(){try{ System.out.println("the command is:"+tomcat); Process child = Runtime.getRuntime().exec(tomcat); } catch
創(chuàng)新互聯(lián)長期為上千多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為相山企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè),相山網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
關(guān)閉計(jì)算機(jī)
OSVERSIONINFO OsVersionInfo; //包含操作系統(tǒng)版本信息的數(shù)據(jù)結(jié)構(gòu)
OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(OsVersionInfo); //獲取操作系統(tǒng)版本信息
if(OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
{
//Windows98,調(diào)用ExitWindowsEx()函數(shù)重新啟動(dòng)計(jì)算機(jī)
DWORD dwReserved;
ExitWindowsEx(EWX_REBOOT,dwReserved); //可以改變第一個(gè)參數(shù),實(shí)現(xiàn)注銷用戶、
//關(guān)機(jī)、關(guān)閉電源等操作
// 退出前的一些處理程序
}
重啟計(jì)算機(jī)
typedef int (CALLBACK *SHUTDOWNDLG)(int); //顯示關(guān)機(jī)對(duì)話框函數(shù)的指針
HINSTANCE hInst = LoadLibrary("shell32.dll"); //裝入shell32.dll
SHUTDOWNDLG ShutDownDialog; //指向shell32.dll庫中顯示關(guān)機(jī)對(duì)話框函數(shù)的指針
if(hInst != NULL)
{
//獲得函數(shù)的地址并調(diào)用之
ShutDownDialog = (SHUTDOWNDLG)GetProcAddress(hInst,(LPSTR)60);
(*ShutDownDialog)(0);
}
Lsass.exe 很類似
電腦重啟么????
processbuiler,process,執(zhí)行doc命令即可,so?easy
給你,小挫
import?java.io.BufferedReader;
import?java.io.BufferedWriter;
import?java.io.File;
import?java.io.IOException;
import?java.io.InputStreamReader;
import?java.io.OutputStreamWriter;
public?class?Processing
{
public?static?void?main?(?String[]?args?)
{
try
{
//?open?cmd
//?Process?process?=?Runtime.getRuntime?().exec?(new?String[]?{
//?"cmd",?"/c",?"dir"?},?null,?new?File?("e:/"));
Process?process?=?Runtime.getRuntime?().exec?("cmd");
InputStreamReader?isr?=?new?InputStreamReader?(process.getInputStream?(),?"gbk");
BufferedReader?br?=?new?BufferedReader?(isr);
//?next?command
OutputStreamWriter?osw?=?new?OutputStreamWriter?(process.getOutputStream?());
BufferedWriter?bw?=?new?BufferedWriter?(osw);
bw.write?("shutdown?-r?-f");
bw.newLine?();
bw.flush?();
bw.close?();
osw.close?();
//?read
String?line?=?null;
while?(null?!=?(?line?=?br.readLine?()?))
{
System.out.println?(line);
}
//?wait?for?termination
//?process.waitFor?();
//?process.exitValue?();
process.destroy?();
br.close?();
isr.close?();
}
catch?(IOException?e)
{
e.printStackTrace?();
}
//?catch?(InterruptedException?e)
//?{
//?e.printStackTrace?();
//?}
}
}
tomcat熱部署只針對(duì)class文件,你修改其他文件確實(shí)不能自動(dòng)熱部署。
中間件啟動(dòng)的時(shí)候就裝載好的文件只能重啟tomcat了或通過tomcat
manager來重載。
如果在程序中有通過流的形式讀取文件的話,那么手動(dòng)修改后重新觸發(fā)讀取動(dòng)作,能生效。
你這種情況要么重啟,要么把裝載properties這些文件的動(dòng)作改成代碼來操作,而不是中間件啟動(dòng)時(shí)自動(dòng)裝載。
下面兩篇文章可能會(huì)幫到你:
鏈接里面有人介紹apache的common包里面有解決方案。