2013-08-08 8 views
7

ローカルサーバとリモートサーバ間でftp、sftp、およびhttps経由でファイルを転送する必要のあるプロジェクトにApache Commons VFSを使用しています。Apache Commons VFSスレッドの安全性とリソース管理

標準的な使用例は、静的メソッド

FileSystemManager fsManager = VFS.getManager(); 

からFileSystemManagerを得ていることは、複数のスレッド間で同じFileSystemManagerを使用しても安全ですか?

そして、2つ目の質問は、およそ適切finallyブロック内のリソースを解放します

:私はのJavadoc APIの次のメソッドを見つけます

しかし、それは明確ではありませんこれらのリソースのうちのどれを通常閉鎖すべきかを私に知らせる。

+0

私は現時点で同じ疑問を抱いていますが、何か結論に至った場合、私はさまよっていましたか? –

答えて

1

ファイルマネージャとファイルシステムオブジェクトはスレッドセーフであると考えられますが、私はそれにライブを賭けることはできません。いくつかの内部ロック(特に名前の変更)はFileObjectのインスタンスに依存するので、それらを保持しないFileCache(デフォルトキャッシュは問題ありません)を使用しないでください。

FileContentとストリームを同時に使用しないでください(実際には、FileContent.close()は現在のスレッドのストリームに対してのみ機能します)。

この領域にはいくつかのリソースリークがあります(うまくいけば、2.1-SNAPSHOTですべて修正されているはずです)。

0

VFS.getManagerは、単一のマネージャを提供します。ファイルシステムへのシングルアクセスなので、マルチスレッド環境からの使用はお勧めできません。独自のDefaultFileSystemManagerを作成し、完了したらcloseメソッドを使用することができます。

関連する問題