第三节中我们阅读了org.jivesoftware.openfire.starter.ServerStarter文件到91行,继续吧!
这节我们跳过108行之前的从108行开始学习,91行到107行相对比较简单。
从第108行到113行主要做了2件事情
第一:加载系统用到的jar包跟zip包到classpath中
第二:通过反射加载org.jivesoftware.openfire.XMPPServer类文件。
一:那么如何加载文件到classpath中呢
-
openfire用什么加载文件到classpath中:openfire中用org.jivesoftware.openfire.starter.JiveClassLoader加载文件到classpath中(该类是继承了URLClassLoader)
-
openfire加载文件到classpath的方法:
首先找出jar跟zip类型的文件,代码如下
12345678910111213File[] jars = libDir.listFiles(
new
FilenameFilter() {
public
boolean
accept(File dir, String name) {
boolean
accept =
false
;
String smallName = name.toLowerCase();
if
(smallName.endsWith(
".jar"
)) {
accept =
true
;
}
else
if
(smallName.endsWith(
".zip"
)) {
accept =
true
;
}
return
accept;
}
});
然后调用父类URLClassLoader的addURL方法加载文件到classpath中,代码如下
12345for
(
int
i =
0
; i < jars.length; i++) {
if
(jars[i].isFile()) {
addURL(jars[i].toURI().toURL());
}
}
二:如何通过反射加载文件
1
2
3
4
5
6
7
8
|
//创建了一个自定义的类加载器,该类加载器同时加载了所需要的jar包 ClassLoader loader = new JiveClassLoader(parent, libDir);
//设置自定义的类加载器为当前线程的类加载器 Thread.currentThread().setContextClassLoader(loader); //利用当前线程的类加载器加载类文件,注意:这里需要带包名写全,不然项目中不通包中出现相同类文件就可能出现找不到的情况 Class containerClass = loader.loadClass( "org.jivesoftware.openfire.XMPPServer" );
containerClass.newInstance();
|
到这里org.jivesoftware.openfire.starter.ServerStarter文件都阅读完毕,ServerStarter中主要做了如下几件事情:
-
获取classpath路径
-
把.pack文件转换为jar文件
-
获取当前线程的类加载器
-
创建自定义类加载器,并加载jar文件跟zip文件到classpath中
-
利用自定义的类加载器启动org.jivesoftware.openfire.XMPPServer类文件
下一节的就进入org.jivesoftware.openfire.XMPPServer文件的源码阅读
相关推荐
Openfire源码 缺失的jar包- jetty-jmx-8.0.0.M2.jar 。还有其他jar包请查看
【标题】"openfire-red5-spark-rtmps-required-files" 涉及到的是一个针对企业内部通信的二次开发项目,它结合了Openfire、Red5和Spark这三款工具,以提供更加定制化的实时通信解决方案。 Openfire是一款开源的即时...
### Openfire源码在Eclipse中的部署步骤详解 #### 一、概述 本文将详细介绍如何在Eclipse开发环境中部署Openfire源代码。Openfire是一款基于XMPP协议的即时消息服务器,由Ignite Realtime组织开发并维护。由于其...
四、源码学习与开发实践 通过阅读Openfire源码,开发者可以了解即时通讯系统的底层实现,学习如何处理并发连接、优化性能和保证安全性。此外,源码中的注释和文档也能帮助理解设计决策和最佳实践。对于想要二次开发...
9. **国际化与本地化**:Openfire支持多种语言,源码中包含本地化处理,可以帮助理解如何在软件中实现多语言支持。 10. **日志系统**:良好的日志记录对于调试和监控系统状态至关重要。Openfire使用了Log4j或...
将下载好的源码包解压缩到指定的硬盘位置,例如`D:\Openfire-3.6.4`。 #### 四、创建工程 接下来需要在MyEclipse中创建一个新的Java项目来导入Openfire源码: 1. 启动MyEclipse。 2. 在菜单栏中选择`File` > `...
ios即时通讯客户端开发之-mac上搭建openfire服务器 - 月光的尽头 - 博客园.webarchive ) 转发
Openfire的IM Gateway插件kraken-gateway.jar 版本V1.1.2Openfire的IM Gateway插件kraken-gateway.jar 版本V1.1.2Openfire的IM Gateway插件kraken-gateway.jar 版本V1.1.2
2. **添加库文件**: 在项目属性的`Java Build Path`页面下,将`Openfire/target/openfire/lib`目录下的所有JAR文件添加到项目中。 3. **设置运行配置**: - 创建一个新的Java Application运行配置。 - 在`Main`选项...
- 首先,将下载的 `openfire.tar` 文件解压,并将解压后的 `openfire` 文件夹移动到 `/usr/local/` 目录下。 ```bash tar -xvf openfire.tar mv openfire /usr/local/ ``` ##### 2. 设置配置 - 修改 `/usr/...
2. 新建 Java 项目:在 Eclipse 中新建一个 Java 项目,项目名与源码文件名必须一样。 3. 添加 jar 包:将 coherence.jar 和 tangosol.jar 添加到 build 目录下的 lib 目录下。 三、解决错误 1. 实现抽象方法:在 ...
### Openfire 源代码在 Eclipse 3.5.2 中的部署、编译、运行与安装 #### 一、准备工作 在开始之前,需要确保已经下载了 Openfire(版本 3.6.4)、Spark(版本 2.5.8)以及 Smack(版本 3.1.0)。由于 Spark 的源码...
### Openfire源码分析 #### 一、Openfire概述 **Openfire**是一款基于XMPP协议的开源实时通信服务器,XMPP(可扩展消息处理协议)又称为Jabber协议,是一种开放标准的即时通讯协议。Openfire的核心功能主要包括...
在本文中,我们将深入探讨如何部署和运行Openfire 3.9.1的源码,以及在这个过程中可能遇到的关键知识点。 首先,我们需要从官方网站下载Openfire 3.9.1的源代码。这通常是一个.zip或.tar.gz格式的压缩包,包含所有...
将此JAR文件复制到Openfire服务器的`plugins/`目录下,Openfire会自动检测并加载新的或更新的插件。 8. **测试与调试** 启动Openfire服务器,通过管理控制台检查插件是否成功加载。利用Openfire的日志系统或集成...
源码中可以看到如何建立和维护与Openfire的连接,以及如何处理登录、离线消息、群聊和文件传输等功能。 3. **GUI设计**:Spark的用户界面是用Swing和JavaFX构建的,这在源码中会体现为大量的UI组件和事件监听器。...
此时,可以先将出错的jar文件移除,再将`buildlib`目录下的所有jar文件及子目录中的jar文件添加到项目中。 - 在Eclipse中,右键点击项目名称,选择Build Path > Configure Build Path。 - 在弹出的对话框中,选择...