Java应用程序(带有图形用户界面)作为服务

5
我们有一个Java应用程序,它从数据库中获取一些寄存器并将它们来回发送到Web服务,没有太复杂的操作。这个Java应用程序有一个GUI,它向用户提供执行操作的相关信息,并提供配置其执行的某些方面的手段,同时使用户有机会处理可能发生的错误。
问题在于,即使用户没有登录,该应用程序也需要一直运行。我试图设置一个Windows任务,让它在计算机启动时运行,但如果发生这种情况,程序将在后台运行,界面永远不会出现。
我们可以将界面与主项目分离并分别运行,这样服务就能在后台静默运行,用户可以随意打开和关闭界面,但不幸的是,我们的项目存在耦合问题,使这条路比应该更加艰辛。
所以问题是:是否有一种方法可以设置服务,以便在用户未登录时运行,但一旦登录,界面也会出现?
我们唯一的目标平台现在是Windows。

如果没有图形用户界面,用户如何登录? - Ascalonian
用户登录操作系统。我们的应用程序没有登录/密码,因为它只在少数人可以访问的某些服务器上运行。该程序还不需要登录信息来执行其操作。它仅仅探测Web服务和数据库中的新内容以进行处理并完成其工作。 - Eduardo Z.
2个回答

3

针对你的问题:“有没有一种方法可以设置一个服务,使其在用户未登录时运行,但一旦用户登录,界面也会出现?” 答案是肯定的,这被称为JavaExe。请查看JavaExe.zip中的示例,特别是示例8或23。


我看了一下,似乎仍然必须在接口和服务类之间进行分离才能使其正常工作。此外,根据文档,它说“使Java应用程序能够在任务栏中拥有自己的图标,并可能与一个或两个菜单相关联(右键菜单和左键菜单)”。这样做是不行的。 - Eduardo Z.
为什么不让服务部分始终运行(如果配置为自动),而UI部分在用户登录时运行呢? - bb67
如果您阅读了我的初始帖子,您会发现我们在服务和应用程序部分之间面临耦合问题,这使得两者之间的分离虽然更加优雅和正确,但目前不是一个选项。换句话说,从文档中看来,为了使该策略正常工作,必须进行上述分离,而我们现在无法承担这样做的成本。 - Eduardo Z.
2
但是自Vista以来的Windows版本不再允许服务直接与用户交互。因此,为了解决您的问题,您有两个解决方案:1)将服务的UI部分分离并作为当前用户运行,就像JavaExe一样。2)或者使用Windows XP。 - bb67

0

这里的答案只是分离UI。降级到XP没有意义。您还可以将其构建为Web应用程序,并尝试利用esbeetle.com进行接口和所有逻辑。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接