自己的一时兴趣,想用web来实现调用cmd开启数据库服务,现在功能已经实现,调用cmd我写了个线程类,我想实现的是,当这个服务被成功开启的时候,我才会返回内容到前台,而目前是只要进后台,马上就返回前台了,当然,命令成功调用。也许我说得不清楚,能理解的请给意见,如何能在成功开启服务的时候,才返回消息到前台。

解决方案 »

  1.   

    不推荐等待服务开启成功后才返回前台,万一开启过程比价漫长,前台岂不是跟假死似的?建议可以考虑在开启服务命令执行完毕后,Ajax定期查询下服务当前状态,直到启动成功或用户取消。
      

  2.   

    这个方法好,其实我启动服务的时候,也是在线程中一直扫瞄服务状态的,当扫瞄到成功状态,线程停止,servlet得到获取状态值,返回前台,但是很奇怪我后台还在执行,前台已经接收到消息了,说明servlet并不等待这个线程,当然,也可能是我代码有问题,我想了一下,用你这方法,能成功。还是请问下,ajax和这线程会冲突么?还有,我启动的是windows服务,这个命令已经抛出,即使我关了tomcat,它应该也还是会继续执行这个命令,我可以中止这个命令?
      

  3.   

    “但是很奇怪我后台还在执行,前台已经接收到消息了,说明servlet并不等待这个线程”
    ——那要看你的Servlet是怎么等待扫描线程结束其扫描任务的了;技术上肯定是可行的,一般是:
    Thread worker = new XXOO();
    worker.start();
    worker.join(); // 等待线程的run结束
    “我可以中止这个命令?”
    ——不行,强行终止只有借助操作系统发出对进程的kill命令。