{
if (isOpen())
{
throw new DatabaseOpenException("Database is already open");
}
PersistenceBroker broker = null;
try
{
if (name == null)
{
log.info("Given argument was 'null', open default database");
broker = PersistenceBrokerFactory.defaultPersistenceBroker();
}
else
{
broker = PersistenceBrokerFactory.createPersistenceBroker(
BrokerHelper.extractAllTokens(name));
}
pbKey = broker.getPBKey();
isOpen = true;
//register opened database
odmg.registerOpenDatabase(this);
if (log.isDebugEnabled()) log.debug("Open database using PBKey " + pbKey);
}
catch (PBFactoryException ex)
{
log.error("Open database failed: " + ex.getMessage(), ex);
throw new DatabaseNotFoundException(
"OJB can't open database " + name + "\n" + ex.getMessage());
}
finally
{
// broker must be immediately closed
if (broker != null)
{
broker.close();
}
}
}