我正在尝试使用Cargo在与容器相同的机器上管理来自 webapp 的容器。到目前为止,我已经能够做大部分事情,但是当我第一次启动我的管理器应用程序时,我在找出容器的状态时遇到了困难。当我第一次创建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())。