因为平时Tomcat在windows上的重启一般都是用vbs或者是 .bat脚本来写的.只要做能做到用JAVA调用这两种 脚本就可以了. 在JAVA的API里面.可以用代码控制本地的可执行文件 而不能直接调用脚本.因此需要把脚本转 换成可执行文件可以下载 visualVBS来把vbs脚本转换成.exe .bat转换的脚本更多.网上搜索一下就能找到了. 之后在线程里面直接调用JAVA API里面的执行代码就可以 做到重启TOMCAT了.DEMO: 首先是重启脚本,写成.vbs set WshShell=WScript.CreateObject("WScript.Shell") WshShell.Run("net stop tomcat5") WScript.Sleep(10000) WshShell.Run("net start tomcat5") 然后用visualVBS转换成.exe文件 然后做一个类,重启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
创新互联专业为企业提供简阳网站建设、简阳做网站、简阳网站设计、简阳网站制作等企业网站建设、网页设计与制作、简阳企业网站模板建站服务,十余年简阳做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
java不能直接实现关机或者重启,但是可以通过调用windows的关机命令实现关机
BAIDU搜索”java调用exe”有详细的解答
电脑重启么????
processbuiler,process,执行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 ();
// }
}
}
这个是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是我服务器的启动入口main所在的类.
脚本也是看到网上其他朋友写的,这个脚本在服务器启动的同时将pid写到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这个脚本就是先关闭pid为MainClass.pid的进程
然后再启动.
问题是在服务器启动后,利用ps -aux查看进程,没有发现MainClass.pid的值
java.exe的pid是另外一个值...
重启动是什么意思....
反正不能是把程序关了,然后再打开...就是电脑重启一样.这不可能.
软件重启动是把软件中所有组件都设置到初始状态....
你就一个按钮要怎么初始化.初始化自己,还是其它控件....
点一下把你的按钮变一个名字是不是初始化.....
tomcat热部署只针对class文件,你修改其他文件确实不能自动热部署。
中间件启动的时候就装载好的文件只能重启tomcat了或通过tomcat manager来重载。
如果在程序中有通过流的形式读取文件的话,那么手动修改后重新触发读取动作,能生效。
你这种情况要么重启,要么把装载properties这些文件的动作改成代码来操作,而不是中间件启动时自动装载。
下面两篇文章可能会帮到你:
链接里面有人介绍apache的common包里面有解决方案。