使用JNDI进行分布式配置

时间:2010-01-12 16:35:06

标签: java configuration distributed jndi

我们正在研究如何在主要基于Java的部署中进行分布式配置。我们有许多应用程序,集中应用程序的配置是有意义的。 JNDI似乎是标准选择,可能会退回到像ApacheDS这样的东西(我们也可以在那里存储非Java配置)。以下是我考虑过的一些事情。有没有人尝试类似的东西?有什么建议吗?:

分布式

这将适用于多台计算机上的多个应用程序,其中一些应用程序将进行群集。理想情况下,Directory Server也应该是群集的。

轻型

JNDI对它有一点点的感觉。任何人都使用替代分布式配置机制。应用程序本身往往相对轻量级而不是完整的Java EE应用程序(无论Java EE是否仍然被认为是重量级的,并且需求肯定是重量级的,还是有争议的。)

支持回退

通常,相同的配置适用于多个应用程序(例如,多个应用程序可能连接到同一个数据库)。另一方面,某些应用程序可能需要特定配置。有时很难事先知道应用程序是使用“全局”配置还是特定的配置,因此能够首先搜索应用程序/主机特定配置然后退回将是好的。我正在考虑这样的结构:

/ global / host / application / instance或/ global / application / host / instance:

所以,首先检查一下该主机上是否存在特定于该应用程序实例的任何配置,然后检查该主机是否有针对此应用程序的特定配置,然后检查是否有任何特定的内容对于此应用程序,然后尝试全局设置。这种事情有没有最好的做法?

实时配置更改

Spring允许使用jee:jndi-lookup进行配置,您可以选择不缓存该值,这意味着每个请求都会查找它。我不确定“String”类型配置值是否有意义。它似乎也没有使用NamingListener方法来检测DS中的更改。能够更新Directory Server上的值并将更改广播到所有使用它的应用程序将是一件好事。

其他考虑因素

  • 管理不同的环境
  • 将配置添加到源代码管理,以便可以对其应用更改管理
  • 管理不同版本
  • 回滚

1 个答案:

答案 0 :(得分:1)

您是否考虑过使用数据库来存储应用程序配置? Apache Commons有一个DatabaseConfiguration类,它将您的表暴露为java.util.Properties实例(参见http://commons.apache.org/configuration/apidocs/org/apache/commons/configuration/DatabaseConfiguration.html)。