因为需求,我把print.jar做成了print.exe,并由这个exe创建了一个服务(PrintService),
以便每次登录系统都能自动运行,同时也方便了用户手动停止或者启动该exe。
这样当PrintService启动后,任务管理器中会同时存在这两个线程:print.exe javaw.exe
现在的问题是,当注销用户(LogOff)后,再登录(LogIn)时,print.exe虽然还留着,但是javaw.exe已经被关闭了,
这样PrintServices就不好用了。查了半天,也不知道如何解决,只好在这里求救了。
在线等。。

解决方案 »

  1.   

    要不写个监测程序,当javaw.exe被kill的时候, 从新启动一下?
      

  2.   

    建议你到jre的目录中,查看一下有没有错误日志文件,我感觉可能是由于当前jre版本有个Bug自动退出的,莫名其妙的关闭java程序我遇到过。
      

  3.   

    to k7sem:
    >要不写个监测程序,当javaw.exe被kill的时候, 从新启动一下?
    我也这么想过,再做一个Service来监听,一旦javaw全部被kill时再重起一下上面的PrintService.
    这是最后的手段,万不得已的时候再这么做吧。刚才看了一下service的type和start等属性的配置,觉得从配置Service的配置上下手不可行。
    不知道注销时Window关闭程序有什么样的判断标准,是否可以设置javaw的相关属性来控制?
      

  4.   

    print.exe执行完了,javaw.exe就关闭。你要不能启动Tomcat来维持javaw.exe的执行?
      

  5.   

    > print.exe执行完了,javaw.exe就关闭。你要不能启动Tomcat来维持javaw.exe的执行?如果print.exe能"执行完",那还要service干嘛~~ 
    print.exe加入了对读卡器的监听处理,如果不给它发送"-stop"命令,它是不会执行完的。
    另外,tomcat服务运行的时候,javaw.exe并没有被启动。
    tomcat用的是jvm,我也在试着把print.exe改成基于jvm的。
      

  6.   

    因为需求,我把print.jar做成了print.exe,并由这个exe创建了一个服务(PrintService),
    这个进程可能是由于你的服务的原因,
      

  7.   

    to 楼上的哥们,注销后除了service和关键进程,其他的像application之类的进程会被系统自动关闭的。
    比如开着一个applet程序后然后切换到别的用户,这个applet程序肯定不会继续运行了。加班到现在,问题终于解决,松口气了。。先用JNI调用JVM.dll来启动jvm,设置好jvm参数。(设定的参数和配置tomcat5w.exe服务的jab标签一样)
    然后查找位于jar中要运行的Class的main函数并调用。另)突然发现,tomcat5w.exe不仅可以自己设置启动停止class,mathod,还有arguments和mode
    如果它能够由用户设置服务名称,那将会是一个非常好用的服务添加工具,而我也用不着花了一整天的时间来jni了。
    不过刚才看了 不是一个人 的blog: [又一个将tomcat服务做成windows服务的方法]
    http://kfan.blog.hexun.com/16485640_d.html
    他通过修改bat文件可以自己设置服务名称,也是个好办法(群众的力量是伟大的)
    我现在用的Tomcat5.5,没有bat文件,只有一个只能改配置参数不能改服务名的tomcat5w.exe,想要bat文件,得找5.5以前的的版本啦。
      

  8.   

    文件网(http://www.wenjian.cn)上说javaw.exe 是存放在 "C:\Program Files" 下的子目录 - 一般是 C:\WINDOWS\system32\ 或 C:\Program Files\Java\jre1.5.0_02\bin\。