All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jboss.jdbc.DerbyDatabase Maven / Gradle / Ivy

There is a newer version: 6.1.0.Final
Show newest version
/*
 * JBoss, Home of Professional Open Source.
 * Copyright 2008, Red Hat Middleware LLC, and individual contributors
 * as indicated by the @author tags. See the copyright.txt file in the
 * distribution for a full listing of individual contributors.
 *
 * This is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation; either version 2.1 of
 * the License, or (at your option) any later version.
 *
 * This software is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this software; if not, write to the Free
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */
package org.jboss.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import javax.management.MBeanRegistration;
import javax.management.MBeanServer;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;

import org.jboss.system.ServiceMBeanSupport;

/**
 * Integration with Derby.
 * 
 * 

Starts Derby database in-VM. * * @jmx.mbean name="jboss:service=Derby" * extends="org.jboss.system.ServiceMBean" * * @author Alexey Loubyansky * @version $Revision: 81038 $ */ public class DerbyDatabase extends ServiceMBeanSupport implements DerbyDatabaseMBean, MBeanRegistration { /** * Default password: empty string. */ private static final String DEFAULT_PASSWORD = ""; /** * Default user: sa. */ private static final String DEFAULT_USER = "sa"; /** * JDBC Driver class: org.apache.derby.jdbc.EmbeddedDriver. */ private static final String JDBC_DRIVER_CLASS = "org.apache.derby.jdbc.EmbeddedDriver"; /** * JDBC URL common prefix: jdbc:derby:. */ private static final String JDBC_URL_PREFIX = "jdbc:derby:"; /** * Default data subdir: derby. */ private static final String DERBY_DATA_DIR = "derby"; /** * Default database name: default. */ private static final String DEFAULT_DATABASE_NAME = "default"; /** * Database name. */ String name = DEFAULT_DATABASE_NAME; /** * Database user. */ private String user = DEFAULT_USER; /** * Database password. */ private String password = DEFAULT_PASSWORD; /** * Hold a connection for in process derby. */ private Connection connection; /** * Set the database name. * * @jmx.managed-attribute */ public void setDatabase(String name) { if (name == null) { name = DEFAULT_DATABASE_NAME; } this.name = name; } /** * Get the database name. * * @jmx.managed-attribute */ public String getDatabase() { return name; } /** * @return the password * * @jmx.managed-attribute */ public String getPassword() { return password; } /** * @return the user * * @jmx.managed-attribute */ public String getUser() { return user; } /** * @param password * * @jmx.managed-attribute */ public void setPassword(String password) { if (password == null) { password = DEFAULT_PASSWORD; } this.password = password; } /** * @param user * * @jmx.managed-attribute */ public void setUser(String user) { if (user == null) { user = DEFAULT_USER; } this.user = user; } protected ObjectName getObjectName(MBeanServer server, ObjectName name) throws MalformedObjectNameException { return name == null ? OBJECT_NAME : name; } protected void startService() throws Exception { String dbURL = JDBC_URL_PREFIX + System.getProperty("jboss.server.data.dir") + '/' + DerbyDatabase.DERBY_DATA_DIR + '/' + name + ";create=true"; log.info("starting derby " + dbURL); // hold a connection so hypersonic does not close the database connection = getConnection(dbURL); } protected void stopService() throws Exception { try { getConnection("jdbc:derby:;shutdown=true"); log.error("According to the docs, should have caught an exception!"); } catch(SQLException e) { log.info("Derby shutdown successfully.", e); } connection = null; } /** * Get the connection. * * @param dbURL jdbc url. * * @return the connection, allocate one if needed. * * @throws Exception */ private synchronized Connection getConnection(String dbURL) throws Exception { if (connection == null) { ClassLoader cl = Thread.currentThread().getContextClassLoader(); Class.forName(JDBC_DRIVER_CLASS, true, cl).newInstance(); connection = DriverManager.getConnection(dbURL, user, password); } return connection; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy