即使在用户注销后也在Windows中运行Java进程

即使在用户注销后也在Windows中运行Java进程,java,windows,windows-services,Java,Windows,Windows Services,我有一个批处理文件,它在Windows2003服务器中启动Java进程。根据安全策略,如果用户在某段时间内处于非活动状态,则该计算机的用户将被强制注销。问题是,当用户注销时,进程也会停止 我计划了一个新任务(控制面板->计划任务),并选择了“当我的计算机启动时”选项,并在那里提供了用户帐户的详细信息。但它似乎没有任何效果,用户仍然注销,进程也将终止。要使此更改生效,是否需要重新启动?重启后,我会实现我期望的目标吗(让流程保持活力) 或者,将此进程作为Windows服务运行是否可以解决此问题?如果

我有一个批处理文件,它在Windows2003服务器中启动Java进程。根据安全策略,如果用户在某段时间内处于非活动状态,则该计算机的用户将被强制注销。问题是,当用户注销时,进程也会停止

我计划了一个新任务(控制面板->计划任务),并选择了“当我的计算机启动时”选项,并在那里提供了用户帐户的详细信息。但它似乎没有任何效果,用户仍然注销,进程也将终止。要使此更改生效,是否需要重新启动?重启后,我会实现我期望的目标吗(让流程保持活力)

或者,将此进程作为Windows服务运行是否可以解决此问题?如果是这样,您能告诉我如何使Java程序或批处理文件作为Windows服务运行吗?我不希望使用任何其他第三方工具或库


谢谢

如果您希望它在计划任务下运行,您必须确保没有选中“仅在用户登录时运行”,这通常意味着您需要提供密码

windows服务将是实现这一点的正常方式:它是第三方,但有很多人使用它


如果您确实不想使用第三方方法,可以在WIndows NT或更高版本上使用,但它不是专门为Java设计的。

使用srvany.exe包装流程并作为服务启动也可以

我正在使用windows服务启动java进程。
我想它的工作原理与前一篇文章中提到的srvany.exe类似。

我不知道这是否相关,但我们正在使用jvm的标志,以便它不会在注销时关闭

"java -Xrs"
根据我的分析

空闲解决方案是编写一个VC++(.net)Windows服务创建程序,以将.bat/.exe作为系统服务启动,并使用所有必需的回调方法调用SCM

注意: 1.使用srvany.exe包装该进程将不起作用,因为它没有任何到SCM(服务控制管理器)的回调进程。
2.java服务包装器是第三方API(许多是LGPL许可的)

谢谢你的回复。是的,我没有设置特定的选项,我提供了密码详细信息。我在另一个线程中了解了Java服务包装器。我计划把它作为最后的手段。我喜欢Java服务包装器。我已经使用它几年了,它工作得很好。计划任务的问题是,默认情况下,它将以“低于正常”的优先级运行进程。当服务器处于某些负载下时,这可能会导致性能问题