注意: Openfire生成插件的jar不是像Spark一样通过build.xml生成

而是在命令行 ant plugins 实现生成插件的

这篇生成插件的方法很好 我看到最好的

http://blog.chinaunix.net/uid-25434387-id-333577.html

作用:初始化时在控制台打印测试消息。

开发环境:winxp/eclipse3.6/jdk1.5&1.6/mysql5.0/openfire3.7

开发步骤:

1. 布署openfire3.7源码

2. src/plugins目录下新建文件夹itvi。并按下图的目录结构新建对应的文件。

plugin.xml文件代码如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <plugin>
  3. <class>org.jivesoftware.openfire.plugin.Itvi</class>
  4. <name>Itvi</name>
  5. <description>Broadcasts messages to users.</description>
  6. <author>openfireteam</author>
  7. <version>1.7.0</version>
  8. <date>2/19/2009</date>
  9. <url>http://openfireteam.blogjava.net</url>
  10. <minServerVersion>3.6.3</minServerVersion>
  11. </plugin>

Itvi.java文件代码如下:

  1. package org.jivesoftware.openfire.plugin;
  2. import org.dom4j.Element;
  3. import org.jivesoftware.openfire.IQHandlerInfo;
  4. import org.xmpp.packet.*;
  5. import org.jivesoftware.openfire.handler.IQHandler;
  6. import org.jivesoftware.openfire.auth.UnauthorizedException;
  7. /**
  8. * 处理客户端发来的IQ,并回送结果IQ
  9. *
  10. * @author Phoenix
  11. *
  12. * Mar 14, 2008 4:55:33 PM
  13. *
  14. * version 0.1
  15. */
  16. import org.dom4j.DocumentHelper;
  17. import org.dom4j.Element;
  18. import org.dom4j.QName;
  19. import org.jivesoftware.openfire.XMPPServer;
  20. import org.jivesoftware.openfire.container.Plugin;
  21. import org.jivesoftware.openfire.container.PluginManager;
  22. import org.jivesoftware.openfire.disco.IQDiscoInfoHandler;
  23. import org.jivesoftware.openfire.disco.IQDiscoItemsHandler;
  24. import org.jivesoftware.openfire.forms.DataForm;
  25. import org.jivesoftware.openfire.forms.FormField;
  26. import org.jivesoftware.openfire.forms.spi.XDataFormImpl;
  27. import org.jivesoftware.openfire.forms.spi.XFormFieldImpl;
  28. import org.jivesoftware.openfire.resultsetmanager.ResultSet;
  29. import org.jivesoftware.openfire.resultsetmanager.ResultSetImpl;
  30. import org.jivesoftware.openfire.user.User;
  31. import org.jivesoftware.openfire.user.UserManager;
  32. import org.jivesoftware.openfire.user.UserNotFoundException;
  33. import org.jivesoftware.util.*;
  34. import org.xmpp.component.Component;
  35. import org.xmpp.component.ComponentException;
  36. import org.xmpp.component.ComponentManager;
  37. import org.xmpp.component.ComponentManagerFactory;
  38. import org.xmpp.packet.IQ;
  39. import org.xmpp.packet.IQ.Type;
  40. import org.xmpp.packet.JID;
  41. import org.xmpp.packet.Packet;
  42. import org.xmpp.packet.PacketError;
  43. import org.xmpp.packet.PacketError.Condition;
  44. import java.io.File;
  45. import java.util.*;
  46. import java.util.Map.Entry;
  47. public class Itvi implements Plugin
  48. {
  49. private XMPPServer server;
  50. /*
  51. * (non-Javadoc)
  52. *
  53. * @see org.jivesoftware.openfire.container.Plugin#destroyPlugin()
  54. */
  55. public void destroyPlugin()
  56. {
  57. }
  58. /*
  59. * (non-Javadoc)
  60. *
  61. * @see org.jivesoftware.openfire.container.Plugin#initializePlugin(org.jivesoftware.openfire.container.PluginManager,
  62. * java.io.File)
  63. */
  64. public void initializePlugin(PluginManager manager, File pluginDirectory)
  65. {
  66. server = XMPPServer.getInstance();
  67. server.getIQRouter().addHandler(new ItviIQHander()); //
  68. System.out.println("测试插件启动成功");
  69. }
  70. }

最后输出语句“测试插件启动成功”在控制台显示乱码,将此改为""

ItviIQHander.java文件代码如下:

  1. package org.jivesoftware.openfire.plugin;
  2. import org.dom4j.Element;
  3. import org.jivesoftware.openfire.IQHandlerInfo;
  4. import org.xmpp.packet.*;
  5. import org.jivesoftware.openfire.handler.IQHandler;
  6. import org.jivesoftware.openfire.auth.UnauthorizedException;
  7. /**
  8. * 处理客户端发来的IQ,并回送结果IQ
  9. * @author Phoenix
  10. * Mar 14, 2008 4:55:33 PM
  11. * version 0.1
  12. */
  13. public class ItviIQHander extends IQHandler
  14. {
  15. private static final String MODULE_NAME = "group tree handler";
  16. private static final String NAME_SPACE = "com:im:group";
  17. private IQHandlerInfo info;
  18. public ItviIQHander()
  19. {
  20. super(MODULE_NAME);
  21. //info = new IQHandlerInfo("gruops", NAME_SPACE);
  22. info = new IQHandlerInfo("query", "jabber:iq:roster");
  23. //这里我们对”联系人”的IQ进入监控
  24. }
  25. /*
  26. * (non-Javadoc)
  27. *
  28. * @see org.jivesoftware.openfire.handler.IQHandler#getInfo()
  29. */
  30. @Override
  31. public IQHandlerInfo getInfo()
  32. {
  33. return info;
  34. }
  35. /*
  36. * (non-Javadoc)
  37. *
  38. * @see org.jivesoftware.openfire.handler.IQHandler#handleIQ(org.xmpp.packet.IQ)
  39. */
  40. @Override
  41. public IQ handleIQ(IQ packet) throws UnauthorizedException
  42. {
  43. IQ reply = IQ.createResultIQ(packet);
  44. Element groups = packet.getChildElement();//1
  45. if (true)
  46. {
  47. System.out.println("非法的请求类型111111");
  48. }
  49. if (!IQ.Type.get.equals(packet.getType()))
  50. {
  51. System.out.println("非法的请求类型");
  52. reply.setChildElement(groups.createCopy());
  53. System.out.println("返回的最终XML-SetError前"+reply.toXML());
  54. reply.setError(PacketError.Condition.bad_request);
  55. System.out.println("返回的最终XML-SetError后"+reply.toXML());
  56. return reply;
  57. }
  58. //String userName = StringUtils.substringBefore(packet.getFrom().toString(),"@");
  59. //GroupManager.getInstance().initElement(groups,userName);
  60. //reply.setChildElement(groups.createCopy());//2
  61. //System.out.println("返回的最终XML" reply.toXML());
  62. return reply;
  63. }
  64. }

3.打包插件

a.第一次打包需配置ant工具。在环境变量中,

添加 path=C:\Program Files\Java\jdk1.5.0_09\;D:\Program Files\MyEclipse6.5\eclipse\plugins\org.apache.ant_1.7.0.v200706080842 \bin (如果原来有path,在变量值的尾部添加半角分号 ; 然后再加入上面的jdk和ant路径 )

b.编译

进入cmd,进入 openfire/build所在目录:输入命令:ant plugins 等待执行完,而且没有报错,说明打包成功。在openfire3.6.3\target\openfire\plugins目录下就生成了itvi.jar

4.测试

启动openfire ,如发现控制台输出“测试插件启动成功”,说明插件开发成功。

转自:http://www.blogjava.net/duanzhimin528/archive/2010/07/14/326146.html

注:这是第一次开发插件,纠结中成功!但是控制台没有打印出“测试插件启动成功”信息!待研究。。。

问题解决:

主要是控制台不打印汉字,改为英语,一切OK!以下是运行效果:

转载于:https://www.cnblogs.com/IamThat/archive/2013/06/01/3112609.html

Openfire插件开发相关推荐

  1. openfire 插件开发

    1. 在上一篇博文中,我介绍了Openfire3.9.3源代码导入eclipse中开发配置指南后,在这篇博文中,我介绍一下openfire插件的开发,因为在很多使用openfire的过程中,需要更改o ...

  2. openfire插件开发的四种方式

    openfire 的插件可以访问所有openfire的API.这给我们的插件实现提供了巨大的灵活性.以下提供了四种比较常用的插件集成方式. 1.Register a plugin as a Compo ...

  3. openfire 插件开发例子

    2019独角兽企业重金招聘Python工程师标准>>> 好久都没有写东西了.今天总结一下之前开发的一些openfire插件. 这次的插件需要提供一个HTTP的接口.通过HTTP来对o ...

  4. openfire插件开发流程

    项目准备 参考:http://www.yunliaoim.com/im/866.html 我们可以在源码目录的plugins下新建一个maven插件module,当然,也可以新建一个project去开 ...

  5. 在XMPP的JAVA开源实现Openfire中,增加LBS 附近的人功能

    1. XMPP协议 与 Openfire XMPP协议是IM领域的标准协议了,具体可参考  http://xmpp.org   及RFC6120,RFC6121,RFC6122等相关文档. http: ...

  6. openfire 开发QQ群、微信群等固定群插件

    根据实际应用需求,基于openfire xmpp server 开发了完整的IM解决方案插件 1.1.1 用户注册 2 1.1.1.1用户修改个人信息 3 1.1.1.2用户修改密码 4 1.1.1. ...

  7. openfire开发

    Openfire源码分析 http://www.bitiliu.com/archives/143 openfire插件开发之完美开发 基于开源 Openfire 聊天服务器 - 开发Openfire ...

  8. 朱雀雀openfire+spark相关的中文资料

    难得找几篇openfire+spark相关的中文资料 从朱雀雀的博客里找到几篇文章,很有启发,也在这里转载一下. 开发你自己的XMPP IM - [J2EE] 最近没在Blog 上露脸,为撒类?应师兄 ...

  9. 基于开源 Openfire 聊天服务器 - 开发Openfire 聊天记录插件

    上一篇文章介绍到怎么在自己的Java环境中搭建openfire插件开发的环境,同时介绍到怎样一步步简单的开发openfire插件.一步步很详细的介绍到简单插件开发,带Servlet的插件的开发.带JS ...

最新文章

  1. Linux之设置http代理
  2. python和php对比
  3. linux学习-防火墙
  4. ios 下拉放大 上拉缩小_为啥鞠婧祎发量这么多?截图放大十倍她的“发缝”,网友:真密集...
  5. 性能提升一个数量级,大杀器来了!| 文内福利
  6. Flash背景透明的代码
  7. 113_Power Pivot 销售订单之重复购买率及购买间隔天数相关
  8. Flex Module优化
  9. Java-在线聊天系统-线程
  10. Oracle数据泵的使用
  11. 使用PPT进行屏幕录制
  12. 我的Jdon安装第三步出错解决
  13. Linux中一些最优秀的浏览器
  14. iOS打包pod spec
  15. HTML+CSS简单静态页面——安利首页
  16. REVIT中一次性导出项目里的族及“项目族管理”操作
  17. python常用文本处理方法小结
  18. 计算机网络做网线,用网线直接把两台电脑联接,怎样做网线
  19. oracle安装搜狗输入法教程,mac中如何正确地安装搜狗输入法?
  20. 手机直播助手连接到服务器,5步解决多开抖音直播伴侣的提示:服务器终点无法运行操作或者创建视频源失败请重试解决方法视频教程...

热门文章

  1. Mybatis中查询结果resultMap使用分析
  2. c#连接数据库SqlHelper报错
  3. 解决libc.so.6: version `GLIBC_2.14' not found问题
  4. 【转】java编程思想第20章的注解例子用到的com.sun.mirror的jar包
  5. Oracle 12C -- 预定义audit policies
  6. [Ajax] jQuery中的Ajax -- 04-异步提交表单
  7. IE CSS Bug及解决方案参考手册
  8. LeetCode--144,94,145,102 二叉树的前序、中序、后序、层序遍历(递归,迭代,栈,队列)
  9. word2003计算机考试题,[2018职称计算机Word2003考前练习题] 2018年职称计算机考试练习题库...
  10. 计算机视觉专业要学什么课程,[08本]“计算机视觉基础”课程介绍和课件