001    package biz.hammurapi.config;
002    
003    /**
004     * Service is a 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    }