User: jules_gosnell
  Date: 02/01/14 14:25:18

  Modified:    jetty/src/main/org/jboss/jetty/session
                        CoarseDistributedStore.java
                        DistributedHttpSession.java
                        DistributedHttpSessionManager.java
  Added:       jetty/src/main/org/jboss/jetty/session
                        AbstractDistributedStore.java ClusteredStore.java
  Log:
  another step closer to working DistributedHttpSession. It now passes Watchdog with 
only 2 errors
  - the same as standalone Jetty.
  Update jars from Jetty cvs - I need a fix for the Session stuff to work
  
  Revision  Changes    Path
  1.3       +11 -20    
contrib/jetty/src/main/org/jboss/jetty/session/CoarseDistributedStore.java
  
  Index: CoarseDistributedStore.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/contrib/jetty/src/main/org/jboss/jetty/session/CoarseDistributedStore.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- CoarseDistributedStore.java       2002/01/13 21:30:13     1.2
  +++ CoarseDistributedStore.java       2002/01/14 22:25:18     1.3
  @@ -5,7 +5,7 @@
    * See terms of license at gnu.org.
    */
   
  -// $Id: CoarseDistributedStore.java,v 1.2 2002/01/13 21:30:13 jules_gosnell Exp $
  +// $Id: CoarseDistributedStore.java,v 1.3 2002/01/14 22:25:18 jules_gosnell Exp $
   
   //----------------------------------------
   
  @@ -28,23 +28,6 @@
   //----------------------------------------
   
   /**
  - * An abstraction of a manager for the distributed store of HttpSessions
  - *
  - * @author <a href="mailto:jules_gosnell@@yahoo.com";>Jules Gosnell</a>
  - * @version 1.0
  - * @since 1.0
  - */
  -interface AbstractStore
  -{
  -  public String nextId();
  -  public AbstractHttpSessionData make();
  -  public AbstractHttpSessionData get(String id);
  -  public void set(String id, AbstractHttpSessionData data);
  -}
  -
  -//----------------------------------------
  -
  -/**
    * An implementation of a manager of a CMP based distributed store of HttpSessions
    *
    * @author <a href="mailto:jules_gosnell@@yahoo.com";>Jules Gosnell</a>
  @@ -52,7 +35,8 @@
    * @since 1.0
    * @see AbstractStore
    */
  -class EJBDistributedStore
  +public class
  +  CoarseDistributedStore
     implements AbstractStore
   {
     Logger                _log = Logger.getLogger(getClass().getName());
  @@ -60,7 +44,8 @@
     CoarseHttpSessionHome _home;
     String                _name="ejb/jetty/CoarseHttpSession"; // TODO - parameterise
   
  -  EJBDistributedStore()
  +  public
  +    CoarseDistributedStore()
     {
       try
       {
  @@ -150,4 +135,10 @@
       }
       return ""+System.currentTimeMillis()+"-"+id;
     }
  +
  +  public boolean
  +    isValid()
  +    {
  +      return (_home!=null);
  +    }
   }
  
  
  
  1.3       +3 -8      
contrib/jetty/src/main/org/jboss/jetty/session/DistributedHttpSession.java
  
  Index: DistributedHttpSession.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/contrib/jetty/src/main/org/jboss/jetty/session/DistributedHttpSession.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DistributedHttpSession.java       2002/01/13 21:30:14     1.2
  +++ DistributedHttpSession.java       2002/01/14 22:25:18     1.3
  @@ -236,6 +236,8 @@
       invalidate()
       throws IllegalStateException
     {
  +    if (!isValid()) throw new IllegalStateException();
  +
       _isValid=false;
       _manager.destroyHttpSession(this);
     }
  @@ -309,14 +311,9 @@
         // perhaps this test should have been 'equals()' - but I
         // figure that would be too expensive... - TODO
   
  -      Object tmp=value;      // assume an attribute was added
  -
         // notify the old value if necessary
         if (oldValue!=null)
  -      {
        notifyValueUnbound(name, oldValue);
  -     tmp=oldValue;           // actually - an attribute was replaced
  -      }
   
         // notify the new value if necessary
         notifyValueBound(name, value);
  @@ -340,7 +337,7 @@
     {
       if (!isValid()) throw new IllegalStateException();
   
  -    Object oldValue=null;
  +    Object oldValue;
       synchronized (_attributes) {
         oldValue=_attributes.remove(name);
       }
  @@ -516,8 +513,6 @@
         data.setMaxInactiveInterval(getMaxInactiveInterval());
         data.setAttributesWerePassivated(notifyAttributes);
         _manager.getStore().set(getId(), data);
  -
  -      _log.info("Session passivated: "+getId());
       }
     }
   
  
  
  
  1.3       +37 -28    
contrib/jetty/src/main/org/jboss/jetty/session/DistributedHttpSessionManager.java
  
  Index: DistributedHttpSessionManager.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/contrib/jetty/src/main/org/jboss/jetty/session/DistributedHttpSessionManager.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DistributedHttpSessionManager.java        2002/01/13 21:30:14     1.2
  +++ DistributedHttpSessionManager.java        2002/01/14 22:25:18     1.3
  @@ -5,7 +5,7 @@
    * See terms of license at gnu.org.
    */
   
  -// $Id: DistributedHttpSessionManager.java,v 1.2 2002/01/13 21:30:14 jules_gosnell 
Exp $
  +// $Id: DistributedHttpSessionManager.java,v 1.3 2002/01/14 22:25:18 jules_gosnell 
Exp $
   
   // TODO
   
  @@ -48,7 +48,7 @@
       timeOut(Object object)
     {
       DistributedHttpSession session=(DistributedHttpSession)object;
  -    //      _log.info("session ("+session.getId()+") timed out - cleaning up");
  +    System.out.println("session ("+session.getId()+") timed out - cleaning up");
       session.getManager().destroyHttpSession(session);
     }
   }
  @@ -67,7 +67,7 @@
   //------------------------------------------------------------------------------
   /**
    *
  - * @version $Id: DistributedHttpSessionManager.java,v 1.2 2002/01/13 21:30:14 
jules_gosnell Exp $
  + * @version $Id: DistributedHttpSessionManager.java,v 1.3 2002/01/14 22:25:18 
jules_gosnell Exp $
    * @author [EMAIL PROTECTED]
    */
   //----------------------------------------
  @@ -75,18 +75,17 @@
   public class DistributedHttpSessionManager
     implements org.mortbay.jetty.servlet.SessionManager
   {
  -  static AbstractStore             _store                     =new 
EJBDistributedStore(); // hardwired for the moment - TODO
     static AbstractTimeOutManager    _scavenger                 =new 
NaiveTimeOutManager(5*1000, new MyTimeOutNotifier(), new MyTimeOutTester());
  -
     static { _scavenger.start(); }
   
  +  final AbstractStore              _store                     =new 
CoarseDistributedStore();
     final Logger                     _log;
     final JBossWebApplicationContext _context;
     final ServletHandler             _handler;
     final List                       _sessionListeners          =new ArrayList();
     final List                       _sessionAttributeListeners =new ArrayList();
     final Map                        _sessions                  =new HashMap();
  -  final boolean                    _isDistributed             =true;
  +  volatile boolean                 _isDistributed             =false;
     volatile boolean                 _isStarted                 =false; // TODO
     volatile int                     _dftMaxIdleSecs            =30; // negative 
means never timeout...
   
  @@ -102,6 +101,14 @@
     }
   
     //----------------------------------------
  +
  +  public void
  +    setDistributed(boolean isDistributed)
  +  {
  +    _isDistributed=isDistributed;
  +  }
  +
  +  //----------------------------------------
     // factory
   
     public HttpSession
  @@ -133,10 +140,8 @@
     {
       getScavenger().deregister(session);
       removeSession(session);
  -    if (_store!=null)
  -      session.passivate();
  -
  -    _log.info("passivated DistributedHttpSession: "+session.getId());
  +    session.passivate();
  +    _log.info("passivated HttpSession: "+session.getId());
     }
   
     public HttpSession
  @@ -148,17 +153,18 @@
       session = getSession(id);
   
       // 2. check distributed store
  -    if (session==null && _store!=null)
  +    if (session==null && _isDistributed && _store.isValid())
       {
         AbstractHttpSessionData data=_store.get(id);
  -      if (data!=null)
  +      _log.info("activated HttpSession data: "+id);
  +     if (data!=null)
         {
        session=new DistributedHttpSession(this, id, data);
        putSession(id,session);
        notifySessionCreated(session);
        getScavenger().register(session, System.currentTimeMillis(), 
session.getMaxInactiveInterval()*1000);
   
  -     _log.info("activated DistributedHttpSession: "+id);
  +     _log.info("activated HttpSession: "+id);
         }
       }
   
  @@ -215,7 +221,7 @@
       for (Iterator i = sessions.iterator(); i.hasNext(); )
       {
         DistributedHttpSession session=(DistributedHttpSession)i.next();
  -      if (_isDistributed)
  +      if (_isDistributed && _store.isValid())
        passivateHttpSession(session);
         else
        destroyHttpSession(session);
  @@ -298,12 +304,13 @@
     void
       notifyAttributeAdded(HttpSession session, String key, Object value)
     {
  -    if (_sessionAttributeListeners.size()>0)
  +    int n=_sessionAttributeListeners.size();
  +    if (n>0)
       {
         HttpSessionBindingEvent event =
        new HttpSessionBindingEvent(session, key, value);
   
  -      for(int i=0;i<_sessionAttributeListeners.size();i++)
  +      for(int i=0;i<n;i++)
        ((HttpSessionAttributeListener)
         _sessionAttributeListeners.get(i)).attributeAdded(event);
       }
  @@ -312,12 +319,13 @@
     void
       notifyAttributeReplaced(HttpSession session, String key, Object value)
     {
  -    if (_sessionAttributeListeners.size()>0)
  +    int n=_sessionAttributeListeners.size();
  +    if (n>0)
       {
         HttpSessionBindingEvent event =
        new HttpSessionBindingEvent(session, key, value);
   
  -      for(int i=0;i<_sessionAttributeListeners.size();i++)
  +      for(int i=0;i<n;i++)
        ((HttpSessionAttributeListener)
         _sessionAttributeListeners.get(i)).attributeReplaced(event);
       }
  @@ -326,12 +334,13 @@
     void
       notifyAttributeRemoved(HttpSession session, String key, Object value)
     {
  -    if (_sessionAttributeListeners.size()>0)
  +    int n=_sessionAttributeListeners.size();
  +   if (n>0)
       {
         HttpSessionBindingEvent event =
        new HttpSessionBindingEvent(session, key, value);
   
  -      for(int i=0;i<_sessionAttributeListeners.size();i++)
  +      for(int i=0;i<n;i++)
        ((HttpSessionAttributeListener)
         _sessionAttributeListeners.get(i)).attributeRemoved(event);
       }
  @@ -340,26 +349,26 @@
     void
       notifySessionCreated(HttpSession session)
     {
  -    if (_sessionListeners.size()>0)
  +    int n=_sessionListeners.size();
  +    if (n>0)
       {
         HttpSessionEvent event = new HttpSessionEvent(session);
   
  -      for(int i=0;i<_sessionListeners.size();i++)
  -     ((HttpSessionListener)_sessionListeners.get(i))
  -       .sessionCreated(event);
  +      for(int i=0;i<n;i++)
  +     ((HttpSessionListener)_sessionListeners.get(i)) .sessionCreated(event);
       }
     }
   
     void
       notifySessionDestroyed(HttpSession session)
     {
  -    if (_sessionListeners.size()>0)
  +    int n=_sessionListeners.size();
  +    if (n>0)
       {
         HttpSessionEvent event = new HttpSessionEvent(session);
   
  -      for(int i=0;i<_sessionListeners.size();i++)
  -     ((HttpSessionListener)_sessionListeners.get(i))
  -       .sessionDestroyed(event);
  +      for(int i=0;i<n;i++)
  +     ((HttpSessionListener)_sessionListeners.get(i)).sessionDestroyed(event);
       }
     }
   }
  
  
  
  1.1                  
contrib/jetty/src/main/org/jboss/jetty/session/AbstractDistributedStore.java
  
  Index: AbstractDistributedStore.java
  ===================================================================
  /*
   * jBoss, the OpenSource EJB server
   *
   * Distributable under GPL license.
   * See terms of license at gnu.org.
   */
  
  // $Id: AbstractDistributedStore.java,v 1.1 2002/01/14 22:25:18 jules_gosnell Exp $
  
  //----------------------------------------
  
  package org.jboss.jetty.session;
  
  //----------------------------------------
  
  /**
   * An abstraction of a manager for the distributed store of HttpSessions
   *
   * @author <a href="mailto:jules_gosnell@@yahoo.com";>Jules Gosnell</a>
   * @version 1.0
   * @since 1.0
   */
  interface AbstractStore
  {
    public String nextId();
    public AbstractHttpSessionData make();
    public AbstractHttpSessionData get(String id);
    public void set(String id, AbstractHttpSessionData data);
    //public void remove(String id);
    public boolean isValid();
  }
  
  
  
  1.1                  
contrib/jetty/src/main/org/jboss/jetty/session/ClusteredStore.java
  
  Index: ClusteredStore.java
  ===================================================================
  /*
   * jBoss, the OpenSource EJB server
   *
   * Distributable under GPL license.
   * See terms of license at gnu.org.
   */
  
  // $Id: ClusteredStore.java,v 1.1 2002/01/14 22:25:18 jules_gosnell Exp $
  
  //----------------------------------------
  
  package org.jboss.jetty.session;
  
  //----------------------------------------
  
  /**
   * An abstraction of a manager for the distributed store of HttpSessions
   *
   * @author <a href="mailto:jules_gosnell@@yahoo.com";>Jules Gosnell</a>
   * @version 1.0
   * @since 1.0
   */
  abstract class
    ClusteredStore
  {
    // ClusteredHTTPSessionServiceMBean _mbean;
  
    public
      ClusteredStore()
      {
        // lookup JMX service
      }
  
    public String
      nextId()
      {
        //      return _mbean.getSessionId();
        return null;
      }
  
    public AbstractHttpSessionData
      make()
      {
        // return new WHAT ?
        return null;
      }
  
    public AbstractHttpSessionData
      get(String id)
      {
  //       try
  //       {
  //    return (AbstractHttpSessionData)_mbean.getHttpSession(id);
  //       }
  //       catch (Exception e)
  //       {
  //       }
  
        return null;
      }
  
    public void
      set(String id, AbstractHttpSessionData data)
      {
  //       try
  //       {
  //    _mbean.setHttpSession(id, data);
  //       }
  //       catch (Exception e)
  //       {
  //       }
      }
  }
  
  
  

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to