当我在JBoss EAP 6.3上部署我的JEE6应用程序并在手动取消部署应用程序之前closures服务器时,出现意外的exception(请参见下文)。
我正在寻找一种方法来使关机工作或一个可靠的来源,说它不工作,不会被修复。
然而,closures应用程序工作正常,如果手动完成(从部署目录中删除.ear,等待取消部署,然后closuresJB)。 没有例外发生,一切按预期工作。
所以,我认为有一种方法可以在服务器closures时自动进行configuration,向应用程序发送停止信号,等待它们消失或达到超时,然后closures服务器。
我用这个命令closures了JBoss 7:
jboss-cli.bat --connect --command=:shutdown --timeout=30000 --controller=127.0.0.1:9999
我得到的例外(例如JBAS0141134)让我觉得JBoss正在删除我的应用程序在closures序列完成之前所依赖的Beans和Resources。
我在一个@PreDestroy里面的@PreDestroy里面控制了我的closures进程,这个进程调用了一些@Stateless bean,这些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
(缩进是我的)
请记住,即使它表示“不允许调用”,如果不取消部署应用程序而不closures服务器,调用也可以正常工作。