2017-06-12 7 views
1

J2EEプロジェクトでは、docker-javaに依存して、Javaコードからsjourdan/ffmpegドッカーを呼び出してビデオ変換を行っています。DockerClient.waitContainerCmd()からResultCallbackを待つ方法は?

今のところ、それは(かなり簡潔にするために簡略化)次のようになります。

CreateContainerCmd createCommand = dockerClient.createContainerCmd("sjourdan/ffmpeg") 
    .withVolumes(aVolume) 
    .withBinds(aBind) 
    .withCmd("a lot of options about the conversion itself, codec, ratio, …"); 
CreateContainerResponse container = createCommand.exec(); 

dockerClient.startContainerCmd(container.getId()).exec(); 

// vanilla implementation of ResultCallback 
MyResultCallback callback = new MyResultCallback(); 
dockerClient.waitContainerCmd(container.getId()).exec(callback); 

事実はもちろん、スレッドが戻って呼び出されるコールバックを待たずに、その後いっている、です。

ドッカーのコマンドが完全に終了したことを通知するコールバックが呼び出されるまでスレッドを強制的に待機させるにはどうすればよいですか?別のノートで


誰かがドッキングウィンドウ-Javaを使用してプレイしdocker runコマンドに--rmパラメータを追加する方法を知っている場合は、私が興味を持っています。

答えて

0

まあ、誰もが我々は最後に実装するものここで、ソリューションを必要とする場合:

public void onComplete() 
{ 
    latch.countDown(); 
} 

はから待機を処理するための素敵な十分な方法だよう

CountDownLatch latch = new CountDownLatch(1); 
MyResultCallback callback = new MyResultCallback(latch); 
dockerClient.waitContainerCmd(container.getId()).exec(callback); 
return latch.await(5, TimeUnits.MINUTES); 

MyResultCallback.onCompleteに見えますメインスレッド。

関連する問題