【问题标题】:How do I update data to all application java of shared database如何将数据更新到共享数据库的所有应用程序 java
【发布时间】:2013-12-30 17:32:28
【问题描述】:

我正在创建一个 Web 应用程序。相同的应用程序将在不同的机器上运行,但是 他们将使用通用数据库。当应用程序启动时,它将从数据库中获取所有数据。 但是当我从一个应用程序更新数据时,其他正在运行的应用程序如何知道该数据 已更新,我想当我从任何应用程序更新数据库时,其他运行 应用程序将立即收到通知,他们应该更新他们的数据。

一种可能的解决方案是我可以将所有应用程序 URL 放在一个列表中,然后在更新值之后 我将向所有应用程序发送请求,但如何使用发送重定向来执行此操作。这是正确的方法吗?或者是他们任何其他最简单的方法来做到这一点。请帮帮我。

【问题讨论】:

  • 您的网络应用程序的架构是什么?特别是它的数据库层。是普通的JDBC吗?
  • 我正在使用 JPA,我会很少更新数据,比如一个月一次。我创建了一个将更新其数据的 servlet,但问题是我将如何在应用程序之外调用此 servlet,我有一个所有应用程序 URL 的列表。
  • 您的所有应用程序都使用JPA吗?
  • 是的,这是同一个应用程序,只是它会在tomcat的5或6台机器上运行。

标签: java jsp requestdispatcher


【解决方案1】:

是否需要在启动时加载一次数据?如果不是,您可以直接从数据库中读取缓存失效时间较短。

如果您的应用需要“几乎立即”同步,我会这样做:

您可以设置一个消息服务器来创建一个 JMS 主题。所有客户端都将收听来自该主题的消息。当其中一个应用程序更新数据库中的某些内容时,它将向该主题发送一条消息。其余应用将收到消息并进行更新。

【讨论】:

  • 谢谢@Dmoniy,我会试试这个。但是我会很少更新数据,比如一个月一次,消息服务会减慢我的应用速度吗?
  • @RockyMajumdar - 如果您的要求不是实时的并且您使用成熟的应用服务器(如GlassFish),您可以将更新 servlet 设置为在预定时间运行(使用计时服务)。
  • @RockyMajumdar 它不会减慢应用程序的速度,但可能会稍微减慢您的服务器速度。消息服务器通常是一个单独的应用程序,它会消耗一些内存。不应该有太多的 CPU 使用率,因为您不会经常使用服务器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-20
  • 1970-01-01
  • 1970-01-01
  • 2018-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多