文档章节

openfire插件开发

丁佳辉
 丁佳辉
发布于 2017/02/10 11:01
字数 1013
阅读 16
收藏 0

  1、 在上一篇博文中,我介绍了Openfire3.9.3源代码导入eclipse中开发配置指南后,在这篇博文中,我介绍一下openfire插件的开发,因为在很多使用openfire的过程中,需要更改openfire默认的一些行为,这就涉及到插件的开发。这里我也是写一个HelloWorld的入门案例,希望起到一些抛砖引玉的作用,也算是对我工作,学习的一个总结吧,欢迎大家给我留言提出问题和不足,大家共同进步。

      2、案例插件的功能

      这个插件很简单,就是在openfire Server启动时,和关闭时,在控制台打印出消息。

      3、插件开发的目录结构设计

       先来看一下当前openfire在eclipse中的目录结构:

目录太长,我截取一部分,现在,我们开始写插件。在\openfire_src\src\plugins目录下新建一个helloWorld的文件夹,然后在helloWorld目录下新建一个src的文件夹,放页面和源文件,再新建一个lib目录放第三方的jar包,然后在src文件夹下面新建web,java两个文件夹,web下面放置页面,在这个案例没有用到,可以不建,java文件夹下面放置java源文件,现在目录结构如下:

changelog.html、plugin.xml、readme.html这三个文件分别是你的插件修改日志文件,插件文件和自述文件,其中plugin.xml这个文件很重要,后面我还要解释,先空着,logo_large.gif和logo_small.gif是插件的logo文件,我随便拷了两个。各位,做好上面的步骤以后,注意了,跟openfire自带插件的目录结构不一样,细心的朋友可能注意到了,我新建的src下面有个java目录,而openfire自带插件则没有,而是跑到上面去了,如下:

不要着急,做完这一步,我们的插件就跟openfire自带插件一样了,步骤截图如下:

这时,我们看到,src目录下的java目录不见了,而在上面的源码目录有了我们自己插件了,截图如下:

好了,我们先建一个包,如下:

输入包名:

现在包建好了,我们在这个包中建一个java文件,名为:HelloWorldPlugin,我就不截图,这个学过java的人就应该知道,内容如下:

 

[java] view plain copy

 在CODE上查看代码片派生到我的代码片

  1. package com.helloworld;  
  2.   
  3. import java.io.File;  
  4.   
  5. import org.jivesoftware.openfire.XMPPServer;  
  6. import org.jivesoftware.openfire.container.Plugin;  
  7. import org.jivesoftware.openfire.container.PluginManager;  
  8.   
  9. public class HelloWorldPlugin implements Plugin {  
  10.     private XMPPServer server;  
  11.   
  12.     public HelloWorldPlugin() {  
  13.   
  14.     }  
  15.   
  16.     @Override  
  17.     public void initializePlugin(PluginManager manager, File pluginDirectory) {  
  18.         server = XMPPServer.getInstance();  
  19.         System.out.println("HelloWorldPlugin----start");  
  20.         System.out.println(server.getServerInfo());  
  21.     }  
  22.   
  23.     @Override  
  24.     public void destroyPlugin() {  
  25.         System.out.println("HelloWorldPlugin----destroy");  
  26.     }  
  27.   
  28. }  

内容很简单,就是在openfire启动和关闭时,在控制台打印出一条消息。保存好了,我们的java源文件就写好了,现在我们该来写plugin.xml文件了,内容如下:

 

 

[html] view plain copy

 在CODE上查看代码片派生到我的代码片

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <plugin>  
  4.     <class>com.helloworld.HelloWorldPlugin</class>  
  5.     <name>helloWorld</name>  
  6.     <description>First Openfire Custom Plugin.</description>  
  7.     <author>xieyuan</author>  
  8.     <version>1.0.0</version>  
  9.     <date>14/07/2014</date>  
  10.     <minServerVersion>3.9.0</minServerVersion>  
  11.       
  12.     <adminconsole>  
  13.     </adminconsole>  
  14.   
  15. </plugin>  

以及注意上面的class的配置,那个配置是最为重要的,配置的是插件的全路径;name是插件的名称,安装后的插件名称;author是插件作者;adminconsole是配置插件关联的页面的;这里不需要。

 

       4、编译插件

       展开\openfire_src\build目录,我们发现有一个build.properties.template文件,我们将其重命名为:build.properties,在这个build.properties中加上一行:plugin=helloWorld,截图如下:

使用ant编译插件,截图操作如下:

在弹出的target中选择build one plugin,点击Apply,Run:

之后,我们在控制台上看到:

构建成功,我们在相应的目录下,可以看到,生成的插件包:helloWorld.jar

现在我们来运行我们的插件,看在控制台上能不能打印相应的信息,启动openfire,我们看到在控制台上一句:

好了,大功告成,网上有很多人问,怎么调试插件,这不很简单,直接debug openfire不就行了:

终于完成,希望对大家有所裨益!!!睡觉

本文转载自:http://blog.csdn.net/lovexieyuan520/article/details/37774909

丁佳辉
粉丝 20
博文 446
码字总数 203356
作品 0
浦东
程序员
私信 提问
XMPP学习笔记-LESSON-007:XMPPServer.java之Plugin开发

网上关于openfire开发的文字非常多,在这里推荐一篇文章: http://redhacker.iteye.com/blog/1919329 openfire插件开发之完美开发 这是单独开发openfire插件的的一个实例。 不过我个人还是建议...

今幕明
2014/02/21
100
0
基于开源 Openfire 聊天服务器 - 开发Openfire 聊天记录插件

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

ibm_hoojo
2013/03/29
0
0
跟我一步一步开发自己的Openfire插件

这篇是简单插件开发,下篇聊天记录插件。 开发环境: System:Windows WebBrowser:IE6+、Firefox3+ JavaEE Server:tomcat5.0.2.8、tomcat6 IDE:eclipse、MyEclipse 8 开发依赖库: Jdk1.6...

ibm_hoojo
2013/03/07
0
0
openfire插件开发整合SpringMVC openfire mybatis开发问题

@明舞 你好,想跟你请教个问题: 最近由于公司要开发openfire的插件,整合springmvc openfire mybatis的插件,之前并没有接触过openfire,然后我找到了您以前的帖子: openfire如何整合sprin...

mzloverrun9527
2016/02/02
1K
2
centos 6.5 搭建openfire

1:安装java环境 yum in stall java* 2:安装mysql 参见http://my.oschina.net/denglz/blog/98434 3:安装openfire 解压 openfire39_3.tar 并移动解压后的目录到/opt目录下 执行/opt/openfire/b......

求学ing
2014/06/28
710
2

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
29分钟前
25
0
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
9
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部