【发布时间】:2016-03-05 06:22:32
【问题描述】:
我一直在寻找一种以编程方式让部署自行停止的方法。
对于我们的用例,我们部署了多个耳朵,其中一个是最重要的,其他的则依赖于它。我们确保重要的耳朵首先部署,然后其他耳朵开始并行部署。
我们面临的问题是重要的耳朵可以处于升级模式,这是有效的。
在之后启动的ear中,我们检查运行模式,当它不正常时,我们抛出一个RuntimeException。对每个 ear 部署的检查都发生在 Singleton Startup EJB3 Bean 中。但是当这些抛出 RuntimeException 时,部署仍然处于活动状态。我想通知容器部署应标记为失败。这样的事情可能吗?
我们使用的技术有:Wildfly 10、Java-ee 7、EJB3。
我在 stackoverflow 上找到了一个解决方案,它使用命令行 CLI 来停止部署。 Can a deployment stop itself? 在我看来应该可以在源代码本身中做到这一点。
有什么想法吗?
【问题讨论】:
-
不知道部署选项,但如果简单地提供一个 REST 服务,当部署工作时返回“OK”,否则会失败,这不是更容易吗?
-
我用我描述的单例解决方案做到了这一点。 ear2 单例启动 bean 调用 ear1(重要)项目并在运行模式不正确时抛出 RuntimeException,但这不会将部署标记为失败。由于该项目没有取消部署,因此允许其他 bean(例如已调度)做一些事情。我想找到一个在启动期间检查运行模式的解决方案,如果不正确就会失败。
-
队长明显:使用runtime.exec()调用shell命令? (不太明显,有一些用户文件系统权限问题)
-
如何使用标记文件和 java.io.File api?
标签: java jakarta-ee wildfly java-ee-7 ejb-3.2