プログラム移行(C#→Java)の中で処理待ちする事象が発生しています。
処理待ちを解消する方法を探しています。
WindowsServer2019
Java
Spring boot
C#(他社で開発)で実現しているある処理の中で2台のサーバにファイル転送する部分があります。システム更改に伴い、javaに移行しています。
Windowsのファイル共有でファイルコピーしています。
問題は、転送先サーバが停止していた場合、java上1ファイルで6分ほど待ちが発生します。Windows上の「ファイルを指定して実行」でネットワークパスを入力して接続しようとすると応答が返ってこないので、それに引っ張られて待ちが発生しているようです。
現行プログラム開発時のテストエビデンスを見ると、存在しないネットワークパスを転送先にするケースでもスムーズに処理されています。
ソースを見るとWNetAddConnection2というAPIを使用しています。これが都合よくネットワークの疎通確認を実施してくれているようです。
複数のサーバに転送処理を直列で行っており、待ちが発生すると後続の処理がその分遅延します。これが問題になっています。
知りたいのは、Javaの世界で、WNetAddConnection2同等の疎通確認を行う方法です。
疎通確認を非同期で行うという案はありますが、開発に費用が発生するので、できればやりたくありません。
良い案ないでしょうか。ご教示よろしくお願いします。
(8/24追記)
ソースコードは、以下になります。
for (String FilePath : FilePaths) {
File folder = new File(FilePath);
File file = new File(FilePath + "" + job.getid() + ".wav");
try (FileOutputStream fileOutputStream = new FileOutputStream(file);) {
if (!file.exists()) {
folder.mkdirs();
file.createNewFile(); }
fileOutputStream.write(bytes);
} catch (Exception e) {
logger.info("Exception:", e);
logger.error(messageSource.getMessage("E-VRFS-005", new String[] { "ファイル転送失敗", job.getid() }, Locale.JAPAN)); } }
発生する例外は、以下です。
java.io.FileNotFoundException

回答1件
あなたの回答
tips
プレビュー