Java 如何为crud创建插件openfire
我是openfire的新手,第一次使用java时,我在尝试为crud开发插件时遇到了麻烦。你能给我一些制作crud插件的例子吗?感谢您在…之前的帮助。您可以从以下答案开始: 并按照官方教程给出答案的前3点 关于积垢: 假设您希望在数据库中以XML形式审核所有消息,因此将实现一个Java 如何为crud创建插件openfire,java,plugins,openfire,Java,Plugins,Openfire,我是openfire的新手,第一次使用java时,我在尝试为crud开发插件时遇到了麻烦。你能给我一些制作crud插件的例子吗?感谢您在…之前的帮助。您可以从以下答案开始: 并按照官方教程给出答案的前3点 关于积垢: 假设您希望在数据库中以XML形式审核所有消息,因此将实现一个PacketInterceptor,以保持简单的场景 您的类插件将如下所示: public class MyCustomPlugin implements Plugin, PacketInterceptor {//foo}
PacketInterceptor
,以保持简单的场景
您的类插件将如下所示:
public class MyCustomPlugin implements Plugin, PacketInterceptor {//foo}
在方法initializePlugin中,您将进行如下调用:
public void initializePlugin(PluginManager manager, File pluginDirectory)
{
InterceptorManager.getInstance().addInterceptor(this);
}
在这种情况下:
@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数据包)
方法中发送给客户端。您可以在Openfire源代码中查看详细和复杂的实现