001 package biz.hammurapi.config;
002
003 /**
004 * Service is marker interface. It indicates component
005 * which start() method can be invoked multiple times.
006 * Component maintains internal isStarted flag to make sure that
007 * initialization sequence is executed only once. If one thread
008 * is executing start() method and another thread enters
009 * start() method, then the second thread shall be blocked until the
010 * first thread finishes initialization. The first thread shall awaken
011 * the second thread or threads once component is initialized.
012 * If the same thread enters start() method recursively the component shall
013 * throw ConfigurationException with a message "Circular dependency ...".
014 *
015 * The naming bus invokes start() method of service instances before returning
016 * them from get() method.
017 *
018 * @author Pavel
019 *
020 */
021 public interface Service extends Component {
022
023 }