Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Apache Commons配置跟踪更改_Java_Apache_Configuration_Change Tracking_Apache Commons Config - Fatal编程技术网

Java 使用Apache Commons配置跟踪更改

Java 使用Apache Commons配置跟踪更改,java,apache,configuration,change-tracking,apache-commons-config,Java,Apache,Configuration,Change Tracking,Apache Commons Config,对于即将到来的项目,我计划使用ApacheCommons配置 我想使用该库从数据库中读取和写入给定应用程序的所有配置 我们要求跟踪所有配置更改(或对配置进行版本控制)。此更改跟踪也应存储在数据库中 配置更改并不经常发生 我想知道实现此更改跟踪功能的最佳方法是什么? Apache Commons本身是否有一些支持?是否有其他适合的框架/库 不幸的是,我认为Apache Commons配置和您对更改跟踪配置数据库的需求之间没有任何重叠 如果您需要将配置存储在数据库中,我想您可能需要另一个框架或推出自

对于即将到来的项目,我计划使用ApacheCommons配置

我想使用该库从数据库中读取和写入给定应用程序的所有配置

我们要求跟踪所有配置更改(或对配置进行版本控制)。此更改跟踪也应存储在数据库中

配置更改并不经常发生

我想知道实现此更改跟踪功能的最佳方法是什么?
Apache Commons本身是否有一些支持?是否有其他适合的框架/库

不幸的是,我认为Apache Commons配置和您对更改跟踪配置数据库的需求之间没有任何重叠

如果您需要将配置存储在数据库中,我想您可能需要另一个框架或推出自己的解决方案。重新。数据库,2个想法:

  • 您可以使用有效的起始/截止日期存储配置。当前配置将是一个具有null valid to date的配置,在更新配置时,您将设置valid to date
  • 有些数据库支持版本化数据的概念。例如,Oracle有一种功能,您只需重新编写数据库实体,Oracle就可以记录该表当时的一个版本(具体情况可能要复杂得多)。如果您只是想查看配置更改的历史记录以便进行审计,那么这可能是一个有用的解决方案
  • 另一个解决方案是使用SCM管理您的配置,并在发布时打包/部署此类配置。e、 g.在源代码存储库中创建dev/test/prod配置,并在其中管理更改。将这些配置打包到可部署的环境中,并发布到适当的环境中。您具有SCM的更改跟踪功能,但无法轻松跟踪已部署环境中发生的更改。您的变更管理流程可能/可能不允许这样做


    上述修订版本将允许您在部署的环境中使用SCM解决方案,例如将配置签出到prod环境中。我承认,我没见过这么多人用过。这意味着在开发环境和生产环境之间架起了一座桥梁/依赖关系,这座桥梁可能太远了。

    谢谢您的回答。你提到“另一个框架”。。。你知道符合要求的吗?经典的SCM在我们的例子中不起作用,因为应用程序的用户在生产中更改了配置。然而,某种“可嵌入SCM”可以用作Java应用程序中的库,可能会有所帮助。。。但是,我不知道任何这样的SCM…如果您确信SCM将在所有部署的计算机上可用,那么您可以使用
    java.lang.Runtime.exec()
    从java应用程序执行SCM命令。是的,创建流程会有性能开销,但是,由于您说配置更改很少发生,我认为性能开销不会成为问题。@Ciaran谢谢,但不,SCM在已部署的计算机上不可用,我也不能也不想将其作为外部依赖项。我想的是“嵌入式SCM”,因为整个SCM都是我应用程序的一部分。。。类似于“GIT作为库”。。。这将向应用程序公开API并写入某种本地(基于文件的)存储库。。。