2011-02-02 10 views
0

私は自分のSolarisサーバーの1台にNFS共有をマウントしています。パス/APPDATA/ANPはシェアの下でサーバーBにサーバーAから搭載されている:setLastModifiedがNFS共有で動作していません

/appdata/anp

私は私がつけ上記のディレクトリに

/appdata/anp/factory

という名前のフォルダを持っていますデータベースにインポート/更新する必要があるデータを持つファイル。データベースにデータをインポートした後、インポートしたデータの操作結果に基づいてファイルを成功/失敗ディレクトリに移動します。

/appdata/anp/factory/success

/appdata/anp/factory/failure

Iは、上記のディレクトリのいずれかにファイルを移動して使用して現在のシステム時刻にファイルの最終更新時刻を更新:

file.setLastModified

ブール値を返します。問題は、このアップデート操作を行っているときに、そのファイルのタイムスタンプを現在のシステム時刻に更新できないことです。

は、誰もがシナリオは中

file.setLastModified

リターン障害が何であるか知っています。私はNFSのパーミッションをチェックして、すべてが大丈夫だと思われます。とにかくsetLastModifiedが失敗を返す可能性があるケースを知っていますか?

私を助けてください私は本当にこの1つ私の髪を引っ張っている! :(

+0

この記事を読んでこれを読んだ人は、このAPIが特定のプラットフォームやオペレーティングシステム(私の場合はNFSマウント)でうまくいかないようです。最後に、私はUnixの "touch"コマンドを使用してJavaからシステムレベルのスレッドを生成します。 – Cheshar

答えて

1

私はUnixファイルシステム上で同様の問題があったUNIXが最後に修正ミリ秒を切り捨てとする最後に変更設定されたため、私の場合はそれがあった:

のSystem.currentTimeMillis() - のSystem.currentTimeMillisを。ファイルを操作していて、file.lastModified()を使って更新をチェックしているテストケースに影響を与えていました。テストケースでファイルを更新する前にThread.sleep(1100)を追加しました。

次の人に役立つことを願っています。

+2

これをお寄せいただきありがとうございます!私は、他の人がこのAPIに似た問題に直面するのを助けることを望み – Cheshar

関連する問題