Skip navigation links

Oracle® Coherence Java API Reference
Release 3.7.0.0

E18683-01


com.tangosol.io.bdb
Class DatabaseFactory.EnvironmentHolder

java.lang.Object
  extended by 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
See Also:
Thread.run()

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

Skip navigation links

Oracle® Coherence Java API Reference
Release 3.7.0.0

E18683-01


Copyright © 2000, 2011, Oracle and/or its affiliates. All rights reserved.