javaweb中执行cmd命令无效。

janry
  • 14

环境:windows7 32、jdk1.8、tomcat7、javaweb项目

我在维护一个BS系统(私有云产品),现在需要实现自动更新功能,由于更新前需要用程序停掉tomcat服务,更新后重启tomcat服务,所以更新程序必须独立于BS系统程序,否则一旦停止tomcat服务,自身也退出了。因此我想到的解决方法是,通过java调用cmd执行一个批处理bat程序,批处理程序里停止服务、调用更新程序、重启服务。而我在做试验时发现,jsp、servlet里使用Runtime.getRuntime().exec("cmd /c start C:\update.bat");没有任何效果,也不报错,随后我建了一个java类,写了main方法做实验,竟然成功。
无论我怎么改代码,在jsp、servlet里始终没任何效果,我在想是不是tomcat的安全机制限制web程序不允许这样调用?
那么如果我想实现这样的想法,有什么办法呢?
万分感谢!

回复
阅读 4.3k
2 个回答

在windows平台试验的,命令的确可以调用。
确认路径是否写对。问题中“C:update.bat”应该写成“C://update.bat”

如果只是完成web程序的更新,是可以不重启tcomat的。
tcomat提供这样的更新机制,在默认的安装程序中有一个Manager,配置 user.xml后,可以通过api的方式实现web应用的安装,更新,卸载。

启动两个以上的tomcat不就完了吗,每次分批更新

宣传栏