openfire 源代码研究一 (运行环境的搭建)

来源:互联网 发布:java多态的原理是什么 编辑:程序博客网 时间:2024/05/16 08:48

关于Openfire的介绍在此不多说了,网上有很多关于这个基于JavaXMPP服务器的介绍,也可以通Jivesoftware的官方网站www.jivesofteware.com来寻找关于Openfire的信息。
 
如果研究Openfire的代码,建议第一步在本机上安装Openfire服务器和Spark这款XMPP的客户端程序,这样既可以熟悉一下Openfire的样态和功能,也可以在以后的源代码调试过程中通过Openfire的目录结构得到帮助.

 

 准备工作:Eclipse环境(当然包括JavaSE),Openfire的源代码包(例如:openfire_src_3_3_2.tar.gz,可到jivesoftware官方网站下载),Mysql数据库V5以上(当然可以用其他数据库,但在此例中选用Mysql作为Openfire的后台数据库)。

 

  第一步:有个好心情,通过Openfire的安装包将Openfire安装在本机上,具体实现见http://blog.csdn.net/expendable/archive/2007/06/25/1666122.aspx这里有详细的介绍。(除了数据库的部分)

  第二步:将openfire_src_3_3_2.tar.gz解压后目录下除了ReadmeLicense以外有四个子目录。

<!--[if !supportLists]-->1.               build目录:build目录下收录的是生成安装文件(例如:rpm)所要的一些文件,例如JRE等。<!--[endif]-->

<!--[if !supportLists]-->2.               resources目录:resources目录下收录的是一些为实现国际化(i18n)和本地化的一些编码文件(例如:英文,中文,法文,德文等)。<!--[endif]-->

<!--[if !supportLists]-->3.               documentation目录:documentation目录下收录的是一些关于Openfire安装和配置的信息,但最终要的是这里有Openfire开发的Javadoc<!--[endif]-->

<!--[if !supportLists]-->4.               src目录:顾名思义这个src文件夹就是我们想要的Openfire源代码了,这下面又有许多文件夹,我们只要Java文件夹就好,这里面实现的Openfire的核心功能,通过它就可以调试Openfire了。<!--[endif]-->

  第三步:在Eclipse中将此Java文件夹当成源代码文件夹新建工程,建立新工程后观察Openfireimport的包,发现Openfire用了许多开源工具,而这些库都在上文提到的Build目录的lib目录下(当然也可以到网上下载),将Openfire用到的库都添加到这个新建工程的Referenced Libraries中。或者如果这样一个一个添加比较麻烦的话还有一个方法就是从你安装好的Openfire服务器目录下的lib目录中(例如:”D:/Program Files/Openfire/lib” “/usr/local/openfire/lib”)找到openfire.jar,打开后将里面的org/jivesoftware删除,重新打包成jar并添加到这个新建工程的Referenced Libraries中,这样省去了很多工作。

  第四步:openfire的起始类为org.jivesoftware.openfire.starter.ServerStarter.java 但是直接运行此类却有问题,因为此类是针对Openfire安装包而设计的,此类的功能是将所用到的Jar文件解压并将class文件加载到虚拟机中,而我们要用的却是源代码中我们自己编译好的class文件,所以我们需要一个新的启动类,一个简单的实现如下(当然最好是与ServerStarter.java中的方法一样,用自定义的ClassLoader来将XMPPServer.class加载到虚拟机中):

 

package org.jivesoftware.openfire.starter;

 

import org.jivesoftware.openfire.XMPPServer;

public class StandaloneStarter {

 

    public static void main(String[] args) {

       XMPPServer server = new XMPPServer();

    }

}

 

这样程序就可以跑起来了,最后的问题就是配置文件路径的问题,但我在此不想多少,留给访友调试解决了。

原创粉丝点击