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 }