编写插件用于获取openfire的在线登录人。
插件结构:
主要代码:
package org.jivesoftware.openfire.plugin.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Collection;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.jivesoftware.admin.AuthCheckFilter;
import org.jivesoftware.openfire.SessionManager;
import org.jivesoftware.openfire.SessionResultFilter;
import org.jivesoftware.openfire.session.ClientSession;
import org.jivesoftware.util.WebManager;
public class OnlineServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
private ServletConfig servletConfig;
public void init(ServletConfig servletConfig) throws ServletException{
super.init(servletConfig);
this.servletConfig = servletConfig;
/** Exclude this servlet from requering the user to login*/
AuthCheckFilter.addExclude("online/status");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("text/plain");
PrintWriter out = response.getWriter();
WebManager webManager = new WebManager();
HttpSession session = request.getSession(true);
webManager.init(request, response, session, servletConfig.getServletContext());
SessionManager sessionManager = webManager.getSessionManager();
int sessionCount = sessionManager.getUserSessionsCount(false);
SessionResultFilter filter = SessionResultFilter.createDefaultSessionFilter();
filter.setSortOrder(0);
filter.setStartIndex(0);
filter.setNumResults(sessionCount);
Collection<ClientSession> sessions = sessionManager.getSessions(filter);
StringBuilder sb = new StringBuilder();
int nCount = 0;
for (ClientSession sess : sessions)
{
String strTmp = sess.getAddress().toString();
strTmp = strTmp.substring(0, strTmp.lastIndexOf("@"));
if(nCount>0)
sb.append(",");
sb.append(strTmp);
nCount++;
}
if(nCount==0)
sb.append("null");
out.flush();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
doGet(request, response);
}
public void destroy() {
super.destroy();
// Release the excluded URL
AuthCheckFilter.removeExclude("online/status");
}
}
源码下载:
src : http://download.csdn.net/detail/dengfangfang11/8359657
jar : http://download.csdn.net/detail/dengfangfang11/8359637