【发布时间】:2011-10-21 04:07:59
【问题描述】:
我想在计算机上安装一个监控系统(该程序是一个 jar 文件)并在每次任何用户登录时在启动时运行它。但是,我不希望用户能够终止它,因为这样就无法再对其进行监控了。
我们尝试了几种方法:
将其安装为服务 - 这里的问题是我们的程序不再工作;它无法连接到正在监视它的计算机。为此,我们使用了“Yet Another Java Service Wrapper”,并研究了其他一些可以帮助我们将其安装为服务的包装器。
在启动时运行程序(使用文件夹启动),但不授予基本用户编辑/删除/弄乱文件的权限。但是,这似乎会减慢整个计算机的速度?当我们直接运行 bat 文件执行 jar 时,不会发生这种情况。另一个问题是用户可以直接进入任务管理器并杀死 java 进程。
我们尝试了前一个的变体来解决进程被杀死的问题,方法是让另一个进程。一个将产生另一个,这两个进程将相互密切关注。如果一个终止,另一个会检测到它并运行它以再次启动它。尽管如果用户在再次重生之前足够快地杀死两个进程,则可能会出现问题,但更大的问题是有时连接到其他计算机时会出现问题。当它只有 1 个罐子时,我们没有这个问题。
有人知道如何解决这些问题吗?
这里的上下文是windows,但如果你对linux和mac有建议那就太好了!
【问题讨论】:
-
您应该找出您的代码不能作为服务工作的原因。这是确保您的应用保持运行的标准 Windows 方式。
-
它似乎在通过网络连接到其他计算机时出现问题。端口是开放的,但它没有收到任何东西。作为服务运行的程序是否受限于它们的功能?
标签: java windows jar installation startup