私は、ユーザーがファイルをアップロードして他の人と編集/共有できるようにする webapp (SpringMVC + JSF) を作成しています。このアプリのサービス レイヤーでは、すべてのファイル IO を処理するために guava を使用していますが、残念ながらリファレンス マニュアルでこれまでに確認したところによると、guava はファイルへの同時アクセスの問題に対処していません。
Java が提供する FileChannel クラスには、この問題をある程度解決する lock メソッドがあることは承知していますが、guava IO フレームワークにはうまく適合しません。グアバを取り除き、FileChannel と InputStream でコードを書き直す前に、別の IO パッケージに完全に切り替えずにこれを行う方法が他にあるかどうか知りたいです。
(ファイル名をロックにマッピングする大きなハッシュテーブルは、私には良い解決策とは思えません。ユーザーベースが大きい場合、メモリに保存するには多すぎます。)