Overview | Package | Class | Tree | Index | Help

Oracle® Coherence Java API Reference
v3.5.3
E15583-01
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## com.tangosol.io.bdb
Class DatabaseFactory.EnvironmentHolder

    java.lang.Object
      com.tangosol.io.bdb.DatabaseFactory.EnvironmentHolder

All Implemented Interfaces:
  java.lang.Runnable

Enclosing class:
  DatabaseFactory

    protected static class DatabaseFactory.EnvironmentHolder

extends java.lang.Object
implements java.lang.Runnable

Holder for Berkeley DB Environment and its Databases.

The Environment and Databases will be automatically flushed upon JVM shutdown or GC of the associated DatabaseFactory. For temporary Environments, the data will also be deleted. These operations are accomplished by registering this class as a JVM shutdown hook.

This logic is maintained externally from DatabaseFactory to allow for the Factory to be GC'd. If the Factory acted as the shutdown hook then it would never be GC'd as the Runtime would always hold a reference to it via the registered shutdown hook.

Author:
  mf 2005.10.04

Nested Class Summary
`protected static class` | `DatabaseFactory.EnvironmentHolder.DirectoryLock` Directory based lock.

Field Summary
`static java.lang.String` | `ENVIRONMENT_NAME_PREFIX` Prefix for temporary environment names.
`static java.lang.String` | `JE_PROPERTY_PREFIX` Prefix for all Berkeley DB JE configuration settings.
`protected java.util.Collection` | `m_colRegisteredDbs` Databases to close prior to deleting the Environment.
`protected java.io.File` | `m_dirEnv` Environment directory.
`protected DatabaseFactory.EnvironmentHolder.DirectoryLock` | `m_dirLock` Lock held on the directory associated with the Environment.
`protected java.io.File` | `m_dirParent` Configuration setting for parent directory.
`protected com.sleepycat.je.Environment` | `m_env` Berkeley DB Environment for managing Databases.
`protected com.sleepycat.je.EnvironmentConfig` | `m_envConfig` Berkeley DB Environment Configuration.
`protected boolean` | `m_fTemporary` Flag indicating if this is a temporary environment.
`protected java.lang.Thread` | `m_threadShutdownHook` Shutdown hook for closing environment.
`protected XmlElement` | `m_xmlConfig` Configuration.
`static java.lang.String` | `SUB_DIR_NAME` Default directory name for berkeley db environments.
`static java.lang.String` | `TEMP_FILE_NAME_PREFIX` Prefix for temporary file names.

Constructor Summary
`DatabaseFactory.EnvironmentHolder(BerkeleyDBBinaryStoreManager bdbManager)` Construct a EnvironmentHolder for a given Berkeley DB Environment.

Method Summary
`void` | `closeEnvironment(boolean fDeregister)` Close an Environment.
`protected java.io.File` | `computeTmpDir()` Compute the system's temp directory.
`protected void` | `configure(BerkeleyDBBinaryStoreManager bdbManager)` Configure the new Environment.
`protected void` | `createPersistentEnvironment()` Create a persistent Environment.
`protected void` | `createTemporaryEnvironment()` Create a temporary Environment.
`void` | `forgetDatabase(com.sleepycat.je.Database db)` Remove a database handle from the cleanup list.
`protected java.lang.String` | `generateEnvironmentName()` Generate a potentially unique Environment name.
`java.io.File` | `getDirEnv()` Get the Environment Directory.
`DatabaseFactory.EnvironmentHolder.DirectoryLock` | `getDirLock()` Get the DirectoryLock held on a temporary Environment.
`java.io.File` | `getDirParent()` Get the Parent Directory.
`com.sleepycat.je.EnvironmentConfig` | `getEnvConfig()` Get the Environment Configuration.
`com.sleepycat.je.Environment` | `getEnvironment()` Get underlying Berkeley DB Environment.
`java.util.Collection` | `getRegisteredDbs()` Get the registered Databases.
`XmlElement` | `getXmlConfig()` Get the XML Configuration.
`boolean` | `isTemporary()` Return true if this is a temporary environment.
`void` | `run()` Shutdown hook runnable method.
`java.lang.String` | `toString()` Return a human readable description of the EnvironmentHolder.
`void` | `trackDatabase(com.sleepycat.je.Database db)` Add a database handle to the trackings list.

Field Detail

### SUB_DIR_NAME

    public static final java.lang.String SUB_DIR_NAME

  Default directory name for berkeley db environments.

### ENVIRONMENT_NAME_PREFIX

    public static final java.lang.String ENVIRONMENT_NAME_PREFIX

  Prefix for temporary environment names.

  See Also:
    Constant Field Values

### TEMP_FILE_NAME_PREFIX

    public static final java.lang.String TEMP_FILE_NAME_PREFIX

  Prefix for temporary file names.

  See Also:
    Constant Field Values

### JE_PROPERTY_PREFIX

    public static final java.lang.String JE_PROPERTY_PREFIX

  Prefix for all Berkeley DB JE configuration settings.

  See Also:
    Constant Field Values

### m_xmlConfig

    protected XmlElement m_xmlConfig

  Configuration.

### m_dirParent

    protected java.io.File m_dirParent

  Configuration setting for parent directory.

### m_dirEnv

    protected java.io.File m_dirEnv

  Environment directory.

### m_envConfig

    protected com.sleepycat.je.EnvironmentConfig m_envConfig

  Berkeley DB Environment Configuration.

### m_env

    protected com.sleepycat.je.Environment m_env

  Berkeley DB Environment for managing Databases.

### m_colRegisteredDbs

    protected java.util.Collection m_colRegisteredDbs

  Databases to close prior to deleting the Environment.

### m_dirLock

    protected DatabaseFactory.EnvironmentHolder.DirectoryLock m_dirLock

  Lock held on the directory associated with the Environment.

### m_fTemporary

    protected boolean m_fTemporary

  Flag indicating if this is a temporary environment.

### m_threadShutdownHook

    protected java.lang.Thread m_threadShutdownHook

  Shutdown hook for closing environment.

Constructor Detail

### DatabaseFactory.EnvironmentHolder

    public DatabaseFactory.EnvironmentHolder(BerkeleyDBBinaryStoreManager bdbManager)
                                      throws com.sleepycat.je.DatabaseException

  Construct a EnvironmentHolder for a given Berkeley DB Environment.

  Berkeley DB Environments are bound to a single directory. Java File locking is used to ensure that only one JVM uses the Environment. The new environment will be created in a unique sub directory of the specificed parent directory.

  Parameters:
    `bdbManager` - the BinaryStoreManager to create an environment for
  Throws:
    `com.sleepycat.je.DatabaseException` - if the Berkeley DB Environment could not be created

Method Detail

### toString

    public java.lang.String toString()

  Return a human readable description of the EnvironmentHolder.

  Returns:
    a human readable description of the EnvironmentHolder

### forgetDatabase

    public void forgetDatabase(com.sleepycat.je.Database db)

  Remove a database handle from the cleanup list.

  Databases which are closed externally may be removed from tracking.

  Parameters:
    `db` - the Database to remove from list

### run

    public void run()

  Shutdown hook runnable method.

  This is responsible for cleaning up the databases and associated directories when the JVM exits.

  Specified by:
    `run` in interface `java.lang.Runnable`

### closeEnvironment

    public void closeEnvironment(boolean fDeregister)

  Close an Environment.

  This includes closing the environment and databases, and if temporary deleting the associated files.

  Parameters:
    `fDeregister` - indicates if the shutdown hook should be deregistered

### trackDatabase

    public void trackDatabase(com.sleepycat.je.Database db)

  Add a database handle to the trackings list.

  Databases for the environment must be tracked so that they may be closed prior to closing the environment.

  Parameters:
    `db` - the Database to add to the list

### configure

    protected void configure(BerkeleyDBBinaryStoreManager bdbManager)

  Configure the new Environment.

  Parameters:
    `bdbManager` - the BinaryStoreManager to create an environment for

### computeTmpDir

    protected java.io.File computeTmpDir()

  Compute the system's temp directory.

  Returns:
    the system temp directory, or `null` if it could not be determined

### createTemporaryEnvironment

    protected void createTemporaryEnvironment()
                                       throws com.sleepycat.je.DatabaseException

  Create a temporary Environment.

  Throws:
    `com.sleepycat.je.DatabaseException` - if environment creation fails

### createPersistentEnvironment

    protected void createPersistentEnvironment()
                                        throws com.sleepycat.je.DatabaseException

  Create a persistent Environment.

  Throws:
    `com.sleepycat.je.DatabaseException` - if environment creation fails

### generateEnvironmentName

    protected java.lang.String generateEnvironmentName()

  Generate a potentially unique Environment name.

  Returns:
    an environment name

### getEnvironment

    public com.sleepycat.je.Environment getEnvironment()

  Get underlying Berkeley DB Environment.

  Returns:
    the Berkeley DB Environment held by this EnvironmentHolder

### getXmlConfig

    public XmlElement getXmlConfig()

  Get the XML Configuration.

  Returns:
    the XML Configuration for this Environments.

### getDirParent

    public java.io.File getDirParent()

  Get the Parent Directory.

  Returns:
    the Environment's parent directory

### getDirEnv

    public java.io.File getDirEnv()

  Get the Environment Directory.

  Returns:
    the Environment's directory

### getEnvConfig

    public com.sleepycat.je.EnvironmentConfig getEnvConfig()

  Get the Environment Configuration.

  Returns:
    the Environment's configuration

### getRegisteredDbs

    public java.util.Collection getRegisteredDbs()

  Get the registered Databases.

  Returns:
    a collection of open Databases from this Environment

### getDirLock

    public DatabaseFactory.EnvironmentHolder.DirectoryLock getDirLock()

  Get the DirectoryLock held on a temporary Environment.

  Returns:
    the DirectoryLock held on the temporary Environment

### isTemporary

    public boolean isTemporary()

  Return true if this is a temporary environment.

  Returns:
    true if this is a temporary environment

Overview | Package | Class | Tree | Index | Help

Oracle® Coherence Java API Reference
v3.5.3
E15583-01
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2000, 2010, Oracle. All rights reserved.