最近公司有一个需要,要求在网站启动的时候需要先判断程序的版本,如果版本不匹配则退出启动,也就是说要通过程序来停止这个项目的启动,我只知道.net的ServiceController组件有这个功能,但java里哪个类有相同的作用呢,请高手指教。
解决方案 »
- Struts2.0+Spring2.5+Hibernate3.2+Dwr配置
- 求教,fckeditor上传图片成功怎么获取相对路径.
- 大虾帮忙出出主意。
- 用itext 生成 pdf 最后为什么不能删除原文件
- (struts <global-exceptions/>用法 )数据库连接抛出到页面异常方法
- 用JSP实现多级搜索问题!在线等……
- 求助:使用javascript写一个截字节的函数
- 这样一个留言板个人做大概要多久 大概什么价格呢??
- 上传文件时,遇到一新问题...
- 华为IPTV的机顶盒关于播放音频
- Struts2的Action找不到是怎么回事啊?
- web service 接口问题,用的是xfire
.net那个应该是调用了容器的方法
try {
//1 获得Server
Class server = Class.forName("org.apache.catalina.ServerFactory");
Method getServer = server.getDeclaredMethod("getServer", new Class[0]);
Object obj = getServer.invoke(server, new Object[0]);
//2 获得Services
Method findServices = obj.getClass().getDeclaredMethod("findServices",new Class[0]);
Object[] objs = (Object[])findServices.invoke(obj, new Object[0]);
for (int i = 0; i < objs.length; i++) {
Method getContainer = objs[i].getClass().getMethod("getContainer", new Class[0]);
Object container = getContainer.invoke(objs[i], new Object[0]);
Method findChildren = container.getClass().getMethod("findChildren", new Class[0]);
Object[] containers = (Object[])findChildren.invoke(container, new Object[0]);
// 3.这里是要重启动的系统的名称如/systemXXX
Object[] objss = {"/xxxx"};
Class[] cls = {java.lang.String.class};
for (int j = 0; j < containers.length; j++) {
Method temp = containers[j].getClass().getMethod("findChild", cls);
Object abmApp = temp.invoke(containers[j], objss);
if (abmApp != null) {
//可以为stop,reload
Method relaod = abmApp.getClass().getMethod("reload", new Class[0]);
relaod.invoke(abmApp, new Object[0]);
}
}
}
} catch (Exception e) {
e.printStackTrace();
} 我自己还没试,楼主自己试试看。这是调用了tomcat的jar
<listener>
<listener-class>
mypack.mylistener
</listener-class>
</listener>
然后在这个类中判断是否允许启动,如果不允许则抛出RuntimeException异常,Web服务器会认为这个应用不可用的