我在JBoss上部署了一个EAR。此EAR包含两个主要组件,一组EJB和一个servlet。它还包含其他几个库。
在代码的当前状态下,需要初始化一些单例,以便EJB可以实际工作。此init在servlet中生成,以启动所有数据高速缓存并初始化它们。我的问题是,由于这个单独的初始化(可能持续长达30秒),有一段时间可以部署和使用EJB,但调用它们会导致错误。
所以问题是:有没有办法在其他组件初始化时锁定EJB调用?理想情况下,它只是将它们排队并在init完成后执行它们,但它也可以拒绝它们。
我现在能想到的唯一方法是在初始化程序中使用静态布尔值,这将在EJB调用(实际上是它们的拦截器)中进行检查。但这远非方便。所以我想知道是否有另一种方法可以做到这一点,不那么脏。