openfire源码分析---1

main函数

openfire 3.10是openfire最近更新的版本,下面就开始分析openfire源码,在后面的分析中,贴出的源码会删除一些不必要的部分,如果要查看全部源码,最好从官网下载源码对比。

openfire的3.10的源码在Eclipse展开后如下图所示(部分)
这里写图片描述

main函数

openfire的main函数有两个
/src/java/org/jivesoftware/openfire/launcher/Launcher.java
/src/java/org/jivesoftware/openfire/starter/ServerStarter.java

Launcher的main函数主要和图形界面有关
ServerStarter的main函数是重点要关注的

    public static void main(String [] args) {
        new ServerStarter().start();
    }
  • 这里创建了ServerStarter实例并调用了start函数
  • ServerStarter构造函数为空函数

start()

private void start() {
        try {
            final ClassLoader parent = findParentClassLoader();
            String libDirString = System.getProperty("openfire.lib.dir");

            File libDir;
            if (libDirString != null) {
                libDir = new File(libDirString);
            }
            else {
                libDir = new File(DEFAULT_LIB_DIR);
            }

            String adminLibDirString = System.getProperty("openfireHome");
            if (adminLibDirString == null) {
                adminLibDirString = DEFAULT_ADMIN_LIB_DIR;
            }
            else {
                adminLibDirString = adminLibDirString+"/plugins/admin/webapp/WEB-INF/lib";
            }
            File adminLibDir = new File(adminLibDirString);
            ClassLoader loader = new JiveClassLoader(parent, libDir);
            Thread.currentThread().setContextClassLoader(loader);
            Class containerClass = loader.loadClass(
                    "org.jivesoftware.openfire.XMPPServer");
            containerClass.newInstance();
        }
        catch (Exception e) {

        }
    }
  • findParentClassLoader()就是获得类加载器,从本进程开始一步步到系统的类加载器

  • 接下来通过系统环境变量名openfire.lib.dir获得库路径,默认路径为DEFAULT_LIB_DIR = “../lib”,然后构造库的libDir

  • 然后用类似的方法构造adminLibDir管理类库的路径

  • 最后通过类加载器创建org.jivesoftware.openfire.XMPPServer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值