ImageVerifierCode 换一换
格式:DOCX , 页数:7 ,大小:19.33KB ,
资源ID:2475291      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2475291.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(openfirespark二次开发服务插件.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

openfirespark二次开发服务插件.docx

1、openfirespark二次开发服务插件openfirespark二次开发服务插件 = 废话 begin =最近老大让我为研发平台增加即时通讯功能。告诉我用comet 在web端实现即时通讯。 最初狂搜集资料。不能让自己方向错了。这是很重要的。不过还是难免的周折了一番。测试了一个comet4j的聊天小例子。用它前后端开发成本太大、对服务器也太大压力放弃了。最终决定使用openfire +jsjac.js + JabberHTTPBind 然后实现老大要求的 web 及时通讯功能。很庆幸找到了 hoojo大哥的demo 很不幸,他为了让大家复制代码,自己练习。不提供jar包js下载。(虽然好心

2、但是足足浪费了我两天时间)一个jsjac.js库版本有问题。很费劲的看源码。哎。然后、拿这个小demo 先交差。顺便展示了 spark 和 web聊天窗口,交互即时聊天。顺便构想了一下,修改openfire用户表。让用户来自系统。组织则用自带的。(当然这是预想。其实openfire已经帮我们想过了。)接着、全局搜索了openfire源码中包含ofuser表sql的类。只有两个类。很庆幸。改了之后,改造用户密码加密认证方式。当然这样做是错误的。直到我发现类名字似乎有些不对的时候。DefaultUserProvider 哈哈、嘲讽啊。 不出所料有一个实现类JDBCUuserProvider 。直接

3、配置就可以搞定、但是加密sha256加密过程和我平台不一样。改造后就顺利搞定。接着、到了插件开发过程。这个过程很烦人。网上很多帖子很多人去讲这个开发过程。或许是两三年前的贴了。很多过时了。只能有一点帮助。更多的是走向了错误的道路。磕磕碰碰。最终还是只能从源码中寻求出路。这个过程整整浪费了我两星期时间。很痛苦。所以。我会针对最新代码聊聊,spark 开发一个组织架构树插件。展示出用户。并可以与之聊天。打包openfire,spark插件过程。打包项目为exe文件。等= 废话 end =openfire10,出来啦。_ 支持自定义组,性能优化很多。本文内容有:1、openfire自定义用户表 需要

4、注意的地方2、openfire服务器插件开发 (开发环境搭建不说了。下载项目,目前3.10,3.93都没有任何错)3、openfire插件打包。3、spark插件开发4、openfire/spark 打包exe一、Openfire自定义用户表userManager 会在初始化的时候从数据库读取UserProvider/AuthProvider的实现类。默认是defaultUserProvider这些实现类参数被保存在ofproperty 表中。我们直接通过更新表完成对自定义用户表的配置。insert into ofProperty(name,propValue)values(jdbcProvi

5、der.driver,com.mysql.jdbc.Driver),(jdbcProvider.connectionString,jdbc:mysql:/主机地址/数据库?user=root&password=root), -用户表数据库连接信息(admin.authorizedJIDs,admin127.0.0.1), -管理员账号信息,amy-tang是安装openfire服务器时填写的IP,也可以写成服务器的域名。(jdbcAuthProvider.passwordSQL,SELECT password FROM sys_user WHERE account=?), - 校验用户

6、名密码sql语句(jdbcAuthProvider.passwordType,sha256),- 用户表加密方式(jdbcUserProvider.loadUserSQL,SELECT fullname, email FROM sys_user WHERE account=?), - 查询用户的sql语句(jdbcUserProvider.userCountSQL,SELECT COUNT(*) FROM sys_user), (jdbcUserProvider.allUsersSQL,SELECT account FROM sys_user), (jdbcUserProvider.usern

7、ameField,account), (jdbcUserProvider.nameField,fullname), (jdbcUserProvider.emailField,Email),-用户表关键字段的字段名称。模糊查询用户拼装sql使用.account是账号唯一标示,fullname是用户名。sys_user是用户表UPDATE ofProperty SET propValue=org.jivesoftware.openfire.user.JDBCUserProvider WHERE name=provider.user.className ;-设置用户数据库持久层实现类UPDATE o

8、fProperty SET propValue=org.jivesoftware.openfire.auth.JDBCAuthProvider WHERE name=provider.auth.className-设置密码校验持久层实现类 注意事项:1、加密key :plain/md5/sha1/sha256/sha512 加密过程详见org.jivesoftware.util.StringUtils.hash(password, MD5);2、admin.authorizedJIDs = admin主机地址 当Openfire修改了主机地址/域名的配置后admin无法登陆服务器。需要修改数据

9、库中配置的主机地址, 二、Openfire服务器插件开发1、openfire中插件目录介绍,以及开发前准备。Openfire源码环境搭建很简单。目前3.10版,3.9版都没有任何问题直接能用,不用多余下载任何jar。将源码解压至工作空间,新建相同项目名称即可。如图:暂时没用的插件可以 build path remove from path先从工作空间移除。剩下需要的开发插件如上图右 10 的source output folder 有点问题,指向了一个插件里面。修改即可。项目右键build pathconfigure build path. Sourceoutput folder: openf

10、ire_src/bin9问题也不多,网上很多文章都很有用可以检索 openfire二次开发去查阅相关搭建开发环境的文章。开发前,建议先吧xmldebugger 插件打开,或者留在src 中。会把所有交互xml打印输出非常有利于调试。 开发插件前,我们可以先看下,自带的那些插件的目录结构。可以看出来开发插件都是依赖项目开发的,这样直接可以引用项目中的资源,bean。不建议单独起一个project去开发插件 2、插件开发介绍例如组织架构插件,我是将它作为一个服务组件进行开发,对外提供组织树的服务。当客户端访问服务器 jabber:iq:loadOrg 的服务的时候,根据提供的参数返回组织架构,与用

11、户信息、该插件需要实现两个接口 Component, Plugin。 贴下代码 OrgTreePlugin 代码, 请看打开代码自己查看。该插件需要实现两个接口Component, Plugin,并实现相应方法。插件的初始在PluginManager中419 行。 可以断点查看插件初始化过程。419 String className = pluginXML.selectSingleNode(/plugin/class).getText().trim();420 plugin = (Plugin)pluginLoader.loadClass(className).newInstance();服务

12、注册也很简单 如:OrgTreePlugin 代码initializePlugin 方法。componentManager.addComponent(serviceName, this);只是需要注意的是,该服务注册为服务组件的时候,会测试的访问该服务,测试是否正常。如果出现异常就会自动 调用componentManager.removeComponent(serviceName);,将改服务移除服务组件。具体代码可以查看InternalComponentManager 的addComponent()方法。代码很简单。DefaultOrgTreeProvider则为数据访问层。不再贴了。插件目

13、录结构如下: 3、插件打包 最初在看openfire插件开发相关文章的时候、都提供了很多打包的方法,不过用着很不开心。其实项目已经提供了所有各个功能的ant脚本build目录下 build.xml文件。 三、spark插件开发spark插件开发与openfire大略相似,需要自身了解 AWT相关的知识。打包插件需要注意一点在 build.xml 中 target name=build.plugins 添加自己插件。这样运行 ant build.plugins 的时候就可以打包自己的jar 了build.plugins <subant target=> <fileset dir

14、=./src/plugins/orgTree/ includes=*/build.xml /> </subant> 获取请求服务,处理数据关键代码/请求消息 定义public class OrgTreeLoad extends IQ private JSONArray getOrgTreeJSON(String orgId) throws XMPPException /获取host Connection con = SparkManager.getConnection(); host = con.getHost(); OrgTreeLoad search = new OrgT

15、reeLoad(); search.setType(org.jivesoftware.smack.packet.IQ.Type.SET); search.setTo(loadOrg.+host); /消息包处理 search.addExtension(OrgTreePacketExtension.getNewPacketExtension(orgId); PacketCollector collector = con.createPacketCollector(new PacketIDFilter(search.getPacketID(); con.sendPacket(search); IQ response = (IQ)collector.nextResult(SmackConfiguration.getPacketRepl

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1