Re: File Locking Question
Roedy Green wrote:
On 14 Jul 2007 11:58:35 -0700, alejandrina <firstname.lastname@example.org> wrote,
quoted or indirectly quoted someone who said :
I am trying to use Java's FileLock class to synchronize writing to a
file **across machines**. The file resides on a file server. Under
Windows, it works perfectly (ie, only one machine at a time can gain
access, the others wait,no clobbered file, everything is written in
order). Under Linux (same code) the file gets clobbered. No exceptions
Can anyone offer suggestions??
FileLock works only within a single JVM. You can use the indicator
file method described at http://mindprod.com/jgloss/lockedfiles.html
#Starting with Java 1.4, there is the java.nio.channels. FileLock class.
#The locking is confined to a single JVM. Non-Java apps or Java running
#in other JVMs won't see it.
But some people may prefer to believe what the Java Doc says:
#This file-locking API is intended to map directly to the native
#locking facility of the underlying operating system. Thus the locks
#held on a file should be visible to all programs that have access to
#the file, regardless of the language in which those programs are
#Whether or not a lock actually prevents another program from
#accessing the content of the locked region is system-dependent and
#therefore unspecified. The native file-locking facilities of some
#systems are merely advisory, meaning that programs must cooperatively
#observe a known locking protocol in order to guarantee data integrity.
#On other systems native file locks are mandatory, meaning that if one
#program locks a region of a file then other programs are actually
#prevented from accessing that region in a way that would violate the
#lock. On yet other systems, whether native file locks are advisory or
#mandatory is configurable on a per-file basis. To ensure consistent and
#correct behavior across platforms, it is strongly recommended that the
#locks provided by this API be used as if they were advisory locks.