KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > sessionViewer > business > AppDetailSessionListImpl


1 package sessionViewer.business;
2
3 import java.util.Vector JavaDoc;
4 import java.util.Enumeration JavaDoc;
5 import com.lutris.appserver.server.httpPresentation.servlet.*;
6 import com.lutris.appserver.server.*;
7 import com.lutris.appserver.server.session.*;
8 import com.lutris.appserver.server.session.Session;
9 import com.lutris.appserver.server.sessionContainerAdapter.*;
10 import sessionViewer.spec.*;
11 import javax.servlet.*;
12 import javax.servlet.http.*;
13 import org.mortbay.jetty.*;
14 import org.mortbay.http.*;
15 import org.mortbay.servlet.*;
16 import org.mortbay.jetty.servlet.*;
17 import java.util.Date JavaDoc;
18
19 public class AppDetailSessionListImpl implements AppDetailSessionList{
20     
21     
22  public Vector JavaDoc[] getList(String JavaDoc application) throws Exception JavaDoc {
23       
24        Vector JavaDoc[] result = new Vector JavaDoc[5];
25        result[0] = new Vector JavaDoc();
26        result[1] = new Vector JavaDoc();
27        result[2] = new Vector JavaDoc();
28        result[3] = new Vector JavaDoc();
29        result[4] = new Vector JavaDoc();
30        
31        Application app = null;
32        com.lutris.appserver.server.session.SessionManager sessionManager = null;
33        String JavaDoc sessionID=null;
34        Session session = null;
35        
36       HttpContext sc=GlobalImpl.getServlet(application);
37     
38    try{
39       Servlet s=null;
40       ServletHandler ttt=(ServletHandler)sc.getHandler(Class.forName("org.mortbay.jetty.servlet.ServletHandler"));
41       ServletHolder sss=ttt.getServletHolder("enhydra");
42     try{
43         s= sss.getServlet();
44        }catch(Exception JavaDoc e){
45        }
46       if (s!=null){
47             app = ((HttpPresentationServlet)s).getApplication();
48         
49                 sessionManager = app.getSessionManager();
50       
51        if ((sessionManager instanceof ContainerAdapterSessionManager) || (sessionManager instanceof JmxContainerAdapterSessionManager))
52              {
53            AbstractSessionManager manager=(AbstractSessionManager)((ServletHandler)(sc.getHandler(Class.forName("org.mortbay.jetty.servlet.ServletHandler")))).getSessionManager();
54                java.util.Map JavaDoc ses= manager.getSessionMap();
55                java.util.Set JavaDoc keys=ses.keySet();
56                Object JavaDoc[] keysId=keys.toArray();
57            try{
58              for(int i=0;i<keysId.length;i++)
59                {
60               com.lutris.appserver.server.session.Session es=null;
61               HttpSession httpsession=null;
62           httpsession=(HttpSession)ses.get((String JavaDoc)keysId[i]);
63           es=(com.lutris.appserver.server.session.Session)httpsession.getAttribute("session");
64                      try {
65                          result[0].addElement((String JavaDoc)keysId[i]);
66                      }catch (Exception JavaDoc e){
67                   result[0].addElement("Couldn't get Enhydra Session ID !");
68                  }
69                      if (httpsession!=null){
70                           manageEnhydraData(es,result);
71                       manageTime(httpsession,result);
72                   }else {
73                         result[1].addElement("Couldn't get Enhydra Session User!");
74                         result[2].addElement("Couldn't get SessionData!");
75                         result[3].addElement("Couldn't get session creation time!");
76                     result[4].addElement("Couldn't get session last access time!");
77                      }
78                 }//for
79

80               } catch (Exception JavaDoc ex){
81                 System.out.println("Couldn't get number of active sessions for "+application+" servlet!");
82                     
83             }
84          }else{
85              try{
86                 Enumeration JavaDoc sessionKeys = sessionManager.getSessionKeys();
87                 
88                 while (sessionKeys.hasMoreElements()) {
89                   sessionID = (String JavaDoc) sessionKeys.nextElement();
90                   
91                  if (sessionManager.sessionExists(sessionID)){
92                     result[0].addElement(sessionID);
93                     session = sessionManager.getSession(Thread.currentThread(),sessionID);
94              
95                     if (session!=null){
96                     
97                       manageEnhydraData(session,result);
98                       manageTime(session.getHttpSession(),result);
99                       
100                       }else {
101                             result[1].addElement("Couldn't get Enhydra Session User!");
102                             result[2].addElement("Couldn't get SessionData!");
103                             result[3].addElement("Couldn't get session creation time!");
104                         result[4].addElement("Couldn't get session last access time!");
105                         }
106                 }else {
107                         result[0].addElement("Couldn't get SessionID!");
108                         result[1].addElement("Couldn't get Enhydra Session User!");
109                         result[2].addElement("Couldn't get SessionData!");
110                         result[3].addElement("Couldn't get session creation time!");
111                 result[4].addElement("Couldn't get session last access time!");
112                 }
113                 
114                 
115               }//while
116

117          } catch (SessionException ex){
118                 System.out.println("Couldn't get number of active sessions for "+application+" servlet!");
119                 
120             }
121         
122         
123         }//else
124

125            
126        }else{//non-enhydra servlets
127
try{
128           HashSessionManager manager=(HashSessionManager)((ServletHandler)(sc.getHandler(Class.forName("org.mortbay.jetty.servlet.ServletHandler")))).getSessionManager();
129           java.util.Map JavaDoc ses= manager.getSessionMap();
130           java.util.Set JavaDoc keys=ses.keySet();
131           Object JavaDoc[] keysId=keys.toArray();
132           HttpSession httpsession=null;
133      
134          for(int i=0;i<keysId.length;i++)
135             {
136             httpsession=(HttpSession)ses.get((String JavaDoc)keysId[i]);
137            try{
138                result[0].addElement((String JavaDoc)keysId[i]);
139            }catch (Exception JavaDoc e){
140                result[0].addElement("Couldn't get Session ID !");
141            }
142            result[1].addElement("Couldn't get Enhydra Session User!");
143            result[2].addElement("Couldn't get SessionData!");
144            manageTime(httpsession,result);
145             }
146         } catch (Exception JavaDoc ex){
147                 System.out.println("Couldn't get number of active sessions for "+application+" servlet!");
148                 
149      }
150       }
151       
152        
153     }catch(Exception JavaDoc e){
154        
155         System.out.println("Couldn't acess to servlet :"+application+" !");
156                 
157      }
158        return result;
159     }
160     
161 private void manageTime(HttpSession httpsession,Vector JavaDoc[] result){
162     
163        try {
164              Date JavaDoc d = new Date JavaDoc(httpsession.getCreationTime());
165              result[3].addElement( d.toString());
166        }catch (Exception JavaDoc e){
167              result[3].addElement("Couldn't get session creation time!");
168        }
169        try {
170              Date JavaDoc d = new Date JavaDoc(httpsession.getLastAccessedTime());
171              result[4].addElement( d.toString());
172            }catch (Exception JavaDoc e){
173              result[4].addElement("Couldn't get session last access time!");
174        }
175     
176 }
177
178
179 private void manageEnhydraData(Session session,Vector JavaDoc[] result){
180     try {
181         result[1].addElement(session.getUser().getName());
182     }catch (Exception JavaDoc e){
183         result[1].addElement("Couldn't get Enhydra Session User!");
184         }
185         try {
186             result[2].addElement(session.getSessionData().toString());
187         }catch (Exception JavaDoc e){
188             result[2].addElement("Couldn't get SessionData!");
189     }
190     
191     
192 }
193   
194 }
195
196
Popular Tags