2011-04-06 5 views
0

Cargoを使用して、コンテナと同じマシンのWebアプリケーションからコンテナを管理しようとしています。これまでのところほとんどのことができましたが、マネージャーアプリを初めて起動したときにコンテナの状態を調べることになりました。最初にContainerインスタンスを作成すると、container.getState()は常にState.UNKNOWNを返します。問題は、既に起動しているコンテナを起動しようとすると余分なJVMが作成され、現在実行されていないコンテナを停止しようとするとアプリケーションがハングするということです。私のアプローチは次のようなものです:貨物:既にインストールされているコンテナの状態を調べる

コンテナの実際の状態がわかりますか?コンテナの状態(実際にコンテナを開始/停止する前)の情報は、インストール済みかどうかだけです(ZipURLInstaller.isAlreadyInstalled()経由)。

答えて

0

私が使用した「解決策」は、Cargoの内部APIを使用してコンテナにpingを実行することでした。私のアプリのコンテナにはCargoがインストールされているため、Cargoがインストールする各コンテナに配置されている「Cargo Ping Component」アプリに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); 

これまでのところ動作します。

関連する問題