public synchronized void start() throws RemoteException
  {
		if (isStarted()) return;
		
		if (!isStartable())
			throw new RemoteException("service restart not allowed");

		Logger.info("starting db service");
    try {
			Logger.info("request from host: " + UnicastRemoteObject.getClientHost());
    }
    catch (ServerNotActiveException soe) {}

    String driver = getJdbcDriver();
		try {
			if (loader != null)
			{
				try
				{
					DriverManager.registerDriver(new MyDriver(driver,loader));
				}
				catch (Throwable t)
				{
					throw new RemoteException("unable to load jdbc driver",t);
				}
			}
			else
			{
				Class.forName(driver);
			}
		}
		catch (ClassNotFoundException e2)
		{
			Logger.error("unable to load jdbc driver " + driver,e2);
			throw new RemoteException("unable to load jdbc driver " + driver,e2);
		}

    started = true;
  }