openfire3.6.3插件开发方法说明:
作用:初始化时在控制台打印测试消息。
开发环境:winxp/myeclipse6.5/jdk1.5&1.6/mysql5.0/openfire3.6.3
:28588322 (openfire专题研究小组)
开发步骤:
1. 布署openfire3.6.3源码(请参考openfire3.6.3导入eclipse项目实现方法)
结构如下:
2. src/plugins目录下新建文件夹itvi。并按下图的目录结构新建对应的文件。
plugin.xml文件代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<plugin>
<class>org.jivesoftware.openfire.plugin.Itvi</class>
<name>Itvi</name>
<description>Broadcasts messages to users.</description>
<author>openfireteam</author>
<version>1.7.0</version>
<date>2/19/2009</date>
<url>http://openfireteam.blogjava.net</url>
<minServerVersion>3.6.3</minServerVersion>
</plugin>
Itvi.java文件代码如下:
package org.jivesoftware.openfire.plugin;
import org.dom4j.Element;
import org.jivesoftware.openfire.IQHandlerInfo;
import org.xmpp.packet.*;
import org.jivesoftware.openfire.handler.IQHandler;
import org.jivesoftware.openfire.auth.UnauthorizedException;
/**
* 处理客户端发来的IQ,并回送结果IQ
*
* @author Phoenix
*
* Mar 14, 2008 4:55:33 PM
*
* version 0.1
*/
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.QName;
import org.jivesoftware.openfire.XMPPServer;
import org.jivesoftware.openfire.container.Plugin;
import org.jivesoftware.openfire.container.PluginManager;
import org.jivesoftware.openfire.disco.IQDiscoInfoHandler;
import org.jivesoftware.openfire.disco.IQDiscoItemsHandler;
import org.jivesoftware.openfire.forms.DataForm;
import org.jivesoftware.openfire.forms.FormField;
import org.jivesoftware.openfire.forms.spi.XDataFormImpl;
import org.jivesoftware.openfire.forms.spi.XFormFieldImpl;
import org.jivesoftware.openfire.resultsetmanager.ResultSet;
import org.jivesoftware.openfire.resultsetmanager.ResultSetImpl;
import org.jivesoftware.openfire.user.User;
import org.jivesoftware.openfire.user.UserManager;
import org.jivesoftware.openfire.user.UserNotFoundException;
import org.jivesoftware.util.*;
import org.xmpp.component.Component;
import org.xmpp.component.ComponentException;
import org.xmpp.component.ComponentManager;
import org.xmpp.component.ComponentManagerFactory;
import org.xmpp.packet.IQ;
import org.xmpp.packet.IQ.Type;
import org.xmpp.packet.JID;
import org.xmpp.packet.Packet;
import org.xmpp.packet.PacketError;
import org.xmpp.packet.PacketError.Condition;
import java.io.File;
import java.util.*;
import java.util.Map.Entry;
public class Itvi implements Plugin
{
private XMPPServer server;
/*
* (non-Javadoc)
*
* @see org.jivesoftware.openfire.container.Plugin#destroyPlugin()
*/
public void destroyPlugin()
{
}
/*
* (non-Javadoc)
*
* @see org.jivesoftware.openfire.container.Plugin#initializePlugin(org.jivesoftware.openfire.container.PluginManager,
* java.io.File)
*/
public void initializePlugin(PluginManager manager, File pluginDirectory)
{
server = XMPPServer.getInstance();
server.getIQRouter().addHandler(new ItviIQHander()); //
System.out.println("测试插件启动成功");
}
}
ItviIQHander.java文件代码如下:
package org.jivesoftware.openfire.plugin;
import org.dom4j.Element;
import org.jivesoftware.openfire.IQHandlerInfo;
import org.xmpp.packet.*;
import org.jivesoftware.openfire.handler.IQHandler;
import org.jivesoftware.openfire.auth.UnauthorizedException;
/**
* 处理客户端发来的IQ,并回送结果IQ
*
* @author Phoenix
*
* Mar 14, 2008 4:55:33 PM
*
* version 0.1
*/
public class ItviIQHander extends IQHandler
{
private static final String MODULE_NAME = "group tree handler";
private static final String NAME_SPACE = "com:im:group";
private IQHandlerInfo info;
public ItviIQHander()
{
super(MODULE_NAME);
info = new IQHandlerInfo("gruops", NAME_SPACE);
}
/*
* (non-Javadoc)
*
* @see org.jivesoftware.openfire.handler.IQHandler#getInfo()
*/
@Override
public IQHandlerInfo getInfo()
{
return info;
}
/*
* (non-Javadoc)
*
* @see org.jivesoftware.openfire.handler.IQHandler#handleIQ(org.xmpp.packet.IQ)
*/
@Override
public IQ handleIQ(IQ packet) throws UnauthorizedException
{
IQ reply = IQ.createResultIQ(packet);
Element groups = packet.getChildElement();//1
if (!IQ.Type.get.equals(packet.getType()))
{
System.out.println("非法的请求类型");
reply.setChildElement(groups.createCopy());
reply.setError(PacketError.Condition.bad_request);
return reply;
}
//String userName = StringUtils.substringBefore(packet.getFrom().toString(),"@");
//GroupManager.getInstance().initElement(groups,userName);
//reply.setChildElement(groups.createCopy());//2
//System.out.println("返回的最终XML" reply.toXML());
return reply;
}
}
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 ,如发现控制台输出“测试插件启动成功”,说明插件开发成功。
分享到:
相关推荐
openfire3.6.3插件开发方法说明: winxp/myeclipse6.5/jdk1.5&1.6/mysql5.0/openfire3.6.3 开发步骤:1. 布署openfire3.6.3源码(请参考openfire3.6.3导入eclipse项目实现方法)
4. **安装SDK**:Openfire提供了SDK,包含了开发插件所需的库和API文档。下载SDK后,将其添加到你的IDE中作为项目依赖。 5. **创建新插件项目**:在IDE中创建一个新的Java项目,根据Openfire的插件结构建立目录和...
自己制作的chm版本文档,对于即时通讯通讯服务端开发。
开发者需要熟悉XMPP协议、Java编程和Web开发的相关知识,才能有效地利用Openfire的API进行插件开发。而部署源码则涉及到构建流程、依赖管理和服务器配置,确保插件能够在Openfire环境中正常运行。
标题中的“openfire 插件开发”指的是Openfire系统中的插件开发技术。Openfire是一款开源的即时通讯(Instant Messaging, IM)服务器,基于XMPP协议,提供了丰富的API和插件扩展机制,允许开发者创建自定义功能来...
OpenFire插件开发系列的第一部分主要涉及如何搭建OpenFire的二次开发环境,为后续的插件开发工作做好准备。OpenFire是一款开源的即时通讯服务器,它基于Java技术,支持XMPP协议,允许开发者通过编写插件来扩展其功能...
Openfire 的插件开发对于扩展其功能至关重要。在国内,关于Openfire及其插件开发的中文资料较为稀缺,因此这篇资料显得尤为珍贵。 ### Openfire 的安装与配置 1. **下载**:首先需要从官方或者其他可靠的源获取...
openfire shell插件
本项目是一个关于在Openfire服务器上开发插件的简单示例,旨在帮助开发者快速理解和入门Openfire插件的开发流程。 首先,Openfire插件是扩展Openfire功能的一种方式,它们可以增加新的管理界面、实现自定义逻辑或...
二、在 Eclipse 中部署可开发插件的 Openfire 为了开发 Openfire 插件,我们需要使用 Eclipse 和 Ant。下面是详细的步骤: 1. 下载 Openfire 源码,例如 openfire_src_3_9_3.zip。 2. 解压 Openfire 源码到 ...
1. **Plugin类**:这是插件的核心,继承自`org.jivesoftware.openfire.plugin.Plugin`类,并重写其中的初始化和销毁方法,以完成插件的加载和卸载逻辑。 2. **XML配置文件**:每个插件都需要一个`plugin.xml`文件,...
Openfire是一款开源的即时通讯...开发插件的过程中,开发者需要对这些知识点有充分的理解,并且需要具备相关的开发经验和调试技巧。只有这样,才能开发出高质量、稳定可靠的Openfire插件来满足各种即时通讯的需求。
在这个“Openfire插件开发 访问jsp servlet”项目中,我们将探讨如何在Openfire环境中开发一个插件,同时利用JavaServer Pages(JSP)和Servlet技术来处理HTTP请求。 首先,让我们理解Openfire插件开发的基本流程:...
**Openfire简单插件开发详解** Openfire是一款开源的即时通讯服务器,它基于XMPP(Extensible Messaging and Presence Protocol)协议,为企业和开发者提供了一种高效、可扩展的实时通信平台。Openfire插件系统允许...
本教程将引导初学者了解如何开发第一个Openfire插件,从而深入理解Openfire的架构和插件开发流程。 1. **Openfire插件体系结构** Openfire插件是Java编写的独立模块,它们通过Openfire提供的API与核心服务交互。每...
它继承自Openfire的Plugin接口,并实现其中的方法,如`initializePlugin()`和`destroyPlugin()`,用于启动和关闭插件服务。 2. **配置界面(Configuration Interface)**:如果插件需要用户配置,那么会包含用于...
本示例将带你走进Openfire插件开发的世界,通过一个简单的Servlet插件来介绍开发流程。 首先,我们需要理解Openfire插件的基本结构。一个Openfire插件通常包含以下几个部分: 1. **Plugin.java**:这是插件的核心...
插件开发人员指南是为那些希望为Openfire增添新功能或定制化服务的开发者准备的资源。以下是对Openfire插件开发核心概念的详细解释: 1. **插件结构**: 插件的基本结构包括一个包含所有必要组件的文件夹。其中,`...
基于 Openfire 的插件开发 Openfire 也提供了一些基本的功能和插件扩展。我们可以使用插件机制来新增服务器端的功能,而不需要修改人家的源代码。Openfire 提供了一些基本的功能,但真的很基本!庆幸的是,它也提供...
### Openfire Servlet插件开发详解 #### 一、Openfire简介与应用场景 Openfire是一款开源的即时消息服务器,它基于XMPP(可扩展的消息处理协议)标准,支持跨平台运行,能够提供稳定、高效的企业级通信解决方案。...