簡體   English   中英

如何為Crud創建插件Openfire

[英]How to create plugin openfire for crud

我是openfire的新手,也是第一次使用Java。在嘗試為Crud開發插件時,我陷入了困境。 您能給我一些樣本來提高Crud插件的功能嗎? 感謝您之前的幫助。

您可以從以下答案開始: 使用aSmack Client映射Openfire自定義插件

並按照官方教程給出答案的前三點。

關於CRUD:

假設您想將所有消息作為XML審核到數據庫中,那么您將實現PacketInterceptor只是為了保持簡單的場景。

您的課程插件如下所示:

public class MyCustomPlugin implements Plugin, PacketInterceptor {//foo}

initializePlugin方法中,您將具有如下調用:

public void initializePlugin(PluginManager manager, File pluginDirectory)
{
    InterceptorManager.getInstance().addInterceptor(this);
}

在方法interceptPacket中是這樣的:

@Override
public void interceptPacket(Packet packet, Session session,
        boolean incoming, boolean processed) throws PacketRejectedException {


    if (!processed)
    {
     boolean done =  doMyCRUDAction(packet);
    }

        if (!done)
{ //do something if error occourred}
    }

現在讓我們在數據庫上寫:

private static final String AUDIT_CHAT =
             "INSERT INTO MYTABLE(MESSAGEASXML) VALUES (?)";

private boolean doMyCRUDAction(Packet packet)
{
    if ((packet instanceof Message))
        {
            Message message = (Message) packet.createCopy();
boolean isAudited = false;

        Connection con = null;
        PreparedStatement statement = null;
        try {
            con = DbConnectionManager.getConnection();


            statement = con.prepareStatement(AUDIT_CHAT);


            statement.setString(1, message.toString());


            statement.executeQuery();

            isAudited = true;

        }
        catch (SQLException e) {
            Log.error(e.getMessage(), e);

        }
        catch (Exception ex)
        {
             Log.error(ex.getMessage(), ex);
        }
        finally {
            DbConnectionManager.closeConnection(statement, con);
        }


        return isAudited;
}
}

請記住,這是工作代碼的簡化片段,因此可能需要修復一些sintax

如果CRUD必須遵循顯式的IQ請求,則必須擴展IQHandler並創建自定義IQ並以handleIQ(IQ packet)方法發送給客戶端。 您可以簽入Openfire源代碼以獲取詳細和復雜的實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM