我有一个batch file在Windows 2003服务器中启动Java进程。 根据安全策略,如果用户在一段时间内处于非活动状态,那么该机器的用户将被强制注销。 问题是,当用户注销时,该进程也会死亡。
我安排了一个新的任务(控制面板 – >计划任务),并select了“当我的电脑启动”选项,并在那里提供了用户帐户的详细信息。 但它似乎没有任何效果,用户仍然注销并且进程死亡。 是否需要重新启动才能使此更改生效? 重启后,我会达到我期望的(保持进程活着)?
或者,将运行此过程作为Windows服务解决问题? 如果是这样,你可以让我知道我怎样才能使Java程序或batch file作为Windows服务运行? 我不想使用任何其他第三方工具或库。
谢谢
用srvany.exe打包进程并作为服务启动也可以。
如果您希望在预定任务下运行,您必须确保您没有“仅在用户登录时运行”选中,这通常意味着您需要提供密码。
一个Windows服务将是这样做的正常方式: Java服务包装是第三方,但负载的人使用它。
如果您真的不想使用第三方方法,则可以在Windows NT或更高版本上使用svrany.exe(http://support.microsoft.com/kb/137890) ,但不是专门为Java设计的。
我正在使用Java Service Wrapper作为Windows服务启动java进程。 我想它和之前发布的srvany.exe类似。
我不知道这是相关的,但我们正在使用jvm的标志,所以它不关闭注销
"java -Xrs"
链接到太阳描述-Xrs
根据我的分析,
空闲解决方案将编写一个VC ++(.net)Windows服务创建程序来启动.bat / .exe作为一个系统服务,所有需要的回调方法给SCM。
注意 :1.使用srvany.exe封装进程将不起作用,因为它没有任何回调到SCM(服务控制管理器)的进程。 2.和java服务包装是第三方API(许多LGPL许可)。