fhanik 2004/04/27 10:50:43 Modified: modules/cluster/src/share/org/apache/catalina/cluster/session DeltaManager.java DeltaSession.java Log: Added in the ability to run the DeltaManager/DeltaSession without a container, so that a different clustering plug in can be used to backup sessions in a primary/secondary store Revision Changes Path 1.23 +12 -2 jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/session/DeltaManager.java Index: DeltaManager.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/session/DeltaManager.java,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- DeltaManager.java 8 Apr 2004 15:30:11 -0000 1.22 +++ DeltaManager.java 27 Apr 2004 17:50:43 -0000 1.23 @@ -369,8 +369,18 @@ ReplicationStream ois = null; Loader loader = null; ClassLoader classLoader = null; + //fix to be able to run the DeltaManager + //stand alone without a container. + //use the Threads context class loader + if ( container != null ) + loader = container.getLoader(); + if ( loader != null ) + classLoader = loader.getClassLoader(); + else + classLoader = Thread.currentThread().getContextClassLoader(); + //end fix fis = new ByteArrayInputStream(data); - ois = new ReplicationStream(fis,container.getLoader().getClassLoader()); + ois = new ReplicationStream(fis,classLoader); session.getDeltaRequest().readExternal(ois); ois.close(); return session.getDeltaRequest(); 1.22 +131 -112 jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/session/DeltaSession.java Index: DeltaSession.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/session/DeltaSession.java,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- DeltaSession.java 7 Apr 2004 19:02:31 -0000 1.21 +++ DeltaSession.java 27 Apr 2004 17:50:43 -0000 1.22 @@ -396,36 +396,42 @@ // Notify interested application event listeners Context context = (Context) manager.getContainer(); - Object listeners[] = context.getApplicationLifecycleListeners(); - if (listeners != null) { - HttpSessionEvent event = - new HttpSessionEvent(getSession()); - for (int i = 0; i < listeners.length; i++) { - if (!(listeners[i] instanceof HttpSessionListener)) - continue; - HttpSessionListener listener = - (HttpSessionListener) listeners[i]; - try { - fireContainerEvent(context, - "beforeSessionCreated", - listener); - listener.sessionCreated(event); - fireContainerEvent(context, - "afterSessionCreated", - listener); - } catch (Throwable t) { + //fix for standalone manager without container + if ( context != null ) { + Object listeners[] = context.getApplicationLifecycleListeners(); + if (listeners != null) { + HttpSessionEvent event = + new HttpSessionEvent(getSession()); + for (int i = 0; i < listeners.length; i++) { + if (! (listeners[i] instanceof HttpSessionListener)) + continue; + HttpSessionListener listener = + (HttpSessionListener) listeners[i]; try { fireContainerEvent(context, + "beforeSessionCreated", + listener); + listener.sessionCreated(event); + fireContainerEvent(context, "afterSessionCreated", listener); - } catch (Exception e) { - ; + } catch (Throwable t) { + try { + fireContainerEvent(context, + "afterSessionCreated", + listener); + } catch (Exception e) { + ; + } + // FIXME - should we do anything besides log these? + log.error(sm.getString("standardSession.sessionEvent"), + t); } - // FIXME - should we do anything besides log these? - log.error(sm.getString("standardSession.sessionEvent"), t); } } - } + }//end if + //end fix + } @@ -710,37 +716,42 @@ // Notify interested application event listeners // FIXME - Assumes we call listeners in reverse order Context context = (Context) manager.getContainer(); - Object listeners[] = context.getApplicationLifecycleListeners(); - if (notify && (listeners != null)) { - HttpSessionEvent event = - new HttpSessionEvent(getSession()); - for (int i = 0; i < listeners.length; i++) { - int j = (listeners.length - 1) - i; - if (!(listeners[j] instanceof HttpSessionListener)) - continue; - HttpSessionListener listener = - (HttpSessionListener) listeners[j]; - try { - fireContainerEvent(context, - "beforeSessionDestroyed", - listener); - listener.sessionDestroyed(event); - fireContainerEvent(context, - "afterSessionDestroyed", - listener); - } catch (Throwable t) { + //fix for standalone manager without container + if ( context != null ) { + Object listeners[] = context.getApplicationLifecycleListeners(); + if (notify && (listeners != null)) { + HttpSessionEvent event = + new HttpSessionEvent(getSession()); + for (int i = 0; i < listeners.length; i++) { + int j = (listeners.length - 1) - i; + if (! (listeners[j] instanceof HttpSessionListener)) + continue; + HttpSessionListener listener = + (HttpSessionListener) listeners[j]; try { fireContainerEvent(context, + "beforeSessionDestroyed", + listener); + listener.sessionDestroyed(event); + fireContainerEvent(context, "afterSessionDestroyed", listener); - } catch (Exception e) { - ; + } catch (Throwable t) { + try { + fireContainerEvent(context, + "afterSessionDestroyed", + listener); + } catch (Exception e) { + ; + } + // FIXME - should we do anything besides log these? + log.error(sm.getString( + "standardSession.sessionEvent"), t); } - // FIXME - should we do anything besides log these? - log.error(sm.getString("standardSession.sessionEvent"), t); } } - } + }//end if + //end fix accessCount=0; setValid(false); @@ -1295,58 +1306,62 @@ // Notify interested application event listeners Context context = (Context) manager.getContainer(); - Object listeners[] = context.getApplicationEventListeners(); - if (listeners == null) - return; - for (int i = 0; i < listeners.length; i++) { - if (!(listeners[i] instanceof HttpSessionAttributeListener)) - continue; - HttpSessionAttributeListener listener = - (HttpSessionAttributeListener) listeners[i]; - try { - if (unbound != null) { - fireContainerEvent(context, - "beforeSessionAttributeReplaced", - listener); - if ( event == null ) { - event = new HttpSessionBindingEvent - (this,name,unbound); - } - listener.attributeReplaced(event); - fireContainerEvent(context, - "afterSessionAttributeReplaced", - listener); - } else { - fireContainerEvent(context, - "beforeSessionAttributeAdded", - listener); - if (event == null) { - event = new HttpSessionBindingEvent - (this, name, unbound); - } - listener.attributeAdded(event); - fireContainerEvent(context, - "afterSessionAttributeAdded", - listener); - } - } catch (Throwable t) { + //fix for standalone manager without container + if ( context != null ) { + Object listeners[] = context.getApplicationEventListeners(); + if (listeners == null) + return; + for (int i = 0; i < listeners.length; i++) { + if (! (listeners[i] instanceof HttpSessionAttributeListener)) + continue; + HttpSessionAttributeListener listener = + (HttpSessionAttributeListener) listeners[i]; try { if (unbound != null) { fireContainerEvent(context, + "beforeSessionAttributeReplaced", + listener); + if (event == null) { + event = new HttpSessionBindingEvent + (this, name, unbound); + } + listener.attributeReplaced(event); + fireContainerEvent(context, "afterSessionAttributeReplaced", listener); } else { fireContainerEvent(context, + "beforeSessionAttributeAdded", + listener); + if (event == null) { + event = new HttpSessionBindingEvent + (this, name, unbound); + } + listener.attributeAdded(event); + fireContainerEvent(context, "afterSessionAttributeAdded", listener); } - } catch (Exception e) { - ; + } catch (Throwable t) { + try { + if (unbound != null) { + fireContainerEvent(context, + "afterSessionAttributeReplaced", + listener); + } else { + fireContainerEvent(context, + "afterSessionAttributeAdded", + listener); + } + } catch (Exception e) { + ; + } + // FIXME - should we do anything besides log these? + log.error(sm.getString("standardSession.attributeEvent"), t); } - // FIXME - should we do anything besides log these? - log.error(sm.getString("standardSession.attributeEvent"), t); - } - } + } //for + }//end if + //end fix } @@ -1612,34 +1627,38 @@ // Notify interested application event listeners Context context = (Context) manager.getContainer(); - Object listeners[] = context.getApplicationEventListeners(); - if (listeners == null) - return; - for (int i = 0; i < listeners.length; i++) { - if (!(listeners[i] instanceof HttpSessionAttributeListener)) - continue; - HttpSessionAttributeListener listener = - (HttpSessionAttributeListener) listeners[i]; - try { - fireContainerEvent(context, - "beforeSessionAttributeRemoved", - listener); - listener.attributeRemoved(event); - fireContainerEvent(context, - "afterSessionAttributeRemoved", - listener); - } catch (Throwable t) { + //fix for standalone manager without container + if ( context != null ) { + Object listeners[] = context.getApplicationEventListeners(); + if (listeners == null) + return; + for (int i = 0; i < listeners.length; i++) { + if (! (listeners[i] instanceof HttpSessionAttributeListener)) + continue; + HttpSessionAttributeListener listener = + (HttpSessionAttributeListener) listeners[i]; try { fireContainerEvent(context, + "beforeSessionAttributeRemoved", + listener); + listener.attributeRemoved(event); + fireContainerEvent(context, "afterSessionAttributeRemoved", listener); - } catch (Exception e) { - ; + } catch (Throwable t) { + try { + fireContainerEvent(context, + "afterSessionAttributeRemoved", + listener); + } catch (Exception e) { + ; + } + // FIXME - should we do anything besides log these? + log.error(sm.getString("standardSession.attributeEvent"), t); } - // FIXME - should we do anything besides log these? - log.error(sm.getString("standardSession.attributeEvent"), t); - } - } + } //for + }//end if + //end fix }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]