/*
 * Copyright (c) 2011-2013, 2015 Eike Stepper (Loehne, Germany) and others. All rights reserved. This program and the
 * accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this
 * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html Contributors: Eike Stepper - initial API
 * and implementation
 */

/**
 * Server concepts for dealing with Net4j-based repositories and fail-over infrastructure.
 */
package org.eclipse.emf.cdo.server.net4j;
