我正在运行一个应用程序,它有一个每 5 分钟运行一次的后台进程。它在集群环境 (WAS 7.1) 中运行,但该进程一次只能在一台服务器上运行。出于这个原因,我选择了使用 javax.ejb.TimedObject 接口的 EJB Timer。计时器最初是通过同一个 EAR 中的 Web 应用程序 (Spring MVC) 安排的。这已经运行了一年多。
最近我已经将应用程序升级到 Spring 3.2.4 并使用了配置文件。现在,当服务器重新创建 EJB 作为其生命周期的一部分时,它有时会抱怨它找不到 bean 定义之一。这个 bean 恰好被定义了两次,一次是一个带有 'live' 配置文件的 beans 标签,另一个是 'test'。最初调度计时器的 Web 应用程序使用 web.xml 中的“spring.profiles.active”设置为“live”的 contexParam。这可确保计时器最初以“实时”配置启动。我怀疑当服务器重新创建 EJB 时,它正在重新创建 spring 上下文,但是 profile 参数在某处丢失了。
有没有人遇到过这个问题或对如何解决这个问题有任何建议?
提前致谢。