openfirespark二次开发服务插件Word下载.docx

上传人:b****1 文档编号:15392174 上传时间:2022-10-29 格式:DOCX 页数:7 大小:19.33KB
下载 相关 举报
openfirespark二次开发服务插件Word下载.docx_第1页
第1页 / 共7页
openfirespark二次开发服务插件Word下载.docx_第2页
第2页 / 共7页
openfirespark二次开发服务插件Word下载.docx_第3页
第3页 / 共7页
openfirespark二次开发服务插件Word下载.docx_第4页
第4页 / 共7页
openfirespark二次开发服务插件Word下载.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

openfirespark二次开发服务插件Word下载.docx

《openfirespark二次开发服务插件Word下载.docx》由会员分享,可在线阅读,更多相关《openfirespark二次开发服务插件Word下载.docx(7页珍藏版)》请在冰豆网上搜索。

openfirespark二次开发服务插件Word下载.docx

组织则用自带的。

(当然这是预想。

其实openfire已经帮我们想过了。

接着、全局搜索了openfire源码中包含ofuser表sql的类。

只有两个类。

很庆幸。

改了之后,改造用户密码加密认证方式。

当然这样做是错误的。

直到我发现类名字似乎有些不对的时候。

DefaultUserProvider哈哈、嘲讽啊。

不出所料有一个实现类JDBCUuserProvider。

直接配置就可以搞定、但是加密sha256加密过程和我平台不一样。

改造后就顺利搞定。

接着、到了插件开发过程。

这个过程很烦人。

网上很多帖子很多人去讲这个开发过程。

或许是两三年前的贴了。

很多过时了。

只能有一点帮助。

更多的是走向了错误的道路。

磕磕碰碰。

最终还是只能从源码中寻求出路。

这个过程整整浪费了我两星期时间。

很痛苦。

所以。

我会针对最新代码聊聊,spark开发一个组织架构树插件。

展示出用户。

并可以与之聊天。

打包openfire,spark插件过程。

打包项目为exe文件。

=======================废话end=========================

openfire10,出来啦。

^_^支持自定义组,性能优化很多。

本文内容有:

  1、openfire自定义用户表需要注意的地方

  2、openfire服务器插件开发(开发环境搭建不说了。

下载项目,目前3.10,3.93都没有任何错)

  3、openfire插件打包。

  3、spark插件开发

  4、openfire/spark打包exe

  

一、Openfire自定义用户表

userManager会在初始化的时候从数据库读取UserProvider/AuthProvider的实现类。

默认是defaultUserProvider

这些实现类参数被保存在ofproperty表中。

我们直接通过更新表完成对自定义用户表的配置。

insertintoofProperty(name,propValue)values

('

jdbcProvider.driver'

'

com.mysql.jdbc.Driver'

),

jdbcProvider.connectionString'

jdbc:

mysql:

//主机地址/数据库?

user=root&

amp;

password=root'

--用户表数据库连接信息

admin.authorizedJIDs'

admin@127.0.0.1'

),

--管理员账号信息,@amy-tang是安装openfire服务器时填写的IP,也可以写成服务器的域名。

jdbcAuthProvider.passwordSQL'

SELECTpasswordFROMsys_userWHEREaccount=?

'

--校验用户名密码sql语句

jdbcAuthProvider.passwordType'

sha256'

),--用户表加密方式

jdbcUserProvider.loadUserSQL'

SELECTfullname,emailFROMsys_userWHEREaccount=?

--查询用户的sql语句

jdbcUserProvider.userCountSQL'

SELECTCOUNT(*)FROMsys_user'

jdbcUserProvider.allUsersSQL'

SELECTaccountFROMsys_user'

jdbcUserProvider.usernameField'

account'

jdbcUserProvider.nameField'

fullname'

jdbcUserProvider.emailField'

Email'

--用户表关键字段的字段名称。

模糊查询用户拼装sql使用.account是账号唯一标示,fullname是用户名。

sys_user是用户表

UPDATEofPropertySETpropValue='

org.jivesoftware.openfire.user.JDBCUserProvider'

WHEREname='

provider.user.className'

;

--设置用户数据库持久层实现类

org.jivesoftware.openfire.auth.JDBCAuthProvider'

provider.auth.className'

--设置密码校验持久层实现类

注意事项:

1、加密key:

plain/md5/sha1/sha256/sha512加密过程详见org.jivesoftware.util.StringUtils.hash(password,"

MD5"

);

     2、admin.authorizedJIDs=admin@主机地址当Openfire修改了主机地址/域名的配置后admin无法登陆服务器。

需要修改数据库中配置的主机地址,

二、Openfire服务器插件开发

1、openfire中插件目录介绍,以及开发前准备。

Openfire源码环境搭建很简单。

目前3.10版,3.9版都没有任何问题直接能用,不用多余下载任何jar。

将源码解压至工作空间,新建相同项目名称即可。

如图:

暂时没用的插件可以buildpathremovefrompath先从工作空间移除。

剩下需要的开发插件如上图右

10的sourceoutputfolder有点问题,指向了一个插件里面。

修改即可。

项目右键—》buildpath—》configurebuildpath..—》Source—》outputfolder:

openfire_src/bin

9问题也不多,网上很多文章都很有用可以检索openfire二次开发去查阅相关搭建开发环境的文章。

开发前,建议先吧xmldebugger插件打开,或者留在src中。

会把所有交互xml打印输出非常有利于调试。

开发插件前,我们可以先看下,自带的那些插件的目录结构。

可以看出来开发插件都是依赖项目开发的,这样直接可以引用项目中的资源,bean。

不建议单独起一个project去开发插件

2、插件开发介绍

例如组织架构插件,我是将它作为一个服务组件进行开发,对外提供组织树的服务。

当客户端访问服务器jabber:

iq:

loadOrg的服务的时候,根据提供的参数返回组织架构,与用户信息、该插件需要实现两个接口Component,Plugin。

贴下代码

OrgTreePlugin代码,

请看打开代码自己查看。

该插件需要实现两个接口Component,Plugin,并实现相应方法。

插件的初始在PluginManager中419行。

可以断点查看插件初始化过程。

419StringclassName=pluginXML.selectSingleNode("

/plugin/class"

).getText().trim();

420plugin=(Plugin)pluginLoader.loadClass(className).newInstance();

服务注册也很简单如:

OrgTreePlugin代码initializePlugin方法。

componentManager.addComponent(serviceName,this);

只是需要注意的是,该服务注册为服务组件的时候,会测试的访问该服务,测试是否正常。

如果出现异常就会自动调用componentManager.removeComponent(serviceName);

,将改服务移除服务组件。

具体代码可以查看InternalComponentManager的addComponent()方法。

代码很简单。

DefaultOrgTreeProvider则为数据访问层。

不再贴了。

插件目录结构如下:

3、插件打包

最初在看openfire插件开发相关文章的时候、都提供了很多打包的方法,不过用着很不开心。

其实项目已经提供了所有各个功能的ant脚本build目录下build.xml文件。

三、spark插件开发

spark插件开发与openfire大略相似,

需要自身了解AWT相关的知识。

打包插件需要注意一点在build.xml中targetname="

build.plugins"

添加自己插件。

这样运行antbuild.plugins的时候就可以打包自己的jar了

build.plugins

&

lt;

subanttarget="

"

&

gt;

filesetdir="

./src/plugins/orgTree/"

includes="

*/build.xml"

/&

/subant&

获取请求服务,处理数据关键代码

//请求消息定义

publicclassOrgTreeLoadextendsIQ

 

privateJSONArraygetOrgTreeJSON(StringorgId)throwsXMPPException{

//获取host

Connectioncon=SparkManager.getConnection();

host=con.getHost();

OrgTreeLoadsearch=newOrgTreeLoad();

search.setType(org.jivesoftware.smack.packet.IQ.Type.SET);

search.setTo("

loadOrg."

+host);

//消息包处理

search.addExtension(OrgTreePacketExtension.getNewPacketExtension(orgId));

PacketCollectorcollector=con.createPacketCollector(newPacketIDFilter(search.getPacketID()));

con.sendPacket(search);

IQresponse=(IQ)collector.nextResult(SmackConfiguration.getPacketRepl

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 初中作文

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

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