2013-08-08 19 views
7

Sto cercando di utilizzare Apache Commons VFS per un progetto che dovrà trasferire file tra server locale e server remoti tramite ftp, sftp e https.Apache Commons VFS thread sicurezza e gestione delle risorse

Gli esempi di utilizzo standard, sono sempre il FileSystemManager da un metodo statico

FileSystemManager fsManager = VFS.getManager(); 

E 'sicuro utilizzare la stessa FileSystemManager su più thread?

E una seconda domanda è di circa correttamente rilasciando risorse in un blocco finally: trovo i seguenti metodi della API Javadoc:

Ma non è cle per me quale di queste risorse dovrebbe in genere essere chiusa.

+0

Ho gli stessi dubbi al momento, stavo vagando se arrivavi a qualche conclusione? –

risposta

1

Il filemanager e gli oggetti del filesystem dovrebbero essere thread-safe, tuttavia non scommetterei la mia live su di esso. Alcuni blocchi interni (specialmente intorno ai nomi) dipendono dall'istanza di FileObject, quindi non dovresti usare un FileCache che non li mantiene (vale a dire che la cache predefinita va bene).

FileContent e flussi non devono essere utilizzati contemporaneamente (infatti FileContent.close(), ad esempio, agisce solo sui flussi del thread corrente).

Ci sono alcune perdite di risorse in quest'area (si spera che siano tutte corrette in 2.1-SNAPSHOT).

0

VFS.getManager fornisce un singolo manager, ad es. accesso singolo al filesystem, quindi non lo consiglio di usarlo dall'ambiente multithread. Puoi creare il tuo DefaultFileSystemManager e utilizzare il metodo close quando hai finito.