org.deegree.services.wfs.protocol
Interface WFSLockFeatureRequest

All Superinterfaces:
OGCWebServiceRequest, WFSBasicRequest
All Known Implementing Classes:
WFSLockFeatureRequest_Impl

public interface WFSLockFeatureRequest
extends WFSBasicRequest

Web connections are inherently stateless. Unfortunately, this means that the semantics of serializable transactions are not preserved. To understand the issue consider an UPDATE operation.

The client fetches a feature instance. The feature is then modified on the client side, and submitted back to the database, via a Transaction request for update. Serializability is lost since there is nothing to guarantee that while the feature was being modified on the client side, another client did not come along and update that same feature in the database.

One way to ensure serializability is to require that access to data be done in a mutually exclusive manner; that is while one transaction accesses a data item, no other transaction can modify the same data item. This can be accomplished by using locks that control access to the data.

The purpose of the LockFeature interface is to expose a long term feature locking mechanism to ensure consistency. The lock is considered long term because network latency would make feature locks last relatively longer than native commercial database locks.

The LockFeature interface is optional and need only be implemented if the underlying datastore supports (or can be made to support) data locking. In addition, the implementation of locking is completely opaque to the client.

--------------------------------------------------------

Version:
$Revision: 1.3 $ $Date: 2004/02/09 07:57:02 $
Author:
Andreas Poth

Method Summary
 int getExpiry()
          The element is used to set a limit on how long the lock should be held in the event that a transaction is never issued that will release the lock.
 WFSLock[] getLocks()
          A LockFeature request can be used to acquire a lock on a single feature or a set of features defined using the element as defined in the OGC Filter Encoding Specification [Ref2].
 
Methods inherited from interface org.deegree.services.wfs.protocol.WFSBasicRequest
getNative
 
Methods inherited from interface org.deegree.services.OGCWebServiceRequest
getId, getRequest, getRequestParameter, getService, getVendorSpecificParameter, getVendorSpecificParameters, getVersion
 

Method Detail

getExpiry

public int getExpiry()
The element is used to set a limit on how long the lock should be held in the event that a transaction is never issued that will release the lock. The expiry limit is specified in minutes. Once the specified number of minutes have elapsed the lock will be released if it still exists. Any further transactions issued against that lock will fail.


getLocks

public WFSLock[] getLocks()

A LockFeature request can be used to acquire a lock on a single feature or a set of features defined using the element as defined in the OGC Filter Encoding Specification [Ref2].

If a filter is not specified, then the optional typeName attribute can be used to specify that all feature instances of a particular feature type should be locked.

The optional lockAction attribute is used to control how feature locks are acquired. A lock action of ALL indicates that the web feature server should try to acquire a lock on all requested features; if all features cannot be locked then the operation should fail. If the lock action is set to SOME, then the web feature server tries to lock as many of the requested features as it can. The default lock action shall be ALL.