<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    openfire

    研究

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      0 隨筆 :: 3 文章 :: 7 評(píng)論 :: 0 Trackbacks
    openfire3.6.3插件開發(fā)方法說(shuō)明:
    作用:初始化時(shí)在控制臺(tái)打印測(cè)試消息。

    開發(fā)環(huán)境:winxp/myeclipse6.5/jdk1.5&1.6/mysql5.0/openfire3.6.3

    QQ群:28588322 (openfire專題研究小組)

     

    開發(fā)步驟:
    1. 布署openfire3.6.3源碼(請(qǐng)參考o(jì)penfire3.6.3導(dǎo)入eclipse項(xiàng)目實(shí)現(xiàn)方法)
    結(jié)構(gòu)如下:

    2. src/plugins目錄下新建文件夾itvi。并按下圖的目錄結(jié)構(gòu)新建對(duì)應(yīng)的文件。
    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;

    /**
    * 處理客戶端發(fā)來(lái)的IQ,并回送結(jié)果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("測(cè)試插件啟動(dòng)成功");
    }

    }

    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;

    /**
    * 處理客戶端發(fā)來(lái)的IQ,并回送結(jié)果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("非法的請(qǐng)求類型");
    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工具。在環(huán)境變量中,

    添加 path=C:\Program Files\Java\jdk1.5.0_09\;D:\Program Files\MyEclipse6.5\eclipse\plugins\org.apache.ant_1.7.0.v200706080842\bin (如果原來(lái)有path,在變量值的尾部添加半角分號(hào) ; 然后再加入上面的jdk和ant路徑 )

    b.編譯

    進(jìn)入cmd,進(jìn)入 openfire/build所在目錄:輸入命令:ant plugins 等待執(zhí)行完,而且沒有報(bào)錯(cuò),說(shuō)明打包成功。在openfire3.6.3\target\openfire\plugins目錄下就生成了itvi.jar

    4.測(cè)試
    啟動(dòng)openfire ,如發(fā)現(xiàn)控制臺(tái)輸出“測(cè)試插件啟動(dòng)成功”,說(shuō)明插件開發(fā)成功。





    posted on 2009-02-19 18:08 jyleon 閱讀(6581) 評(píng)論(4)  編輯  收藏 所屬分類: openfire插件

    評(píng)論

    # re: openfire3.6.3插件開發(fā)方法(經(jīng)小組測(cè)試成功) 2009-06-15 18:24 jakai
    你好像沒有寫build.xml的內(nèi)容,怎么會(huì)編譯呢?  回復(fù)  更多評(píng)論
      

    # re: openfire3.6.3插件開發(fā)方法(經(jīng)小組測(cè)試成功)[未登錄] 2009-06-15 20:06 jyleon
    不需要寫build文件,用 eclipse的ant工具編譯  回復(fù)  更多評(píng)論
      

    # re: openfire3.6.3插件開發(fā)方法(經(jīng)小組測(cè)試成功)[未登錄] 2010-04-21 11:05 kevin
    你好,怎么第一個(gè)圖看不了呢  回復(fù)  更多評(píng)論
      

    # re: openfire3.6.3插件開發(fā)方法(經(jīng)小組測(cè)試成功)[未登錄] 2010-12-02 12:38 Edward
    請(qǐng)問在客戶端如何訪問openfire里面自己開發(fā)的插件?
    QQ:21519776  回復(fù)  更多評(píng)論
      


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 午夜神器成在线人成在线人免费 | 亚洲中文字幕乱码一区| 国产成人久久AV免费| 亚洲伊人久久精品影院| 91视频免费观看| 国产亚洲综合一区柠檬导航| 91视频精品全国免费观看| 亚洲AV永久精品爱情岛论坛| 拍拍拍无挡免费视频网站| 亚洲AV无码一区二区乱孑伦AS | 免费下载成人电影| 亚洲一卡2卡3卡4卡乱码 在线 | 亚欧人成精品免费观看| 亚洲国产日产无码精品| 久久精品女人天堂AV免费观看| 91在线亚洲综合在线| 天堂亚洲免费视频| 国产精品成人免费观看| 亚洲av网址在线观看| 中文字幕成人免费视频| 亚洲色大情网站www| 免费国产在线观看不卡| 中国一级全黄的免费观看| 亚洲人成电影亚洲人成9999网| 蜜臀AV免费一区二区三区| 亚洲综合av一区二区三区不卡 | 亚洲伊人久久大香线蕉苏妲己| 日韩精品免费一级视频| 偷自拍亚洲视频在线观看99| 亚洲自偷自偷图片| 免费看h片的网站| 国产成人人综合亚洲欧美丁香花| 亚洲黄片手机免费观看| 久久国产精品免费视频| 一本色道久久88—综合亚洲精品 | 亚洲AV无码专区电影在线观看| 免费观看美女用震蛋喷水的视频| 亚洲国产欧洲综合997久久| 亚洲一区爱区精品无码| 四虎永久在线精品免费网址| 国产va免费精品|