tigase组件安装及调试过程

http://hi.baidu.com/bngoogle/archive/tag/tigase


这是一篇关于安装tigase的 message-archive   组件的过程;使用的tigase 是 5.2.0  版本;

讲解前,我先介绍一下基础概念;


1、什么是 tigase

答:一个xmpp 聊天服务器,通俗的讲就是一个IM的服务端;

2、什么是 message-archive 组件

答:一个 聊天归档组件;因为tigase的允许以component(组件)或者 plugin(插件)的方式进行扩展(二次开发,不影响升级);作者在wiki里面有讲到因为客户端的原因,没办法记录下 聊天的进程id;


tigase project地址【https://projects.tigase.org/projects/tigase-server】

tigase message archive地址【https://projects.tigase.org/projects/message-archiving】


这个message-archive 使用 xep0136 协议,来记录日志;什么是xep0136【http://xmpp.org/extensions/xep-0136.html#auto】;查看后,你会知道。这个协议有一部分是描述,如何在客户端发送IQ信息允许服务端记录日志;

 Client enables auto archiving

<iq type='set' id='auto1'>

  <auto save='true' xmlns='urn:xmpp:archive'/>

</iq>


知道这个后,你会知道,并非安装了message-archive 组件后,日志就可以记录了;而是要客户端允许了;



那么如何安装?

把message-archive.jar 拷贝到 jars/tigase-message-archiving.jar 然后再 etc/init.properties 写下如下配置;


####begin

--comp-name-1=message-archive

--comp-class-1=tigase.archive.MessageArchiveComponent

message-archive/archive-repo-uri=jdbc:mysql://localhost:3306/tigase?user=root&password=123456&useUnicode=true&characterEncoding=UTF-8&autoCreateUser=true

--sm-plugins=message-archive-xep-0136

sess-man/plugins-conf/message-archive-xep-0136/component-jid=message-archive@mtb0109

sess-man/plugins-conf/message-archive-xep-0136/auto=true

###end


其中 jdbc的uri地址替换成你的jdbc 数据库授权地址;

message-archive@mtb0109 改成 message-archive@你的--virt-host配置


这样子,你启动tigase,就会在etc/tigase.log.0看到如下信息;


INFO:     Adding receiver: MessageArchiveComponent

INFO:     Adding component: MessageArchiveComponent


有看到如下信息,就代表加载该组件成功了。你也许还担心是不是真的加载成功。

那么打开psi,使用 discovery service ;你也会发现该组件(记得要使用管理员账号登陆才能看到 各个组件信息)


在数据库会自动创建两个表;tig_ma_jids、tig_ma_msgs;但是呢,你的聊天记录并没有记录到里面进去;why?


这时候,你只好去下载源码,把源码拷贝装到你的 tigase-server 工程里面;进行断点调试;


如果,你在调试之前,还搞不清楚 component 和 plugin的区别,建议看一下官方的开发介绍【http://www.tigase.org/devel-guide】


原理,简答的说下,通过 plugin 来启动 component。所以,你的断点记得通过plugin找入口,而不要死死的定在 component里面,估计永远都进不去。(这说明一个道理,断点要配合单步执行去看,而不是靠直觉)


虽然这些都做了,你会发现,你需要把 tigase.archive.MessageArchivePlugin 中 getAutoSave 函数 设置为 返回 true 才能有日志记录下来;至于原因,看上面那段xep0136 协议的描述,简单说,就是客户端没授权,既然客户端没授权,那你就手动强制授权吧;


也许,你还会发现,有些文档记录,需要把去强制修改 tigase.server.xmppsession.SessiomManagerConfig 中的 PLUGINS_FULL_PROP_VAL 常量,即添加 "message-archive-xep-0136";实际上上是不用了。因为启动进入,不是通过这里来的吧?实际上我加不加效果都一样;



ok。现在可以记录各个消息了吧?聊一下天吧,然后查看一下数据库,你会发现有内容加载进来了;GOOD LUCK


========================================================================

如果,你幸运的在自己未调试,就看到这篇文章,你会少走很多弯路;包括:

1、xep0136协议的内涵;

2、组件的加载(tigase源码中也有两个范例组件 tigase.server.test.EchoComponent 和 tigase.server.test.TestComponent有空可以看看;其中EchoComponent是发送消息给 echo@hostname 会记录你的pack信息 )

3、客户端service discovery的使用 (使用管理员账号才能使用该功能,有些组件的发现,需要服务端开发支持)

4、解决问题


但是,你也会错过这些经历:

1、信息流的加载过程;(从登录认证到聊天)

2、熟练使用intellij或者eclipse进行断点调试tigase的机会

3、理清tigase类和接口的继承关系的机会;

4、组件是怎样工作的;

5、session-manager的工作原理;



========================================================================

整个过程,我也参考了官网的一些文章,才解决了这些问题,所以,请多搜索吧

http://www.tigase.org/content/some-issues-message-arvhice-tigase 这篇文章很重要

http://www.tigase.org/content/problem-message-archive-and-ssl  这篇文章的提问者有点误导,回答者其实已经说明了一些原理;


http://www.tigase.org/content/get-all-packets-all-domains-components-vs-filters#comment-4774 这篇文章是个坑,记录下来,以免自己再次陷入;可以说,完全不是里面说的原因。但是这篇文章让我有机会深入料及 session-manager 的工作。所以可以说,还是很重要了


有个tigase群的群主 @kc 给了我一些帮助,这里一并感谢他;


========================================================================

同时,我粗略的附上一张图,是我简单归纳类之间关系的一张图,是使用 http://www.processon.com/ 这个工具画的。希望可以帮到你;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值