1、在安装openfire时,要把mysql设置为不区分大小
在Linux 中 /etc/my.cnf 文件中 在[mysqld]下面加上lower_case_table_names=1
如果不修改此设置 mysql的表 ofUser与ofuser是同时存在的
2、 在配置openfire时,遇到“域”的时候要注意
这个域的作用类似域名的作用,默认为计算机名称,不能乱起(我们用的是xyb.com),如果修改其他终端不能聊天(XMPP的from与to属性的结构就是 用户名@域)
3、在openfire数据库中ofproperty数据表中,字段name为admin.authorizedJIDs相对应的字段propValue的值为openfire后台系统登录的用户,格式为“用户名@域”,多个用户用英文逗号分隔
4、使用
importorg.jivesoftware.database.DbConnectionManager;
Connection conn = DbConnectionManager.getConnection();
可以返回openfire所配置的数据库连接,需要导入openfire.jar,一般在编写openfire插件时使用
5、 一般情况下,主要调试与修改的类是在openfire包下面的,如图
(非一般情况我也没遇到过)
6、openfire消息入口方法是
openfire/nio/ConnectionHandler.java中的
messageReceived(IoSessionsession, Object message)
与
exceptionCaught(IoSessionsession, Throwable cause)
前者是正常的消息处理,后者是错误的消息处理
在这两个方法打断点可以得到XMPP最初的内容
7、 包openfire/muc定义了有关聊天室的功能
8、 包openfire/auth定义了有关身份验证的功能(登录用户名密码验证等)
9、 包openfire/vcard定义了有关个人信息的功能(包括头像与基本资料),相应的数据库表为ofvcard
10、 包openfire/user定义了有关用户的功能,相对应的数据库表为ofuser
11、 目前关于可自定义替换的类(继承或实现系统类)有
openfire/vcard/DefaultVCardProvider.java 有关资料
openfire/user/DefaultUserProvider.java 有关用户
openfire/auth/DefaultAuthProvider.java 有关身份验证
12、如果想不重新编译openfire而重新部署openfire的话,可以修改openfire的配置文件 在openfire源码项目下openfire\target\openfire\conf\openfire.xml文件
在文件中的最下面把<setup>true</setup>修改为<setup>false</setup>后重启openfire即可,同样,该文件也定义了一些openfire有关的基本配置,比如数据库连接
13、离线消息如果是语音的话(我们的语音实现其实传递的也是字符串),因为数据长度过大,所以需要把openfire数据表ofoffline字段stanza类型修改为longtext,否则离线语音不能正常保存
14、linux下安装openfire的默认路径为/opt/openfire
15、编写openfire消息拦截插件时,方法public void interceptPacket(Packet packet, Session session, boolean incoming, boolean processed)中的第四个参数代表是否已拦截,false没有被拦截,所以做聊天记录时当processed为false才进行消息处理
2015-09-09添加
16、如果需要丢弃拦截到的消息,可以跑出PacketRejectedException异常
2015-10-27添加
17、在处理openfire自认证表登录的时候,不仅仅需要处理登录,也需要处理查询用户,因为它们彼此有依赖,单独处理会产生许多问题
持续更新.....................