openfire獲取所有在線登錄人

編寫插件用於獲取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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章