什么是最佳的解决方案;“锁定文件”;spring应用程序中的模式?

什么是最佳的解决方案;“锁定文件”;spring应用程序中的模式?,spring,Spring,我正在寻找一种在spring应用程序中实现“锁文件”模式的方法。我要防止的是同一spring应用程序的多个副本同时开始使用相同的资源(例如数据库)。我知道,在unix系统中,应用程序在启动时通常会创建一个名为“.lock”的文件,如果该文件已经存在,则会拒绝启动。这将防止多个实例在同一台服务器上运行。我有一些关于将此模式应用于多个spring应用程序在同一数据库上运行的问题的想法,但我想知道是否有专门针对此问题开发的更通用或内置于框架中的内容 我也在寻找这样的解决方案,但没有找到。 要容易实施,

我正在寻找一种在spring应用程序中实现“锁文件”模式的方法。我要防止的是同一spring应用程序的多个副本同时开始使用相同的资源(例如数据库)。我知道,在unix系统中,应用程序在启动时通常会创建一个名为“.lock”的文件,如果该文件已经存在,则会拒绝启动。这将防止多个实例在同一台服务器上运行。我有一些关于将此模式应用于多个spring应用程序在同一数据库上运行的问题的想法,但我想知道是否有专门针对此问题开发的更通用或内置于框架中的内容

我也在寻找这样的解决方案,但没有找到。 要容易实施,

  • 启动时检查/创建锁文件
  • 使用JVM关闭挂钩将其删除(因此即使应用程序崩溃,它也会被删除)

如果JVM崩溃(例如内存不足),文件将不会被删除,我认为这是无法避免的。

为什么该应用程序的多个实例运行在同一个数据库上会出现问题?当不再需要数据库连接时,应用程序不应该释放它们吗?这不是释放数据库连接的问题。问题是在两个应用程序上下文中执行相同的工作可能会导致数据不一致或损坏。我相信事情可以设计成多个应用程序上下文不是问题,但这超出了范围。