Running a Java process in Windows even after the user is logged out

安稳与你 提交于 2019-12-18 06:13:27

问题


I have a batch file that starts a Java process in a Windows 2003 server. As per the security policy, the users of that machine are logged off forcefully, if the user is inactive for a certain period of time. The problem is that when the user is logged out, the process also dies.

I scheduled a new task (Control Panel -> Scheduled Tasks) and selected the option of 'When my computer starts' and gave the user account details there. But it doesn't seem to have any effect, the user is still logged out and the process dies. Is a reboot necessary to make this change effective? And after the reboot, will I achieve what I'm expecting (keeping the process alive)?

Alternatively, will running this process as a Windows Service solve the problem? If so, can you please let me know how I can make a Java program or a batch file to run as a Windows Service? I would prefer not to use any other third party tools or libraries.

Thanks


回答1:


Wrapping the process with srvany.exe and launching as a service would work as well.

http://support.microsoft.com/kb/137890




回答2:


If you want it to run under Scheduled tasks you have to make sure you don't have "only run when user logged in" checked, which usually means you need to supply a password.

A windows service would be the normal way to do this: the Java service wrapper is 3rd party but loads of people use it.

If you really wanted to not use a 3rd party method you could use svrany.exe (http://support.microsoft.com/kb/137890) on WIndows NT or later, but it is not designed specifically for Java.




回答3:


I'm using Java Service Wrapper to start the java process as windows service. I guess it works similary to the srvany.exe mentioned in the previous posting.




回答4:


I don't know it this is relevant but we are using a flag to the jvm so it does not shutdown on logoffs

"java -Xrs"

Link to suns description of -Xrs




回答5:


As per my analysis,

The Idle Solution will be writing a VC++ (.net) Windows Service creation program to launch the .bat / .exe as a System service with all the required call back methods to SCM.

Note : 1. Wrapping the process with srvany.exe would not work as it does not have any call back process to the SCM (Service Control Manager). 2. And java service Wrapper is a third party API (many are LGPL licensed).



来源:https://stackoverflow.com/questions/553175/running-a-java-process-in-windows-even-after-the-user-is-logged-out

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!