スタンドアロンの Java アプリケーションとして実行される単純なファイル転送アプリケーションがあります。SFTP エンドポイントからファイルを取得し、別のエンドポイントに移動します。
ファイルは、転送後に SFTP エンドポイントから削除されます。ファイルがなくなったら、プログラムを終了させるのが理想的です。ただし、Camel を起動して条件付きで終了させる (SFTP エンドポイントにファイルがなくなった場合など)解決策を見つけることができませんでした。私の回避策は現在、Camel を起動してから、メイン スレッドを非常に長い時間スリープ状態にすることです。その後、ユーザーはアプリケーションを手動で強制終了する必要があります (CTRL+C またはその他の方法で)。
自動的に終了するようにアプリケーションを終了させるより良い方法はありますか?
以下は私の現在のコードです:
CamelContext (Spring App Context) では:
<route>
<from uri="sftp:(url)" />
<process ref="(processor)" />
<to uri="(endpoint)" />
</route>
main() メソッド:
public static void main(String[] args)
{
ApplicationContext appContext = new ClassPathXmlApplicationContext("applicationContext.xml");
CamelContext camelContext = appContext.getBean(CamelContext.class);
try
{
camelContext.start();
Thread.sleep(1000000000); // Runs the program for a long time -- is there a better way?
}
catch (Exception e)
{
e.printStackTrace();
}
UploadContentLogger.info("Exiting");
}