【问题标题】:Getting external data into web application将外部数据导入 Web 应用程序
【发布时间】:2013-01-04 04:01:49
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: java jsf web-applications


    【解决方案1】:

    方法 1

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

    方法二

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

    【讨论】:

    • 更好的方法是使用消息驱动 Bean (MDB)。 Web 应用程序可以将消息发布到 MDB,然后 MDB 会完成他们需要做的所有事情;)。连接到后端 JSF 组件的 AJAX 的小组合将实现类似的行为。
    • Indeed Messaging 是一种更好的方法,但由于他使用的是 Tomcat Web 服务器而不是 J2EE 应用服务器,因此这是不可能的。
    • TomEE+ 可能是一个选项 :)。否则,我会使用 JBoss AS 7,它也很轻量级。
    • 不错的选择,但仍然需要从现有的 Tomcat 服务器中移除/进行更改。由@ChillyMc 决定。
    • 我不拘泥于使用 Tomcat,并且愿意接受其他建议。除了已经学习 Web 应用程序之外,我会更担心 J2EE 环境的学习曲线!
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-29
      • 2018-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-20
      相关资源
      最近更新 更多