Java 货物:查找已安装集装箱的状态
我正在尝试使用从与容器位于同一台计算机上的webapp管理容器。到目前为止,我已经能够做很多事情了,但当我第一次启动我的manager应用程序时,要想了解容器的状态,我就陷入了困境。当我第一次创建实例时,总是返回。问题是,如果我尝试启动一个已经启动的容器,会创建一个额外的JVM,如果我尝试停止一个当前未运行的容器,则会挂起我的应用程序。我的方法如下:Java 货物:查找已安装集装箱的状态,java,cargo,Java,Cargo,我正在尝试使用从与容器位于同一台计算机上的webapp管理容器。到目前为止,我已经能够做很多事情了,但当我第一次启动我的manager应用程序时,要想了解容器的状态,我就陷入了困境。当我第一次创建实例时,总是返回。问题是,如果我尝试启动一个已经启动的容器,会创建一个额外的JVM,如果我尝试停止一个当前未运行的容器,则会挂起我的应用程序。我的方法如下: ConfigurationFactory configurationFactory = new DefaultConfigurationFacto
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;
有没有办法找出容器的实际状态?在实际启动/停止容器之前,我能找到的关于容器状态的唯一信息是它是否通过安装。我最终使用的解决方案是使用Cargo的内部API ping容器。因为我的应用程序中的容器安装了Cargo,所以我ping Cargo在其安装的每个容器中部署的Cargo ping组件应用程序
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);
到目前为止,它是有效的