1.整个插件的目录
2.各个文件的代码
ExamplePlugin
package org.jivesoftware.openfire.plugin;
import java.io.File;
import org.jivesoftware.openfire.XMPPServer;
import org.jivesoftware.openfire.container.Plugin;
import org.jivesoftware.openfire.container.PluginManager;
import org.jivesoftware.openfire.interceptor.PacketInterceptor;
import org.jivesoftware.openfire.interceptor.InterceptorManager;
import org.jivesoftware.openfire.interceptor.PacketRejectedException;
import org.jivesoftware.openfire.session.Session;
import org.xmpp.packet.Packet;
import org.jivesoftware.openfire.user.UserManager;
import org.jivesoftware.util.JiveProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.packet.JID;
import org.xmpp.packet.IQ;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;
import org.jivesoftware.database.SequenceManager;
import org.xmpp.packet.Message;
import org.xmpp.packet.Presence;
public class ExamplePlugin implements PacketInterceptor, Plugin {
private static PluginManager pluginManager;
private InterceptorManager interceptoerManager;
private String domain = JiveProperties.getInstance().get("xmpp.domain");
public ExamplePlugin() {
interceptoerManager = InterceptorManager.getInstance();
}
@Override
public void initializePlugin(PluginManager manager, File pluginDirectory) {
pluginManager = manager;
interceptoerManager.addInterceptor(this);
System.out.println("Exampple add success");
System.out.println("domain = " + domain);
}
@Override
public void destroyPlugin() {
interceptoerManager.removeInterceptor(this);
System.out.println("Exampple destroy success");
}
@Override
public void interceptPacket(Packet packet, Session session,
boolean incoming, boolean processed) throws PacketRejectedException {
}
}
ExampleServlet
package org.jivesoftware.openfire.plugin;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jivesoftware.admin.AuthCheckFilter;
import org.jivesoftware.openfire.XMPPServer;
import org.jivesoftware.util.JiveProperties;
import org.json.JSONException;
import org.json.JSONObject;
import org.xmpp.packet.JID;
import org.xmpp.packet.Message;
public class ExampleServlet extends HttpServlet {
private static final long serialVersionUID = -6093345417438012819L;
private String domain = JiveProperties.getInstance().get("xmpp.domain");
//private ExampleManager exampleManager = ExampleManager.getInstance();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// super.doGet(req, resp);
resp.setContentType("text/plain");
PrintWriter out = resp.getWriter();
System.out.println("example servlet dogetbbbb");
out.print("example servlet dogetbbbb");
out.flush();
}
@Override
public void destroy() {
super.destroy();
}
@Override
public void init() throws ServletException {
super.init();
AuthCheckFilter.addExclude("example/servlet");
AuthCheckFilter.addExclude("example/servlet/exampleServlet");
}
}
//表示该Servlet不需要登录到openfire系统就可以访问
//AuthCheckFilter.addExclude("example/servlet");
//AuthCheckFilter.addExclude("example/servlet/exampleServlet");
web-custom.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<!--Servlet文件路径 -->
<servlet-class>org.jivesoftware.openfire.plugin.ExampleServlet</servlet-class>
<servlet-name>ExampleServlet</servlet-name>
</servlet>
<servlet-mapping>
<servlet-name>ExampleServlet</servlet-name>
<url-pattern>/servlet</url-pattern>
</servlet-mapping>
</web-app>
example-servlet.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>example plugin</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="pageID" content="example-servlet"/>
</head>
<body>
<h3>hello world jsp!! <a href="/plugins/example/servlet">ExampleServlet</a></h3>
<div class="jive-contentBoxHeader">jive-contentBoxHeader</div>
<div class="jive-contentBox">jive-contentBox</div>
<div class="jive-table">
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<thead>
<tr>
<th> sss</th>
<th nowrap>cf</th>
<th nowrap>de</th>
</tr>
</thead>
<tbody>
<tr>
<td>asdf</td>
<td>asdf</td>
<td>asdf</td>
</tr>
<tr class="jive-even">
<td>asdf</td>
<td>asdf</td>
<td>asdf</td>
</tr>
<tr class="jive-odd">
<td>asdf</td>
<td>asdf</td>
<td>asdf</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>
Plugin.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
Plugin configuration for the broadcast plugin.
-->
<plugin>
<class>org.jivesoftware.openfire.plugin.ExamplePlugin</class>
<name>Example</name>
<description>Example messages to users.</description>
<author>Jive Software</author>
<version>1.9.0</version>
<date>9/13/2013</date>
<url>http://www.igniterealtime.org</url>
<minServerVersion>3.9.0</minServerVersion>
<adminconsole>
<tab id="tab-server">
<sidebar id="sidebar-server-settings">
<item id="example-servlet" name="Example Servlet" url="example-servlet.jsp"
description="Click is trigger example plugin" />
</sidebar>
</tab>
</adminconsole>
</plugin>
3.运行效果