1 package org.claros.chat.ajax; 2 3 import java.io.IOException ; 4 import java.io.PrintWriter ; 5 6 import javax.servlet.ServletException ; 7 import javax.servlet.http.HttpServlet ; 8 import javax.servlet.http.HttpServletRequest ; 9 import javax.servlet.http.HttpServletResponse ; 10 import javax.servlet.http.HttpSession ; 11 12 import org.claros.chat.controllers.TrafficController; 13 import org.claros.chat.threads.ChatListener; 14 import org.claros.chat.threads.ChatSender; 15 import org.jivesoftware.smack.XMPPConnection; 16 17 public class Logout extends HttpServlet { 18 19 22 private static final long serialVersionUID = 418575745334176421L; 23 24 27 public Logout() { 28 super(); 29 } 30 31 34 public void destroy() { 35 super.destroy(); 36 } 37 38 48 public void doGet(HttpServletRequest request, HttpServletResponse response) 49 throws ServletException , IOException { 50 response.setHeader("Expires","-1"); 51 response.setHeader("Pragma","no-cache"); 52 response.setHeader("Cache-control","no-cache"); 53 54 response.setContentType("text/html"); 55 PrintWriter out = response.getWriter(); 56 57 logout(request.getSession(false)); 58 out.print("ok"); 59 out.flush(); 60 out.close(); 61 } 62 63 73 public void doPost(HttpServletRequest request, HttpServletResponse response) 74 throws ServletException , IOException { 75 doGet(request, response); 76 } 77 78 82 public static void logout(HttpSession sess) { 83 if (sess != null) { 84 String user = null; 85 try { 86 XMPPConnection conn = (XMPPConnection)sess.getAttribute("conn"); 87 if (conn != null) { 88 user = conn.getUser(); 89 conn.close(); 90 sess.setAttribute("conn", null); 91 } 92 } catch (Throwable e) {} 93 94 try { 95 ChatListener listener = TrafficController.getListener(user); 96 if (listener != null) { 97 listener.terminate(); 98 if (user != null) { 99 TrafficController.removeListener(user); 100 } 101 } 102 } catch (Throwable e) {} 103 104 try { 105 ChatSender sender = TrafficController.getSender(user); 106 if (sender != null) { 107 sender.terminate(); 108 if (user != null) { 109 TrafficController.removeSender(user); 110 } 111 } 112 } catch (Throwable e) {} 113 114 try { 115 sess.invalidate(); 116 } catch (Throwable e) {} 117 } 118 } 119 120 } 121 | Popular Tags |