使用JNDI进行分布式配置

Jam*_*dle 6 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上的值并将该更改广播到使用它的所有应用程序将是一件好事.

其他考虑

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

Sas*_*asi 1

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