现在的情况是:我有一个用java写的服务程序service.jar(放在e:\Service下),我想写一个服务守护程序,这个守护程序能够完成启动和停止service.jar这个服务,不知道有没有什么办法?

解决方案 »

  1.   

    楼上提到的使用Runtime的exec方法我已经试过了,倒是能够启动,但是却有一个关键问题出现了,希望大家能够讨论下。
    service.jar本身是一个服务程序,启动时为DOS窗口,当有用户使用这个服务的时候会在DOS窗口中输出些信息,譬如:当前使用用户为:张三  等。我使用一个类测试这个exec方法,这个类为:dostest.java,它的main方法里面有一句exec(“java -jar service.jar”);
    我首先要打开一个DOS窗口,然后输入:java dostest
    结果运行之后界面为:
    -------------------------------
    e:\Service>java dosteste:\Service>java -jar service.jar
    -
    ------------------------------
    注意这里“-”表示光标停在这里,没有动作
    当我使用一个用户连接这个service.jar的时候,在DOS窗口中并没有相应的“当前使用用户为:XX”的信息,请问如何才能获得这些信息?
      

  2.   

    哪位高手帮忙指点一下?先谢过了~!
    我只是想获得由exec("java -jar service.jar")方法执行的DOS命令:java -jar service.jar所启动的那个进程的屏幕输出而已...........
      

  3.   

    Process process = Runtime.getRuntime().exec("java -jar service.jar");
    InputStream in = process.getInputStream();
      

  4.   

    笨方法的自动关闭
    service.jar里面增加一个线程类,把运行的线程类都引用进来,然后每隔一段时间就去new一个date,发现时间到了就把所有的注册进来的线程都关闭,哈哈
      

  5.   

    你在你的test里面用反射启动services,要退出就关闭test即可。
      

  6.   

    figoren(figoren)的方法已经使用过了,还是没有输出
    wxg1008(嘻嘻哈哈) 好像误会了我的意思,我不是想自动关闭,而是想关闭它的时候就关闭它,而且关闭问题我已经解决,现在的问题是如何获得启动的service.jar的输出qjyh(牵机引幻) 的方法是什么意思?什么叫反射启动?能否详细说明,谢谢~~
      

  7.   

    1.启动Runtime.getRuntime().exec,然后守护进程和运行进程建立socket通讯,运行进程收到守护进程的消息再关闭自身。2.另外我记得Runtime.getRuntime().exec可以得到调用进程的进程号,如果调用kill命令是不是也可以关闭那个java进程?