0

我们在生产中的应用程序在 weblogic 上运行。它是一个基于 Spring 和 struts 的 Web 应用程序。需要对查询进行 db 加载,并能够通过 GUI 句柄即时重新加载。一些现有的实用程序文件未在 spring 中配置为 bean(此时不能),并且具有静态方法,这些方法使用静态变量/常量来在每个静态方法中运行查询。如果我必须在应用程序启动并运行时从数据库重新加载查询,我不明白 Weblogic 集群的行为方式。换句话说,我们如何确保在所有 JVM 上重新加载对静态变量的查询,以便下一次点击任何节点上的方法都会获取新加载的查询的结果?

4

2 回答 2

1

让我们看看这是否回答了您的查询。

如果您有 3 个托管服务器并且您已经在所有 3 个托管服务器上部署了 Spring 应用程序,那么 spring 将显示 3 个应用程序上下文。(每个托管服务器一个)。

他们不互相交谈,他们将在自己的服务器中运行。他们将拥有自己的一组 bean 和自己的静态变量。

因此,一台服务器上的重新加载将针对该服务器。您将不得不在所有三台服务器上重新加载静态内容,以使其反映在整个应用程序中。

如果您希望一次重新加载对所有人都可以,然后使用属性文件(或所有 3 个托管服务器可以从同一位置共享的任何其他资源,例如用于管理服务器的 JNDI,存储在文件系统上的属性文件,将您的查询存储在一些数据库表并从那里加载它 - 前提是所有应用程序都指向同一个数据库)

于 2012-08-17T09:14:36.400 回答
0

每个 WebLogic 托管服务器都有自己的 Spring 应用程序上下文(如 Vivek 所述)。

确保每个 JVM 具有一组刷新的“db 查询”的一种方法是使用共享的分布式缓存(例如 ehcache),这样无论哪个节点进行了刷新,您的数据都会被刷新。分布式缓存和缓存复制是您的问题的复杂解决方案。

于 2013-11-12T15:27:02.233 回答