KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > sessionViewer > business > GlobalImpl


1 package sessionViewer.business;
2
3
4 import com.lutris.appserver.server.*;
5
6 import com.lutris.appserver.server.httpPresentation.servlet.*;
7 import javax.servlet.*;
8 import javax.servlet.http.*;
9
10 import sessionViewer.spec.*;
11 import java.util.List JavaDoc;
12 import java.util.Properties JavaDoc;
13 import java.util.Vector JavaDoc;
14 import java.util.Hashtable JavaDoc;
15 import java.util.Enumeration JavaDoc;
16 import java.util.StringTokenizer JavaDoc;
17 import java.util.Set JavaDoc;
18 import java.util.Date JavaDoc;
19 import javax.management.*;
20 import javax.management.ObjectName JavaDoc;
21 import org.apache.commons.modeler.Registry;
22 import com.lutris.appserver.server.session.*;
23 import com.lutris.appserver.server.sessionEnhydra.*;
24 import com.lutris.appserver.server.user.User;
25
26
27 public class GlobalImpl implements Global {
28
29
30
31 //private static Object alocate = new Object();
32
//private static Vector enhydraApp = new Vector();
33
private static String JavaDoc jonasName="jonas";
34
35 private static MBeanServer mBeanServer;
36
37 public void initialize() {
38   
39     try{
40   jonasName=System.getProperty("jonas.name");
41    }catch(Exception JavaDoc e){
42     jonasName="jonas";
43    }
44
45    if(jonasName==null)
46     jonasName="jonas";
47    
48    
49 }
50
51
52   public static Properties JavaDoc getServletNames()
53    {
54      try{
55    
56   
57     ObjectName JavaDoc oname = new ObjectName JavaDoc(jonasName+":j2eeType=WebModule,*");
58  
59     Set JavaDoc enhydraMBeans= getMBeanServer().queryNames(oname,null);
60     Object JavaDoc[] oi=enhydraMBeans.toArray();
61     
62      Properties JavaDoc apps = new Properties JavaDoc();
63     
64     for(int i=0;i<oi.length;i++)
65      {
66           String JavaDoc context=(String JavaDoc)getMBeanServer().getAttribute((ObjectName JavaDoc)oi[i],"path");
67           String JavaDoc docBase=(String JavaDoc)getMBeanServer().getAttribute((ObjectName JavaDoc)oi[i],"docBase");
68          if(context!=null&&docBase!=null)
69            apps.setProperty(context,docBase);
70      }
71
72
73    return apps;
74
75    }catch(Exception JavaDoc e){
76     return null;
77     }
78  }
79
80
81 public static Integer JavaDoc getSessionNumber(String JavaDoc context,String JavaDoc docBase){
82
83      boolean isEnhydraApp = false;
84          boolean isStandardSessionManager = false;
85   
86          String JavaDoc sessionManagerClassName = null;
87          ObjectName JavaDoc enhydraSessionManagerON = null;
88        
89
90     try{
91     
92        ObjectName JavaDoc onameEnhydra = new ObjectName JavaDoc("EnhydraApplications:type=Context,*");
93        Set JavaDoc enhydraMBeans= getMBeanServer().queryNames(onameEnhydra,null);
94        Object JavaDoc[] oi=enhydraMBeans.toArray();
95     
96      
97     
98    for(int i=0;i<oi.length;i++)
99     {
100         String JavaDoc appName = (String JavaDoc)getMBeanServer().invoke((ObjectName JavaDoc)oi[i],"getAppName",new Object JavaDoc[0], new String JavaDoc[0]);
101     
102     String JavaDoc appRealContext = (String JavaDoc)getMBeanServer().invoke((ObjectName JavaDoc)oi[i],"getAppRealContext",new Object JavaDoc[0], new String JavaDoc[0]);
103     
104     appRealContext = appRealContext.replaceAll("\\\\","/");
105         
106     if(appRealContext.endsWith("/"))
107       appRealContext = appRealContext.substring(0,appRealContext.length()-1);
108         
109         
110     if(appRealContext.endsWith(docBase))
111       {
112         
113       
114         
115           isEnhydraApp =true;
116           enhydraSessionManagerON = new ObjectName JavaDoc("EnhydraApplications:type=SessionManager,name="+appName);
117           
118           try{
119               sessionManagerClassName = (String JavaDoc)getMBeanServer().getAttribute(enhydraSessionManagerON,"Class");
120              }catch(AttributeNotFoundException e){
121            sessionManagerClassName = "com.lutris.appserver.server.sessionEnhydra.StandardSessionManager";
122          }catch(Exception JavaDoc e){
123            return new Integer JavaDoc(0);
124          }
125          
126         
127         if(sessionManagerClassName==null)
128            sessionManagerClassName = "com.lutris.appserver.server.sessionEnhydra.StandardSessionManager";
129         
130         
131          if(sessionManagerClassName.equals("com.lutris.appserver.server.sessionEnhydra.StandardSessionManager") || sessionManagerClassName.equals("com.lutris.appserver.server.sessionEnhydra.SimpleServletSessionManager"))
132            {
133              isStandardSessionManager = true;
134            }
135           else
136            {
137              isStandardSessionManager = false;
138            }
139            break;
140        }
141       
142      }//for
143

144      if(isEnhydraApp && isStandardSessionManager)
145          {
146             Integer JavaDoc sessionNumber = (Integer JavaDoc)getMBeanServer().invoke(enhydraSessionManagerON, "activeSessionCount", new Object JavaDoc[0], new String JavaDoc[0]);
147             return sessionNumber;
148          }
149      else
150          {
151          
152               try{
153               
154               ObjectName JavaDoc oname = new ObjectName JavaDoc(jonasName+":type=Manager,path="+context+",*");
155          
156
157               Set JavaDoc enhydraMBean= getMBeanServer().queryNames(oname,null);
158               Object JavaDoc[] oii=enhydraMBean.toArray();
159          
160          
161           return (Integer JavaDoc)getMBeanServer().getAttribute((ObjectName JavaDoc)oii[0],"activeSessions");
162               }catch(Exception JavaDoc e){
163               return new Integer JavaDoc(0);
164           }
165          }
166     
167     }catch(Exception JavaDoc e){
168     return new Integer JavaDoc(0);
169      }
170    }
171
172 public static String JavaDoc[] getSessionIds(String JavaDoc name){
173  try{
174  
175  
176        
177        Properties JavaDoc map = getServletNames();
178          
179       String JavaDoc warName = (String JavaDoc)map.getProperty(name);
180       
181        String JavaDoc[] result;
182        
183         boolean isEnhydraApp = false;
184         boolean isStandardSessionManager = false;
185   
186         String JavaDoc sessionManagerClassName = null;
187         ObjectName JavaDoc enhydraSessionManagerON = null;
188     
189         
190        ObjectName JavaDoc onameEnhydra = new ObjectName JavaDoc("EnhydraApplications:type=Context,*");
191        Set JavaDoc enhydraMBeans= getMBeanServer().queryNames(onameEnhydra,null);
192        Object JavaDoc[] oi=enhydraMBeans.toArray();
193   
194     
195    for(int i=0;i<oi.length;i++){
196
197       
198      
199        // String contextName = (String)getMBeanServer().invoke((ObjectName)oi[i],"getAppContext",new Object[0], new String[0]);
200
// String appName = (String)getMBeanServer().invoke((ObjectName)oi[i],"getAppName",new Object[0], new String[0]);
201

202   
203      //if(contextName.equals(name.substring(1)))
204
String JavaDoc appName = (String JavaDoc)getMBeanServer().invoke((ObjectName JavaDoc)oi[i],"getAppName",new Object JavaDoc[0], new String JavaDoc[0]);
205     
206     String JavaDoc appRealContext = (String JavaDoc)getMBeanServer().invoke((ObjectName JavaDoc)oi[i],"getAppRealContext",new Object JavaDoc[0], new String JavaDoc[0]);
207     
208     appRealContext = appRealContext.replaceAll("\\\\","/");
209     
210     if(appRealContext.endsWith("/"))
211       appRealContext = appRealContext.substring(0,appRealContext.length()-1);
212         
213     if(appRealContext.endsWith(warName))
214       
215       {
216           isEnhydraApp =true;
217           enhydraSessionManagerON = new ObjectName JavaDoc("EnhydraApplications:type=SessionManager,name="+appName);
218           
219           try{
220               sessionManagerClassName = (String JavaDoc)getMBeanServer().getAttribute(enhydraSessionManagerON,"Class");
221              }catch(AttributeNotFoundException e){
222           sessionManagerClassName = "com.lutris.appserver.server.sessionEnhydra.StandardSessionManager";
223          }catch(Exception JavaDoc e){
224            return new String JavaDoc[0];
225          }
226         if(sessionManagerClassName==null)
227            sessionManagerClassName = "com.lutris.appserver.server.sessionEnhydra.StandardSessionManager";
228         
229         
230          if(sessionManagerClassName.equals("com.lutris.appserver.server.sessionEnhydra.StandardSessionManager") || sessionManagerClassName.equals("com.lutris.appserver.server.sessionEnhydra.SimpleServletSessionManager"))
231            {
232              isStandardSessionManager = true;
233            }
234           else
235            {
236              isStandardSessionManager = false;
237            }
238             break;
239  
240       }
241         
242      }//for
243

244    if(isEnhydraApp && isStandardSessionManager)
245          {
246    
247          SessionManager manager = (SessionManager)getMBeanServer().invoke(enhydraSessionManagerON, "getSessionManager", new Object JavaDoc[0], new String JavaDoc[0]);
248        
249        java.util.Enumeration JavaDoc sessionKeys = manager.getSessionKeys();
250           
251      result=new String JavaDoc[((StandardSessionManager)manager).activeSessionCount()];
252      int y=0;
253                 while (sessionKeys.hasMoreElements())
254                 {
255                    result[y] = (String JavaDoc) sessionKeys.nextElement();
256                  y++;
257                 }
258        
259              return result;
260           
261          }
262      else
263          {
264        
265       ObjectName JavaDoc oname = new ObjectName JavaDoc(jonasName+":type=Manager,path="+name+",*");
266          
267
268               Set JavaDoc enhydraMBean= getMBeanServer().queryNames(oname,null);
269               Object JavaDoc[] oii=enhydraMBean.toArray();
270
271           Object JavaDoc[] params=new Object JavaDoc[0];
272           String JavaDoc[] signature=new String JavaDoc[0];
273           String JavaDoc temp=(String JavaDoc) getMBeanServer().invoke((ObjectName JavaDoc)oii[0],"listSessionIds",params, signature);
274      
275      
276           StringTokenizer JavaDoc st=new StringTokenizer JavaDoc(temp);
277           result=new String JavaDoc[st.countTokens()];
278           int yy=0;
279           
280           while(st.hasMoreTokens())
281           {
282      
283            result[yy]=st.nextToken();
284            yy++;
285           }
286   
287   
288            return result;
289          }
290   
291
292          }catch(Exception JavaDoc e){
293     return new String JavaDoc[0];
294     }
295  }
296  
297  
298
299
300 public static Hashtable JavaDoc getData(String JavaDoc name,String JavaDoc sessionID){
301     try{
302      Properties JavaDoc map = getServletNames();
303          
304           
305       String JavaDoc warName = (String JavaDoc)map.getProperty(name);
306        Hashtable JavaDoc result=new Hashtable JavaDoc();
307     
308        boolean isEnhydraApp = false;
309        boolean isStandardSessionManager = false;
310   
311        String JavaDoc sessionManagerClassName = null;
312        ObjectName JavaDoc enhydraSessionManagerON = null;
313          
314        ObjectName JavaDoc onameEnhydra = new ObjectName JavaDoc("EnhydraApplications:type=Context,*");
315        Set JavaDoc enhydraMBeans= getMBeanServer().queryNames(onameEnhydra,null);
316        Object JavaDoc[] oi=enhydraMBeans.toArray();
317          
318    for(int i=0;i<oi.length;i++){
319       // String contextName = (String)getMBeanServer().invoke((ObjectName)oi[i],"getAppContext",new Object[0], new String[0]);
320
// String appName = (String)getMBeanServer().invoke((ObjectName)oi[i],"getAppName",new Object[0], new String[0]);
321

322   
323   // if(contextName.equals(name.substring(1)))
324
String JavaDoc appName = (String JavaDoc)getMBeanServer().invoke((ObjectName JavaDoc)oi[i],"getAppName",new Object JavaDoc[0], new String JavaDoc[0]);
325     
326     String JavaDoc appRealContext = (String JavaDoc)getMBeanServer().invoke((ObjectName JavaDoc)oi[i],"getAppRealContext",new Object JavaDoc[0], new String JavaDoc[0]);
327     
328     appRealContext = appRealContext.replaceAll("\\\\","/");
329     
330     if(appRealContext.endsWith("/"))
331      appRealContext = appRealContext.substring(0,appRealContext.length()-1);
332         
333     if(appRealContext.endsWith(warName))
334       {
335           isEnhydraApp =true;
336           enhydraSessionManagerON = new ObjectName JavaDoc("EnhydraApplications:type=SessionManager,name="+appName);
337           
338           try{
339               sessionManagerClassName = (String JavaDoc)getMBeanServer().getAttribute(enhydraSessionManagerON,"Class");
340              }catch(AttributeNotFoundException e){
341           sessionManagerClassName = "com.lutris.appserver.server.sessionEnhydra.StandardSessionManager";
342          }catch(Exception JavaDoc e){
343            return new Hashtable JavaDoc();
344          }
345         if(sessionManagerClassName==null)
346            sessionManagerClassName = "com.lutris.appserver.server.sessionEnhydra.StandardSessionManager";
347         
348         
349          if(sessionManagerClassName.equals("com.lutris.appserver.server.sessionEnhydra.StandardSessionManager") || sessionManagerClassName.equals("com.lutris.appserver.server.sessionEnhydra.SimpleServletSessionManager"))
350            {
351              isStandardSessionManager = true;
352            }
353           else
354            {
355              isStandardSessionManager = false;
356            }
357            break;
358       }
359         
360      }//for
361

362        if(isEnhydraApp && isStandardSessionManager)
363          {
364               
365            SessionManager sessionManager = (SessionManager)getMBeanServer().invoke(enhydraSessionManagerON, "getSessionManager", new Object JavaDoc[0], new String JavaDoc[0]);
366                
367            Session session = sessionManager.getSession(Thread.currentThread(),sessionID);
368            HttpSession httpses=session.getHttpSession();
369           
370            User user=session.getUser();
371            
372            if(user!=null)
373                result.put("User",user.getName());
374           
375            try {
376             result.put("SessionData",session.getSessionData().toString());
377             }catch (Exception JavaDoc e){
378             }
379            
380            
381           Date JavaDoc d = new Date JavaDoc(httpses.getCreationTime());
382               result.put("CreationTime",d.toString());
383               Date JavaDoc dd = new Date JavaDoc(httpses.getLastAccessedTime());
384               result.put("LastAccessedTime",dd.toString());
385               
386              
387              Enumeration JavaDoc attEnum = httpses.getAttributeNames();
388         
389          String JavaDoc temp = null;
390          
391          
392             Vector JavaDoc names=new Vector JavaDoc();
393             Vector JavaDoc values=new Vector JavaDoc();
394        
395          while (attEnum.hasMoreElements()) {
396                 temp = (String JavaDoc)attEnum.nextElement();
397     
398             names.addElement(temp);
399     
400         try {
401     
402             values.addElement(((Object JavaDoc)httpses.getAttribute(temp)).toString());
403     
404         } catch (Exception JavaDoc e){
405                 values.addElement(new String JavaDoc("Couldn't get attribute value!"));
406         }
407              
408             }
409              result.put("AttributeNames",names);
410              result.put("AttributeValues",values);
411          
412              return result;
413           
414          }
415      else
416          {
417        try{
418       ObjectName JavaDoc oname = new ObjectName JavaDoc(jonasName+":type=Manager,path="+name+",*");
419          
420
421               Set JavaDoc enhydraMBean= getMBeanServer().queryNames(oname,null);
422               Object JavaDoc[] oii=enhydraMBean.toArray();
423
424     Object JavaDoc[] params=new Object JavaDoc[]{ sessionID };
425     String JavaDoc[] signature=new String JavaDoc[]{ "java.lang.String" };
426     String JavaDoc lastAccessedTime=(String JavaDoc) getMBeanServer().invoke((ObjectName JavaDoc)oii[0],"getLastAccessedTime",params, signature);
427     
428     Object JavaDoc[] params1=new Object JavaDoc[]{ sessionID , "session"};
429     String JavaDoc[] signature1=new String JavaDoc[]{ "java.lang.String" , "java.lang.String" };
430     String JavaDoc objekat=(String JavaDoc) getMBeanServer().invoke((ObjectName JavaDoc)oii[0],"getSessionAttribute",params1, signature1);
431
432        
433        if(objekat!=null)
434        {
435        StringTokenizer JavaDoc st=new StringTokenizer JavaDoc(objekat,"\n");
436             
437         while(st.hasMoreTokens())
438          {
439          String JavaDoc temp=st.nextToken();
440          if(temp.startsWith("CreationTime:"))
441            result.put("CreationTime",temp.substring(temp.indexOf(":")+1));
442          if(temp.startsWith("User:"))
443            result.put("User",temp.substring(temp.indexOf(":")+1));
444          if(temp.startsWith("SessionData:"))
445            result.put("SessionData",temp.substring(temp.indexOf(":")+1));
446          }
447        }
448        
449         
450          result.put("LastAccessedTime",lastAccessedTime);
451     
452         Vector JavaDoc names=new Vector JavaDoc();
453         Vector JavaDoc values=new Vector JavaDoc();
454         
455     
456     return result;
457       }catch(Exception JavaDoc e){
458             return new Hashtable JavaDoc();
459     }
460        }
461          
462
463     
464     
465       }catch(Exception JavaDoc e){
466     return new Hashtable JavaDoc();
467     }
468     
469     
470   }
471   
472   
473 private static MBeanServer getMBeanServer()
474    {
475      if(mBeanServer==null)
476       mBeanServer = Registry.getRegistry(null, null).getMBeanServer();
477     
478       return mBeanServer;
479    }
480 }
Popular Tags