我正在寻找现有的解决方案来解决将配置分发到 Java 应用程序的问题。
一个简单的例子:将有一个管理所有配置的主应用程序(配置服务器)C。当应用程序 A 启动时,它会注册到服务器 C 并获取正常工作所需的配置。显然,每个应用程序都应该由服务器进行身份验证,并且服务器由应用程序进行身份验证,可能使用证书。服务器保存每个应用程序的配置。
我知道从头开始设计这样的架构应该不难,但我很想知道是否有针对此问题的现有解决方案。
我正在寻找现有的解决方案来解决将配置分发到 Java 应用程序的问题。
一个简单的例子:将有一个管理所有配置的主应用程序(配置服务器)C。当应用程序 A 启动时,它会注册到服务器 C 并获取正常工作所需的配置。显然,每个应用程序都应该由服务器进行身份验证,并且服务器由应用程序进行身份验证,可能使用证书。服务器保存每个应用程序的配置。
我知道从头开始设计这样的架构应该不难,但我很想知道是否有针对此问题的现有解决方案。
有几个 Apache 项目
ZooKeeper http://zookeeper.apache.org/,用于分布式配置和协调
Commons Configuration http://commons.apache.org/configuration/被广泛使用,但我不确定它是否支持相互认证(你会使用数据库配置源)
您可能需要考虑在Curl之上构建一个解决方案,这是一个开源的命令行实用程序,可以从 URL 下载文件并将该文件写入标准输出。例如,执行将从指定的 Web 服务器curl -sS http://someHost/file.cfg
下载。file.cfg
这些-sS
选项指示 Curl 打印错误消息,但不打印任何进度诊断。Curl 支持许多协议,包括 HTTP、FTP、LDAP 及其安全变体。
Java 应用程序可以: (1) 执行Runtime.getRuntime().exec("curl -sS ...")
以使用 Curl 从某处下载配置文件的内容;然后(2)用你喜欢的任何配置解析器解析它。
为了省去你对(1)的重复造轮子,我建议你下载Config4J的源代码,看看org.config4j.Util.execCmd()
方法的实现。