openfire 插件入门学习
来源:互联网 发布:校园网络诈骗是什么 编辑:程序博客网 时间:2024/06/05 09:30
关于插件开发的基本信息,可以参考其自带的文档页plugin-dev-guide.html
中文翻译传送门http://www.360doc.com/content/10/0707/15/1332348_37445649.shtml
实现功能,客户端发送一个IQ包含内容的节给服务器,服务器取得内容,然后广播给所有的在线用户
新定义的iq为<iq id="xxx" type="set"><b xmlns="com:message:broadcasts">输入发言内容</b></iq>
服务器端:
建立org.jivesoftware.openfire.handler.IQHandler的实现类
建立org.jivesoftware.openfire.container.Plugin的实现类
建立plugin.xml文件
打包为任意名称的jar文件
结构如下
test.jar
--classes
--test
--plugin
--BroadcastsIQ.class
--MyPlugin.class
--META-INF
--MANIFEST.MF
--plugin.xml
然后把打好包的jar文件放到openfire的plugins目录下,openfire会自动加载,观察控制台是否输出 插件运行成功
客户端:
建立org.jivesoftware.smack.packet.IQ的实现类
然后在程序中
实现功能比较简单,算是学习openfire插件开发的开始吧
中文翻译传送门http://www.360doc.com/content/10/0707/15/1332348_37445649.shtml
原文地址:http://314858770.iteye.com/blog/908249
开发openfire插件开发流程:http://phoenixtoday.blogbus.com/logs/20285574.html
openfire插件开发指南:http://www.blogjava.net/jyleon/articles/254197.html
openfire插件开发4种方式:http://haidao.blog.51cto.com/59111/307620
openfire插件开发记录:http://blog.csdn.net/jxiaobing/article/details/667938
8
openfire源码构建指导(E文):http://www.igniterealtime.org/builds/openfire/docs/latest/documentation/source-build.html
android openfire 插件开发:http://www.cnmsdn.com/html/201106/1308830174ID10035.html
Java代码实现功能,客户端发送一个IQ包含内容的节给服务器,服务器取得内容,然后广播给所有的在线用户
新定义的iq为<iq id="xxx" type="set"><b xmlns="com:message:broadcasts">输入发言内容</b></iq>
服务器端:
建立org.jivesoftware.openfire.handler.IQHandler的实现类
package test.plugin; import org.dom4j.Element; import org.jivesoftware.openfire.IQHandlerInfo; import org.jivesoftware.openfire.XMPPServer; import org.jivesoftware.openfire.auth.UnauthorizedException; import org.jivesoftware.openfire.handler.IQHandler; import org.xmpp.packet.IQ; public class BroadcastsIQ extends IQHandler { private IQHandlerInfo info; public BroadcastsIQ() { super("用户广播模块"); info = new IQHandlerInfo("b", "com:message:broadcasts"); } @Override public IQHandlerInfo getInfo() { return info; } @Override public IQ handleIQ(IQ packet) throws UnauthorizedException { Element iq = packet.getElement(); Element b = iq.element("b"); String text = b.getText(); XMPPServer.getInstance().getSessionManager().sendServerMessage(null, text);//广播信息 return null; } }
建立org.jivesoftware.openfire.container.Plugin的实现类
package test.plugin; import java.io.File; import java.util.List; import org.jivesoftware.openfire.XMPPServer; import org.jivesoftware.openfire.container.Plugin; import org.jivesoftware.openfire.container.PluginManager; import org.jivesoftware.openfire.handler.IQHandler; public class MyPlugin implements Plugin { private IQHandler iQHandler; @Override public void destroyPlugin() { XMPPServer.getInstance().getIQRouter().removeHandler(iQHandler); System.out.println("插件停止成功"); } @Override public void initializePlugin(PluginManager manager, File pluginDirectory) { iQHandler = new BroadcastsIQ(); XMPPServer.getInstance().getIQRouter().addHandler(iQHandler); System.out.println("插件运行成功"); } }
建立plugin.xml文件
<?xml version="1.0" encoding="UTF-8"?> <plugin> <class>test.plugin.MyPlugin</class> <name>Broadcasts messages</name> <description>This is an Broadcasts messages plugin.</description> <author>me</author> <version>1.0</version> <date>01/01/2011/date> <url>none</url> <minServerVersion>3.0.0</minServerVersion> <licenseType>gpl</licenseType> <adminconsole> </adminconsole> </plugin>
打包为任意名称的jar文件
结构如下
test.jar
--classes
--test
--plugin
--BroadcastsIQ.class
--MyPlugin.class
--META-INF
--MANIFEST.MF
--plugin.xml
然后把打好包的jar文件放到openfire的plugins目录下,openfire会自动加载,观察控制台是否输出 插件运行成功
客户端:
建立org.jivesoftware.smack.packet.IQ的实现类
package test.xmpp; import org.jivesoftware.smack.packet.IQ; public class Broadcasts extends IQ { private String body; public String getElementName() { return "b"; } public String getNamespace() { return "com:message:broadcasts"; } public void setBody(String body) { this.body = body; } public String getBody() { return body; } @Override public String getChildElementXML() { if(getBody() == null){ throw new RuntimeException("Broadcasts body is empty"); } StringBuilder sb = new StringBuilder(); sb.append("<").append(getElementName()).append(" xmlns=\"").append(getNamespace()).append("\">").append(getBody()).append("</").append(getElementName()).append(">"); return sb.toString(); } }
然后在程序中
Broadcasts b = new Broadcasts(); b.setBody("测试广播内容"); b.setType(IQ.Type.SET); conn.sendPacket(b);
实现功能比较简单,算是学习openfire插件开发的开始吧
- openfire 插件入门学习
- openfire插件入门学习
- openfire 插件开发入门
- openfire的入门学习
- openfire 插件开发学习笔记
- openfire 插件开发学习笔记
- openfire插件开发(plugin sevlet)入门
- OpenFire源码学习之十四:插件管理
- OpenFire源码学习之十五:插件开发
- OpenFire源码学习之十五:插件开发
- openfire 插件
- openfire插件
- Openfire插件
- openfire 插件
- openfire入门
- OpenFire源码学习之十九:在openfire中使用redis插件(上)
- OpenFire源码学习之二十:在openfire中使用redis插件(下)
- OpenFire源码学习之十七:HTTP Service插件
- 如何发布ActiveX 控件
- Oracle中序列和触发器的使用
- 各平台一键转发代码
- TreadLocal的原理及实现
- android JNI那些事
- openfire 插件入门学习
- java抽象类简单示例
- 第一章 2节
- 阻止网页内部滚动条mousewheel事件冒泡
- java 连接数据库的关键步骤与技巧
- linux0.11 感受(非技术)
- 学习简单的python----最简单的python +3(写入XML,使用UDP发送)
- 用CEDET浏览和编辑C++代码
- IBM小机培训笔记二(自阅)