Im пытается написать небольшие «сторожевой» * .war, которая отслеживает состояние развертывания моего (намного больше) * .ear на JBoss 7.1.3Как получить доступ к подробному состоянию развертывания приложений Java EE на JBoss AS 7?
Как получить в точном состоянии развертывания * .ear?
Я знаю, что могу это сделать (с помощью JBoss классов MSC):
ServiceContainer sc = CurrentServiceContainer.getServiceContainer(); //jboss msc
ServiceController earController = sc.getService(Services.deploymentUnitName("my.ear"));
return "my.ear - "+earController.getMode()+"-"+earController.getState()+"-"+earController.getSubstate();
, но это даст мне все-зеленый, даже если не удалось развертывания. для exmaple - скажем, у меня есть @Startup @Singleton, метод @PostConstruct (называемый частью загрузки) генерирует исключение. на данный момент мое развертывание логически провалилось (инициализация бросила исключение), но jboss отметит . как развернутый - как с использованием файлов маркеров в каталоге развертывания ( .isDeploying -> * .deployed), так и с использованием значений из контроллер выше.
У jboss есть класс ContainerStateMonitor, который хранит список служб с отсутствующими зависимостями, которые мне нужны - любые @Singletons, которые не запускаются, вызовут кучу @EJB, которые полагаются на него, чтобы не выполнить развертывание, - но Я понятия не имею, как это сделать.
ближе всего я нашел это:
sc.getService(org.jboss.as.serverServices.JBOSS_SERVER_CONTROLLER).getService()
это заставляет меня экземпляр ServerService, который имеет поле контроллер (переходная), который хранит эти данные. но все это в частных областях, и я действительно не хочу прибегать к размышлениям.
так что мой вопрос - есть ли способ получить эти данные? jboss, очевидно, знает, что @Singletons не удалось развернуть, что @EJBs не хватает зависимостей, какие источники данных не удалось подключить и т. д., но есть ли у меня способ добраться до него? не обязательно должен быть MSC, может быть JMX (хотя я думаю, что это просто карты MSC в jboss 7) или любой другой API.