我有一个运行 DDL 并采用悲观锁的数据库脚本,它负责数据库维护。我最好在(重新)启动应用程序时运行此脚本。但是,如果任何 MDB 或 Web 服务调用函数它们将被维护脚本锁定,我需要确保此代码在处理任何 MDB 或 Web 服务调用之前运行完成。
JEE 中是否有任何东西可以保证发生这种情况?我见过的最好的解决方案是为 EAR 创建一个资源适配器,但是我找不到任何东西可以保证这个启动代码在其他 bean/MDB/Servlet 启动之前完成。我试图避免数据库访问的应用程序级别锁定只是为了实现维护,但也许这是唯一的方法。
我还在容器上看到了一个 AfterDeploymentValidation 事件,从描述来看,它似乎可以完成这项工作,但我找不到任何文档来确认。