0

我创建了一个需要作为服务运行的 Java 应用程序。对于服务包装器,我尝试使用 tanuki 和其他包装器软件。现在,我的应用程序确实作为服务运行 - 但是,它在 SYSTEM 下作为服务运行,而不是在当前登录的用户下运行。

我的应用程序有一个 UI,它不显示应用程序何时作为服务运行。我怀疑这是否已经发生,因为该服务在 SYSTEM 下运行,而不是在当前登录的用户下运行。当我运行应用程序(没有将其作为服务安装)时,UI 确实出现了,我可以看到 java 进程在当前用户的 id 下运行,而在作为服务安装时它在 SYSTEM 下运行。

现在,如果没有 UI,我的应用程序就什么都没有了。当系统启动并且 UI 也需要显示时,我需要应用程序作为服务运行。

有没有人试图做我在这里做的事情并且遇到过类似的问题。如果是这样,您是如何解决的?有没有我可以使用的不同的包装服务并且没有这个问题。

Tanuki 的文档确实解释了将 java 应用程序设置为服务,但没有讨论带有 UI 的 java 应用程序并在当前登录的用户下运行它。

更新

只是为了让这里的人们对我想要完成的工作有更多的了解——我试图在我的应用程序中实现的行为类似于 Dropbox 或 Yahoo Messenger 或任何其他软件的行为Windows 启动并继续在后台运行,允许用户使用系统托盘图标与其交互. 所以基本上所有这些都是用 Java/Swing 构建的。现在,当涉及到应用程序的部署时——我可以独立运行它,但运行 jar 文件或为其创建和运行可执行包装器。但是,我希望该软件从 Windows 启动开始并继续作为服务在后台运行,同时允许用户进行更改并通过它设置的系统托盘图标调出 UI 与它进行交互。截至目前,它确实作为服务成功运行。它执行理想情况下应该执行的所有操作 - 只是没有系统托盘图标来调出 UI 并对其配置进行更改。

更新 - 2

好的..我尝试了高级安装程序,它确实为我打包了所有内容,以便为 Windows 生成一个 exe 安装程序。现在我只需要自动启动软件。谁能帮我这个?我在高级安装程序中没有看到自动让程序自动添加到自动启动中的选项。

链接到 tanuki 的文档 http://wrapper.tanukisoftware.com/doc/english/faq.html

4

3 回答 3

1

我想评论你的问题,但我没有足够的声誉来做这件事。所以我现在误用了答案功能。

我有一个类似的问题。我在 Windows XP 机器上使用了一段时间的 tanuki 包装器,所有登录的用户都看到了 Swing GUI。

现在我迁移到 Windows 2008 Server 并配置了当前版本的 tanuki 包装器,如下所示:

wrapper.ntservice.interactive=true
wrapper.ntservice.hide_console=true

(请参阅此处此处的文档)

Windows 服务在 LOCAL SYSTEM 帐户下运行。

但是仍然没有显示 GUI。你找到解决问题的方法了吗?

于 2012-08-29T22:34:28.717 回答
1

罗汉,请看以下页面:

http://wrapper.tanukisoftware.com/doc/english/prop-ntservice-interactive.html

您需要将服务标记为交互式,然后以 SYSTEM 用户身份运行,以使您的 GUI 显示在第一个登录的桌面上。

问题是微软改变了从 Windows 2008 和 Vista 开始允许执行的服务。这意味着从这些版本开始,GUI 将始终显示在用户需要切换到的沙盒桌面上。

如果您想在所有桌面上显示 GUI,在所有版本的 Windows 中,您将需要在桌面内运行 JVM。

干杯,莱夫

于 2012-07-19T07:12:35.400 回答
0

不要认为你应该有一个带有服务的 UI。把它放在启动组中吗?
UI 和应用程序有什么作用?

于 2012-07-18T23:13:29.953 回答