openfire 的启动
ServerStarter main-->start: 然后通过Classload 加载然后创建实例对象。
Class containerClass = loader.loadClass(
"org.jivesoftware.openfire.XMPPServer");
containerClass.newInstance();
XMPPServer
/**
* Creates a server and starts it.
*/
public XMPPServer() {
// We may only have one instance of the server running on the JVM
if (instance != null) {
throw new IllegalStateException("A server is already running");
}
instance = this;
start();
}
单例模式创建对象,然后start:
initialize()
初始化,包括openfire.xml文件的载入,获取host,以及版本信息等
创建插件管理对象
pluginManager = new PluginManager(pluginDir);
判断是否已经安装
if (!setupMode)
然后验证数据库连接是否能够正常使用
然后载入模块,初始化模块,启动模块
loadModules-->initModules-->startModules
启动插件管理器
pluginManager.start();
控制台输出启动信息
最后开启监听
// Notify server listeners that the server has been started
for (XMPPServerListener listener : listeners) {
listener.serverStarted();
}
Openfire 启动完毕。