这个类很是简单,定义了2个变量:
DEFAULT_LIB_DIR 默认的系统包路径,值../lib,能够看出这里的root是$openfireHome/bin,那么../lib,就是$openfireHome/lib目录,这里存放着用到的jar,或者jar.pack(pack?啥东西,一会再说)java
DEFAULT_ADMIN_LIB_DIR 这是默认的插件,即后台管理,他是一个webapp程序,jsp的,web服务器使用jetty,关于插件,之后会详细介绍web
ok,到此,咱们来看,openfire如何启动。服务器
main方法只有一句代码: new ServerStarter().start();app
读代码无聊么,其实挺有乐趣,代码是最好的学习资料,我的认为,:).webapp
看start().
String libDirString = System.getProperty("openfire.lib.dir");
这个干嘛呢?就是代替上面的DEFAULT_LIB_DIR ,意思若是你指定(或配置)了这个值,那么就以这个变量的值为准。jsp
同理还有, System.getProperty("openfireHome");
这个指定openfire的主目录位置。函数
下一步,就是读取lib以及插件的打包文件,解压pack,关注unpackArchives方法。学习
最后,经过ClassLoader,载入到环境变量里。插件
最关键的地方来,经过java反射,实例化org.jivesoftware.openfire.XMPPServer,这个才是xmppserver的核心类server
经过xmppserver,在构造函数中start 服务器。
预知如何启动,请看下节。