java - 将java应用程序作为Windows服务运行

标签 java windows apache service daemon

我有一个带有 GUI 的 Java 应用程序(用作客户端应用程序的服务器)。即使服务器重新启动后,该应用程序也必须始终运行。

为此,我使用 Apache 守护进程创建了一个 Windows 服务。

当服务器启动时,我可以看到我的服务作为系统服务运行。但是当我打开应用程序的 GUI 时,另一个实例启动。

我需要将 GUI 连接到重新启动后启动的同一实例,这可能吗?

最佳答案

Windows 服务(以及 Unix 系统上的守护进程)无法使用 GUI 运行,因为它在没有 Windows 桌面或 KDE、Gnome 等窗口管理系统的情况下启动。我对您的应用程序启动感到惊讶作为服务,因为尝试启动 GUI 元素会导致错误。

您必须将 GUI 与服务器组件分开。 GUI 然后需要通过某种协议(protocol)与服务器进行通信。因为您已经完成了您的应用程序,所以我建议选择 RMI 作为协议(protocol),这应该是最容易实现的,因为您基本上只需向您的类添加一些接口(interface)即可让 RMI 正常运行,而不是通过您的应用程序添加完整的复杂层。自己的(一个额外的服务器来接收来自客户端的命令等)。

RMI 可以设置为仅监听来自本地主机的连接,因此在安全性方面您应该也很好。

关于java - 将java应用程序作为Windows服务运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46089402/

相关文章:

java - 如何在 Java 中将 Spark DataFrame 转换为 POJO 的 RDD

javascript - 如何将表单值传递给 ChangePassword.php?

apache - 如何在 CentOS/Fedora 中为 "Let' s Encrypt"SSL 证书设置自动更新?

ruby-on-rails - 我的 Ruby on Rails 项目中没有 gem 文件,捆绑安装/更新不起作用?

java - 具有嵌入式对象的实体的 Hibernate 标准

java - 错误 无法从 CursorWindow 读取第 0 行,第 -1 列。在访问数据之前确保游标已正确初始化

Java 与 JPanel

c++ - 查找地址属于哪个堆?

java - Jar 可在 Windows 中运行,但不能在 Linux 中运行

mysql - 如何在 Windows 的命令行中运行 mysql