由于工作需要,这几天在研究openfire的插件开发,整的头都大了,配置环境、部署源码...由于网上的资料五花八门,几乎每种都试过,好多是走不通的,所以在这里记录一下我部署openfire源码的流程,分享给大家,也方便以后时间长了如果忘记可以参考,这可是我的血泪史啊...
首先,介绍几个概念:
XMPP:就是一个发送接收处理消息的协议,通过XML机制实现
IM:即时通信软件,如QQ、MSN等
Spark Smack 和 Openfire:
这些都是开源的,三个合起来就是一个完整的XMPP IM实现,包括服务器端——Openfire,客户端——Spark,XMPP 传输协议的实现——Smack(XMPP是一个协议,协议是
需要实现的,Smack起到的就是这样的一个作用,就是一套API,可扩展)。三者都是基于Java 语言的实现。
我是做android的,它用到的XMPP协议是asmack(其实和smack差不多的),现在已经实现android客户端向openfire注册、登录、添加好友、获取好友状态、一对一聊天
、建群等功能,其实不难,都是直接调用API就行了。之后就开始研究openfire的插件开发了,开发of插件第一句是部署源码,本文的重点就在这里。
第一步:去openfire官网下载of源码,openfire_src
第二步:下载完成解压到工作空间文件夹内
第三步:在eclipse中新建一个工程,命名:openfire_src,这样就相当于把刚才下载的源码自动导入这个新建的项目里了
第四步:此时,项目肯定会显示红叉,右击openfire_src工程-build path-Configure Build path...-Libraries-将openfire_srcbuildlib下的所有jar包都导入
第五步:导入jar包之后,如果项目还有红叉,说明还缺少三个jar包:coherence.jar、coherence-work.jar、tangosol.jar,搞到这3个包按上面的方法导入,然后按
eclipse的提示处理后,就可以了
第六步:接下来是配置openfire运行时的参数,如下:
Run -- Run configuration
选择Java Application 右键 新建一个Java application 重新命名为openfire
from http://hi.baidu.com/%C8%F4%CB%AA/blog/item/b8c8063dc55b0bce3c6d9744.html
选择刚才建的项目openfire
Main class:(search) org.jivesoftware.openfire.starter.ServerStarter
单击 Arguments 选框
在 VM-Arguments 键入
-DopenfireHome="${workspace_loc:openfire}/target/openfire"
此处实际上是告诉 openfire ,openfireHome 在什么地方,用于eclipse执行
java命令时传递的参数,openfire程序可以通过System.getProperty("openfireHome")得到 openfire的本地位置。
点击classpath 选项
User entries --->Advanced-->Add Folder---> OK
添加以下三目录
openfire::src::i18n
openfire::src::resources::jar
openfire::build::lib::dist
点击Common tab
勾选 Debug和Run复选框
设置虚拟机参数
点击JRE tab
installed JRES -->选中使用的JRE --->Edit -->Default VM Arguments
-Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m
如果是默认的大小很可能报
java.lang.OutOfMemoryError: PermGen space异常。
第七步:利用ant编译openfire
1. eclipse中点击Window-->Show View-->Ant
2. 在Ant 页面点右键,选择 Add Buildfiles...
3. 展开openfire/build文件夹,选择build.xml, 点 OK.
4. 在Ant页面, 展开Openfire XMPP Server,双击 openfire ant 任务,会在控件台上输出运行成功的日志。
至此,openfire源码部署、运行完毕!