配置 JBoss7 / EAP6 在关机前取消部署应用程序

配置 JBoss7 / EAP6 在关机前取消部署应用程序

当我在 JBoss EAP 6.3 上部署我的 JEE6 应用程序并在手动取消部署该应用程序之前关闭服务器时,我遇到了意外异常(见下文)。

我正在寻找一种使关机正常工作的方法或一个可靠的来源,指出它不起作用并且不会被修复。

但是,如果手动关闭应用程序,则关闭效果很好(从部署目录中删除 .ear,等待取消部署,然后关闭 JB)。没有发生任何异常,一切都按预期运行。

因此,我假设有一种方法可以配置 JBoss,使其在服务器关闭时自动执行该操作,向应用程序发送停止信号,等到它们消失或达到超时,然后关闭服务器。

我使用以下命令关闭 JBoss 7:

jboss-cli.bat --connect --command=:shutdown --timeout=30000 --controller=127.0.0.1:9999

我得到的异常(例如 JBAS0141134)让我认为 JBoss 在关闭序列完成之前正在删除我的应用程序所依赖的 Bean 和资源。

我控制内部的关闭过程@PreDestroy@Singleton调用一些@Stateless具有数据库资源的 bean,等等。

我得到的最突出的例外是:

ERROR - JBAS014134: 
   EJB-Aufruf an Komponente MyStatelessBean
      für Methode public abstract void MyStatelessLocal.performShutdownOperation() fehlgeschlagen:
   javax.ejb.EJBAccessException: JBAS014502: 
   Aufruf an Methode: public abstract void MyStatelessLocal.performShutdownOperation() 
      von Bean: MyStatelessBean ist nicht gestattet

(缩进是我的)

请记住,即使它说“不允许调用”,如果我取消部署该应用程序而不关闭服务器,调用仍然可以正常工作。

相关内容