0

我是一位经验丰富的应用程序开发人员,现在必须开发一个我没有太多经验的 Web 应用程序。

我正在开发一个具有许多分布式服务器组件的项目。它目前有一个客户端应用程序来监控这些组件、查看警报和日志等。每台服务器机器的状态都是通过 tcp/ip 上的专有协议传递的。

当前基于 UI 的应用程序有一个线程持续监视套接字连接的消息,一旦收到消息,就会将所有内容的当前状态存储在内存中,然后将其显示给用户。

我的问题是如何在 Web 应用程序环境中实现类似的功能。我的第一个想法是在服务器启动时创建一个类似的通信线程,然后当用户请求数据时,响应是从内存中的数据构建的,但是阅读有关启动您自己线程的 Web 应用程序的信息是不好的做法。

我已经阅读了一些关于使用 Quartz 或 TimerTask 在 Web 应用程序中运行定期计划任务的信息,但这个任务更加连续。它仍然是要走的路吗?

我正在使用在 Linux 上运行 Tomcat 的 JSF 在 Java 中开发 Web 应用程序。哦,应用程序的并发用户数量会很少。(最多 25 个,但更可能是 2 或 3 个)

4

2 回答 2

0

为什么要让这成为服务器问题?在您的客户端(浏览器)中,您可以轮询当前状态并据此调整显示。这样做可以消除很多复杂性。

至于您的客户将如何更新,这取决于您的应用程序。如果您只能允许现代浏览器,您可以查看 HTML5 WebSockets。其他选项是使用 AJAX 进行屏幕的部分更新或完整的屏幕刷新。

于 2013-01-04T08:57:44.720 回答
0

方法一

使用Quartz很好。建议不要使用 TimerTask。

方法二

我假设 Web 应用程序有某种数据库。由于您需要根据用户请求显示状态,因此您可以做的是编写一个独立的守护程序应用程序(不是 Web 应用程序)来读取服务器状态并更新对 Web 应用程序可见的表,而不是实时显示。当用户提出请求时,可以参考该表以产生输出。

于 2013-01-04T04:17:05.403 回答