`
yangzc106
  • 浏览: 156395 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

openfire插件开发

XML 
阅读更多

昨天说了怎么配置openfire的开发环境。今天写一点openfire的插件开发。我这里做了一个例子主要是针对于XMPP的通信。后边会说一点smack和openfire通信的实现。

 

注:这里的例子中的注释纯属个人理解。

 

在openfire的源码里有很多插件。我这里实际就是拷贝了其中的一个插件。重名了一下名字。目录结构如下:

 

 

貌似图片传不上来了。如果看不到图,就看看源码中的其他插件的例子。跟其他插件的目录结构是一样一样的。

 

在这些文件里最重要的就是plugin.xml文件。因为有这个文件openfire才认识这个插件。在这个文件里会配置插件的入口类。我这里简单写了一个plugin.xml.示例如下。

<?xml version="1.0" encoding="UTF-8"?>

<plugin>
    <class>org.yangzc.testplugin.TestPlugin</class>
    <name>test Plugin</name>
    <description>test Plugin descript</description>
    <author>yangzc</author>
    <version>1.0.0</version>
    <date>20/6/2011</date>
    <minServerVersion>3.7.0</minServerVersion>
    <databaseKey>testPlugin</databaseKey>
    <databaseVersion>0</databaseVersion>
	
    <adminconsole>
    </adminconsole>
</plugin>

 

class部分就是插件的实现类。气的名字什么的就不用说了,根据英文基本可以猜个差不多。

 

具体TestPlugin的实现。这里也有一个例子:

package org.yangzc.testplugin;

import java.io.File;

import org.dom4j.Element;
import org.jivesoftware.openfire.IQHandlerInfo;
import org.jivesoftware.openfire.XMPPServer;
import org.jivesoftware.openfire.auth.UnauthorizedException;
import org.jivesoftware.openfire.container.Plugin;
import org.jivesoftware.openfire.container.PluginManager;
import org.jivesoftware.openfire.handler.IQHandler;
import org.xmpp.packet.IQ;
import org.xmpp.packet.PacketError;

public class TestPlugin implements Plugin{

	@Override
	public void destroyPlugin() {
	}

	@Override
	public void initializePlugin(PluginManager manager, File pluginDirectory) {
		XMPPServer service = XMPPServer.getInstance();
		service.getIQRouter().addHandler(new MyIQHandler());
	}

	class MyIQHandler extends IQHandler{

		public static final String moduleName = "testPlugin";
		
		private IQHandlerInfo info;
		public MyIQHandler(){
			super(moduleName);
			info = new IQHandlerInfo("group", "com:im:group");//设置监听的命名空间
		}
		
		@Override
		public IQHandlerInfo getInfo() {
			return info;//取得指定监听命名空间的IQHandeler
		}

		@Override
		public IQ handleIQ(IQ packet) throws UnauthorizedException {
			IQ reply = IQ.createResultIQ(packet);
			Element groups = packet.getChildElement();//取得客户端发送过来的xml
			
			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;
		}
		
	}
}

 

在这个实现类中需要实现接口plugin。这个接口包含两个方法。一个是初始化插件,一个是销毁插件动作。

这个例子里在初始化插件的时候通过service添加了一个监听。这里我理解为监听。这个监听可以监听指定命名空间的消息。这个例子里代码很简单。

 

 

明天写点smack和openfire通信的例子。敬请期待...

<!--EndFragment-->

  • 大小: 28.1 KB
1
1
分享到:
评论
2 楼 bluky999 2011-08-19  
LZ的这个好像也只是其他文章的转述,哈哈,没有太大差别;

@LS  ant编译部署插件比较麻烦; 不过个人建议你把写好的插件,从src的上次目录拷贝到openfire_src的src/plugins目录下,然后在openfire_src里执行 ant plugins ,即可编译出来插件来;之后从target目录找到插件的JAR,部署到运行openfire的plugins里即可。
1 楼 yourancao520 2011-07-05  
你好,请问自己写的插件如何打包呢?我最近也是在写openfire插件,但是关于打包不是很会。网上说用install4j.但是我用install4j打包老是出问题。

相关推荐

    openfire插件开发环境搭建

    标题中的“openfire插件开发环境搭建”是指学习和配置Openfire服务器以开发自定义插件的过程。Openfire是一款开源的即时通讯服务器,基于XMPP(Extensible Messaging and Presence Protocol)协议,允许用户进行实时...

    openfire插件开发(1)

    OpenFire插件开发系列的第一部分主要涉及如何搭建OpenFire的二次开发环境,为后续的插件开发工作做好准备。OpenFire是一款开源的即时通讯服务器,它基于Java技术,支持XMPP协议,允许开发者通过编写插件来扩展其功能...

    openfire 插件开发

    综上所述,Openfire插件开发涵盖了一系列技术点,包括对XMPP协议的理解,Java编程技能,Maven项目管理,以及Openfire提供的各种API和工具。通过这些技术,开发者可以构建出强大的、定制化的即时通讯解决方案。

    Openfire插件开发 访问jsp servlet

    在这个“Openfire插件开发 访问jsp servlet”项目中,我们将探讨如何在Openfire环境中开发一个插件,同时利用JavaServer Pages(JSP)和Servlet技术来处理HTTP请求。 首先,让我们理解Openfire插件开发的基本流程:...

    OpenFire插件开发从入门到精通

    本篇文章将深入探讨OpenFire插件开发,旨在帮助开发者从入门到精通,实现移动互联聊天服务器的高效搭建。 首先,了解OpenFire的基本架构至关重要。OpenFire基于XMPP协议,该协议是互联网工程任务组(IETF)定义的一...

    openfire插件开发人员指南

    以下是对Openfire插件开发核心概念的详细解释: 1. **插件结构**: 插件的基本结构包括一个包含所有必要组件的文件夹。其中,`plugin.xml`是定义插件的关键文件,`readme.html`和`changelog.html`是供用户查看的...

    openfire插件开发.pdf

    文档中提到了1.5和1.6版本的JDK,这两个版本都是较早的版本,但足以应对Openfire插件开发的需求。Openfire插件开发时可能要根据使用的JDK版本调整代码,以确保兼容性。 在数据库方面,文档提到了MySQL 5.0版本,这...

    编写Openfire开发插件、部署源码

    总的来说,Openfire插件开发涉及到Java编程、数据库设计、XML配置以及Web服务的构建。开发者需要熟悉XMPP协议、Java编程和Web开发的相关知识,才能有效地利用Openfire的API进行插件开发。而部署源码则涉及到构建流程...

    Openfire插件开发人员指南

    总结来说,Openfire 插件开发的关键在于理解 `plugin.xml` 文件的结构和内容,以及如何组织和编写 Java 类以实现所需功能。通过熟练掌握这些知识,开发者可以轻松地扩展 Openfire 的功能,满足特定的业务需求。从...

    openfire服务器开发插件的简单demo

    总的来说,Openfire插件开发涉及Java编程、XML配置、服务器端API的使用等多个方面,是一个综合性的技术实践。通过不断学习和实践,你将能够创建出满足特定需求的Openfire插件,丰富和拓展Openfire的功能。

    XMPP协议及其服务器端的Openfire插件开发.doc

    综上所述,XMPP协议及其服务器端的Openfire插件开发是构建现代即时通讯系统的重要组成部分,通过XML的灵活性和标准化的优势,它为开发者提供了强大的工具,以创建高度定制化且与各种平台兼容的通信解决方案。

    Openfire插件开发实例

    目的:主要是为了监控Openfire各类message,然后对message body做进一步...局限:因为时间有限,本插件并没有对Openfire message协议进行扩展,都是基于原生的xml协议,因此后续开发还需要进行更加深入的二次开发操作。

    第一个openfire插件源码及说明

    通过这个简单的教程,初学者可以快速上手Openfire插件开发,理解其核心原理,并逐渐掌握更复杂的插件功能。随着经验的积累,你将能够开发出满足各种需求的Openfire插件,丰富和增强Openfire服务器的功能。

    Openfire 及插件开发 . 国内没有中文资料.我自己手写

    JMS(Java Message Service)可能是用于实现异步通信或消息队列的组件,而Spark是一个基于XMPP的桌面聊天客户端,也可能与Openfire插件开发有关。 总之,Openfire插件开发需要开发者具备Java编程基础、XML配置知识...

    openfire 插件简单示例

    本示例将带你走进Openfire插件开发的世界,通过一个简单的Servlet插件来介绍开发流程。 首先,我们需要理解Openfire插件的基本结构。一个Openfire插件通常包含以下几个部分: 1. **Plugin.java**:这是插件的核心...

    openfire插件

    在"openfire_plugin"这个压缩包中,我们很可能会找到一系列与Openfire插件开发相关的源代码文件。这些文件通常包含以下几个部分: 1. **主类(Main Class)**:这是插件的核心部分,负责加载和初始化插件。它继承自...

    openfire简单插件

    **一、Openfire插件开发环境搭建** 在开始开发之前,我们需要搭建Openfire源码环境。首先,你需要在Openfire官网(https://www.igniterealtime.org/projects/openfire/)下载源码。解压后,利用Eclipse或IntelliJ ...

    Openfire 的安装和配置、插件开发

    Openfire 安装配置和插件开发详解 Openfire 是一个基于 XMPP 协议的即时通信服务器,可以实现实时的聊天服务。在本文中,我们将详细介绍 Openfire 的安装和配置过程,并探讨如何使用 Eclipse 进行插件开发。 一、...

Global site tag (gtag.js) - Google Analytics