2011-04-06 2 views
0

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()을 통해) 확인할 수 있습니다.

답변

0

"솔루션"은 Cargo의 내부 API를 사용하여 컨테이너를 ping하는 것입니다. 내 응용 프로그램의 컨테이너가 Cargo와 함께 설치 되었기 때문에 Cargo가 설치하는 각 컨테이너에 배치하는 "Cargo Ping Component"응용 프로그램에 Ping을 수행합니다.

지금까지 작동합니다.

관련 문제