■環境
・Azure環境: Cloud Service
・サーバ:Windows Server 2012 R2
・デプロイ方法:EclipseでのAzureプラグインを使用
■問題
・OSシャットダウンを検知して数10秒程度の処理(Azure Blob Strageへファイルをアップロード)をしたいができない。
■現状
1. サーバ上のメイン言語はJavaを使用しているのでJVMのシャットダウンフックを利用しようとしたが、Ctrl+Cの終了は検知できても、OSのシャットダウンは検知できなかった。http://docs.oracle.com/javase/jp/7/api/java/lang/Runtime.html#addShutdownHook(java.lang.Thread)
2. C#でSystem.ServiceProcess.ServiceBaseを継承したクラスを作り、OnShutdown()を継承してシャットダウンは検知できたが、処理がすぐに止まってしまう(2秒程度で強制終了しているように見える)
3. シャットダウン時の猶予が欲しくてレジストリwaittokillservicetimeoutの値を伸ばしても結果は変わらず。
4. ネット上ではシャットダウンジにOnShutdown()ではなくOnStop()が呼ばれるという情報があったのでCanStopをtrueにしてみたが呼ばれない(OnStop()ではRequestAddtionalTime()が使えるので、猶予時間が延ばせると思ったがダメだった)
■質問
・何か方法があると思うのですが手詰まり気味なので、何か情報があればよろしくお願いします。