因?yàn)槠綍r(shí)Tomcat在windows上的重啟一般都是用vbs或者是 .bat腳本來(lái)寫(xiě)的.只要做能做到用JAVA調(diào)用這兩種 腳本就可以了. 在JAVA的API里面.可以用代碼控制本地的可執(zhí)行文件 而不能直接調(diào)用腳本.因此需要把腳本轉(zhuǎn) 換成可執(zhí)行文件可以下載 visualVBS來(lái)把vbs腳本轉(zhuǎn)換成.exe .bat轉(zhuǎn)換的腳本更多.網(wǎng)上搜索一下就能找到了. 之后在線程里面直接調(diào)用JAVA API里面的執(zhí)行代碼就可以 做到重啟TOMCAT了.DEMO: 首先是重啟腳本,寫(xiě)成.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)專業(yè)為企業(yè)提供簡(jiǎn)陽(yáng)網(wǎng)站建設(shè)、簡(jiǎn)陽(yáng)做網(wǎng)站、簡(jiǎn)陽(yáng)網(wǎng)站設(shè)計(jì)、簡(jiǎn)陽(yáng)網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、簡(jiǎn)陽(yáng)企業(yè)網(wǎng)站模板建站服務(wù),十余年簡(jiǎn)陽(yáng)做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
java不能直接實(shí)現(xiàn)關(guān)機(jī)或者重啟,但是可以通過(guò)調(diào)用windows的關(guān)機(jī)命令實(shí)現(xiàn)關(guān)機(jī)
BAIDU搜索”java調(diào)用exe”有詳細(xì)的解答
電腦重啟么????
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?();
//?}
}
}
這個(gè)是startup.sh的腳本
#!/bin/bash
java -Xms512m -Xmx1024m -classpath lib/antlr-2.7.6.jar:lib/commons-collections-3.2.jar:lib/jta.jar ...... xx.MainClass%1 %2
java -cp "$CLASSPATH" xx.MainClass console.log echo $! MainClass.pid
MainClass是我服務(wù)器的啟動(dòng)入口main所在的類.
腳本也是看到網(wǎng)上其他朋友寫(xiě)的,這個(gè)腳本在服務(wù)器啟動(dòng)的同時(shí)將pid寫(xiě)到MainClass.pid中下面的是restart.sh腳本
#!/bin/bash
cat MainClass.pid | xargs kill -9
java -Xms512m -Xmx1024m -classpath lib/antlr-2.7.6.jar:lib/commons-collections-3.2.jar:lib/jta.jar ...... xx.MainClass%1 %2這個(gè)腳本就是先關(guān)閉pid為MainClass.pid的進(jìn)程
然后再啟動(dòng).
問(wèn)題是在服務(wù)器啟動(dòng)后,利用ps -aux查看進(jìn)程,沒(méi)有發(fā)現(xiàn)MainClass.pid的值
java.exe的pid是另外一個(gè)值...
重啟動(dòng)是什么意思....
反正不能是把程序關(guān)了,然后再打開(kāi)...就是電腦重啟一樣.這不可能.
軟件重啟動(dòng)是把軟件中所有組件都設(shè)置到初始狀態(tài)....
你就一個(gè)按鈕要怎么初始化.初始化自己,還是其它控件....
點(diǎn)一下把你的按鈕變一個(gè)名字是不是初始化.....
tomcat熱部署只針對(duì)class文件,你修改其他文件確實(shí)不能自動(dòng)熱部署。
中間件啟動(dòng)的時(shí)候就裝載好的文件只能重啟tomcat了或通過(guò)tomcat manager來(lái)重載。
如果在程序中有通過(guò)流的形式讀取文件的話,那么手動(dòng)修改后重新觸發(fā)讀取動(dòng)作,能生效。
你這種情況要么重啟,要么把裝載properties這些文件的動(dòng)作改成代碼來(lái)操作,而不是中間件啟動(dòng)時(shí)自動(dòng)裝載。
下面兩篇文章可能會(huì)幫到你:
鏈接里面有人介紹apache的common包里面有解決方案。