Груз: выяснение состояния уже установленного контейнера - PullRequest
0 голосов
/ 06 апреля 2011

Я пытаюсь использовать Cargo для управления контейнерами из веб-приложения на той же машине, что и контейнеры.До сих пор я был в состоянии сделать большинство вещей, но я застрял, когда дело доходит до выяснения состояния контейнера, когда я впервые запускаю приложение менеджера.Когда я впервые создаю экземпляр Container , container.getState () всегда возвращает State.UNKNOWN .Проблема в том, что создается дополнительная JVM, если я пытаюсь запустить уже запущенный контейнер, и мое приложение зависает, если я пытаюсь остановить контейнер, который в данный момент не запущен.Мой подход подобен следующему:

ConfigurationFactory configurationFactory = new DefaultConfigurationFactory();
LocalConfiguration configuration = (LocalConfiguration) configurationFactory.createConfiguration(containerId, ContainerType.INSTALLED, ConfigurationType.STANDALONE, CARGO_CONFIGURATION_DIRECTORY);
DefaultContainerFactory containerFactory = new DefaultContainerFactory();
InstalledLocalContainer container = (InstalledLocalContainer) containerFactory.createContainer(containerId, ContainerType.INSTALLED, configuration);
assert container.getState() == State.UNKNOWN;

Есть ли способ узнать, каково реальное состояние контейнера?Единственная информация, которую я могу найти о состоянии контейнера (до фактического запуска / остановки контейнера), - установлена ​​ли она (через ZipURLInstaller.isAlreadyInstalled () ).

1 Ответ

0 голосов
/ 06 апреля 2011

«Решение», которое я использовал в итоге, состояло в том, чтобы пропинговать контейнер с помощью внутренних API-интерфейсов Cargo.Поскольку контейнеры в моем приложении были установлены вместе с Cargo, я проверяю связь с приложением Cargo Ping Component, которое Cargo развертывает в каждом устанавливаемом контейнере.

import org.codehaus.cargo.container.internal.util.HttpUtils;
import org.codehaus.cargo.container.spi.util.ContainerUtils;
...
URL cargoPingUrl = ContainerUtils.getCPCURL(getConfiguration());
return new HttpUtils().ping(cargoPingUrl);

Пока это работает.

...