ServerInitializer
ServerInitializer負責初始化server. 其實現(xiàn)ServletContextListener缩滨,也就是在web啟動的時候會進行初始化的動作九杂。
/**
* Initializes the Sqoop server. This listener is also responsible for
* cleaning up any resources occupied by the server during the system shutdown.
*/
public class ServerInitializer implements ServletContextListener {
private static final Logger LOG = Logger.getLogger(ServerInitializer.class);
public void contextDestroyed(ServletContextEvent arg0) {
SqoopServer.destroy();
}
public void contextInitialized(ServletContextEvent arg0) {
try {
SqoopServer.initialize();
} catch (Throwable ex) {
// We are assuming that by default we are running as the only app inside
// the tomcat and hence we want to try kill entire tomcat on our load failure.
if("true".equals(System.getProperty(ConfigurationConstants.KILL_TOMCAT_ON_FAILURE, "true"))) {
LOG.error("Sqoop server failed to start", ex);
System.exit(1);
}
throw new RuntimeException("Sqoop server failed to start.", ex);
}
}
}
sqoop_server的源代碼
/**
* Entry point for initializing and destroying Sqoop server
*/
public class SqoopServer {
private static final Logger LOG = Logger.getLogger(SqoopServer.class);
public static void destroy() {
....
}
public static void initialize() {
try {
LOG.info("Booting up Sqoop server");
SqoopConfiguration.getInstance().initialize();
AuthenticationManager.getInstance().initialize();
AuthorizationManager.getInstance().initialize();
AuditLoggerManager.getInstance().initialize();
RepositoryManager.getInstance().initialize();
ConnectorManager.getInstance().initialize();
Driver.getInstance().initialize();
JobManager.getInstance().initialize();
LOG.info("Sqoop server has successfully boot up");
} catch (Exception ex) {
LOG.error("Server startup failure", ex);
throw new RuntimeException("Failure in server initialization", ex);
}
}
}
sqoop_server類分為兩個部分, initialize方法負責初始化相應(yīng)的資源。destroy方法負責釋放資源官脓。destroy的代碼和initialize的是相對應(yīng)的。為了節(jié)省空間,故略去相對應(yīng)的destroy的代碼揪惦。
從上面的代碼中,可以看出 sqoop_server的初始化過程包括對以下對象的初始化:
- SqoopConfiguration對象罗侯, 其保存sqoop的相關(guān)配置信息
- AuthenticationManager對象器腋, 其負責
- AuthorizationManager對象, 其負責
- AuditLoggerManager對象, 其負責
- RepositoryManager對象纫塌, 其負責
- ConnectorManager對象再愈, 其負責
- Driver對象, 其負責
- JobManager對象护戳, 其負責
后面的文章將分別對各個對象進行詳細分析翎冲。 這里暫不敘述。