Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 货物:查找已安装集装箱的状态_Java_Cargo - Fatal编程技术网

Java 货物:查找已安装集装箱的状态

Java 货物:查找已安装集装箱的状态,java,cargo,Java,Cargo,我正在尝试使用从与容器位于同一台计算机上的webapp管理容器。到目前为止,我已经能够做很多事情了,但当我第一次启动我的manager应用程序时,要想了解容器的状态,我就陷入了困境。当我第一次创建实例时,总是返回。问题是,如果我尝试启动一个已经启动的容器,会创建一个额外的JVM,如果我尝试停止一个当前未运行的容器,则会挂起我的应用程序。我的方法如下: ConfigurationFactory configurationFactory = new DefaultConfigurationFacto

我正在尝试使用从与容器位于同一台计算机上的webapp管理容器。到目前为止,我已经能够做很多事情了,但当我第一次启动我的manager应用程序时,要想了解容器的状态,我就陷入了困境。当我第一次创建实例时,总是返回。问题是,如果我尝试启动一个已经启动的容器,会创建一个额外的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;

有没有办法找出容器的实际状态?在实际启动/停止容器之前,我能找到的关于容器状态的唯一信息是它是否通过安装。

我最终使用的解决方案是使用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);
到目前为止,它是有效的