User: slaboure
  Date: 02/01/06 04:05:32

  Modified:    src/main/org/jboss/ha/httpsession/server
                        ClusteredHTTPSessionService.java
                        ClusteredHTTPSessionServiceMBean.java
  Log:
  Added local interfaces support and generation of session-id available cluster-wide 
(simple implementation)
  
  Revision  Changes    Path
  1.2       +84 -13    
jbossmx/src/main/org/jboss/ha/httpsession/server/ClusteredHTTPSessionService.java
  
  Index: ClusteredHTTPSessionService.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/jbossmx/src/main/org/jboss/ha/httpsession/server/ClusteredHTTPSessionService.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ClusteredHTTPSessionService.java  2001/12/31 15:19:49     1.1
  +++ ClusteredHTTPSessionService.java  2002/01/06 12:05:32     1.2
  @@ -17,8 +17,10 @@
   import org.jboss.system.ServiceMBeanSupport;
   
   import org.jboss.ha.httpsession.interfaces.ClusteredHTTPSession;
  +import org.jboss.ha.httpsession.interfaces.LocalClusteredHTTPSession;
   import org.jboss.ha.httpsession.interfaces.ClusteredHTTPSessionBusiness;
   import org.jboss.ha.httpsession.interfaces.ClusteredHTTPSessionHome;
  +import org.jboss.ha.httpsession.interfaces.LocalClusteredHTTPSessionHome;
   import org.jboss.ha.httpsession.interfaces.SerializableHttpSession;
   
   /**
  @@ -27,7 +29,7 @@
    * @see org.jboss.ha.httpsession.server.ClusteredHTTPSessionServiceMBean
    *
    * @author  <a href="mailto:[EMAIL PROTECTED]";>Sacha Labourey</a>.
  - * @version $Revision: 1.1 $
  + * @version $Revision: 1.2 $
    *
    * <p><b>Revisions:</b>
    *
  @@ -49,11 +51,15 @@
      // Attributes ----------------------------------------------------
      
      protected ClusteredHTTPSessionHome httpSessionHome = null;
  +   protected LocalClusteredHTTPSessionHome localHttpSessionHome = null;
      protected ClusteredHTTPSessionService.CleanupDaemon cleanup = null;
      protected long sessionTimeout = 15*60*1000;
  +   protected boolean useLocalBean = true;
      
      // Static --------------------------------------------------------
      
  +   protected static String NODE_ID = null;
  +   
      // Constructors --------------------------------------------------
      
      public ClusteredHTTPSessionService ()
  @@ -73,8 +79,16 @@
      {
         try
         {
  -         ClusteredHTTPSession sessionBean = httpSessionHome.findByPrimaryKey 
(sessionId);
  -         sessionBean.setSession (session);
  +         if (useLocalBean)
  +         {
  +            LocalClusteredHTTPSession sessionBean = 
localHttpSessionHome.findByPrimaryKey (sessionId);
  +            sessionBean.setSession (session);
  +         }
  +         else
  +         {
  +            ClusteredHTTPSession sessionBean = httpSessionHome.findByPrimaryKey 
(sessionId);
  +            sessionBean.setSession (session);
  +         }
         }
         catch (Exception e)
         {
  @@ -86,8 +100,16 @@
      {
         try
         {
  -         ClusteredHTTPSession sessionBean = httpSessionHome.findByPrimaryKey 
(sessionId);
  -         return sessionBean.getSession ();
  +         if (useLocalBean)
  +         {
  +            LocalClusteredHTTPSession sessionBean = 
localHttpSessionHome.findByPrimaryKey (sessionId);
  +            return sessionBean.getSession ();
  +         }
  +         else
  +         {      
  +            ClusteredHTTPSession sessionBean = httpSessionHome.findByPrimaryKey 
(sessionId);
  +            return sessionBean.getSession ();
  +         }
         }
         catch (Exception e)
         {
  @@ -99,7 +121,14 @@
      {
         try
         {
  -         httpSessionHome.remove (sessionId);
  +         if (useLocalBean)
  +         {
  +            localHttpSessionHome.remove (sessionId);
  +         }
  +         else
  +         {      
  +            httpSessionHome.remove (sessionId);
  +         }
         }
         catch (Exception e)
         {
  @@ -110,11 +139,35 @@
      public long getSessionTimeout () { return this.sessionTimeout; }
      public void setSessionTimeout (long miliseconds) { this.sessionTimeout = 
miliseconds; }
      
  +   public synchronized String getSessionId ()
  +   {
  +      return NODE_ID + Long.toString (System.currentTimeMillis ());
  +   }
  +   
  +   public void setUseLocalBean (boolean useLocal)
  +   {
  +      int state = this.getState ();
  +      if (state == this.STARTED || state == this.STARTING)
  +         return;
  +      else
  +         this.useLocalBean = useLocal;
  +   }
  +   
  +   public boolean getUseLocalBean ()
  +   {
  +      return this.useLocalBean;
  +   }
  +   
      // ServiceMBeanSupport overrides 
---------------------------------------------------
      
      public void startService ()
      throws Exception
      {
  +      // Dummy session id implementation: we generate our node id
  +      //
  +      if (NODE_ID == null)
  +         NODE_ID = Long.toString (System.currentTimeMillis ()) + "-";
  +      
         // we (try to) acquire a home reference to the entity bean that stores our 
sessions
         //
         this.initRefToBean ();
  @@ -133,11 +186,20 @@
      // Protected -----------------------------------------------------
      
      protected void initRefToBean () throws Exception
  -   {
  +   {     
         InitialContext jndiContext = new InitialContext ();
  -      Object ref  = jndiContext.lookup (ClusteredHTTPSessionHome.JNDI_NAME);
  -      httpSessionHome = (ClusteredHTTPSessionHome)
  -      PortableRemoteObject.narrow (ref, ClusteredHTTPSessionHome.class);
  +      if (useLocalBean)
  +      {
  +         Object ref  = jndiContext.lookup (LocalClusteredHTTPSessionHome.JNDI_NAME);
  +         localHttpSessionHome = (LocalClusteredHTTPSessionHome)
  +         PortableRemoteObject.narrow (ref, LocalClusteredHTTPSessionHome.class);
  +      }
  +      else
  +      {
  +         Object ref  = jndiContext.lookup (ClusteredHTTPSessionHome.JNDI_NAME);
  +         httpSessionHome = (ClusteredHTTPSessionHome)
  +         PortableRemoteObject.narrow (ref, ClusteredHTTPSessionHome.class);
  +      }
      }
      
      // Private -------------------------------------------------------
  @@ -174,16 +236,25 @@
                  // don't ask for the HTTPSession content attribute, this will *not* 
                  // deserialize their content!
                  //
  -               Collection allBeans = httpSessionHome.findAll ();
  +               Collection allBeans = null;
  +               
  +               if (useLocalBean)
  +                  allBeans = localHttpSessionHome.findAll ();
  +               else
  +                  allBeans = httpSessionHome.findAll ();
  +               
                  Iterator iter = allBeans.iterator ();
                  long now = System.currentTimeMillis ();
                  while (iter.hasNext ())
                  {
  -                  ClusteredHTTPSession sessionBean = 
(ClusteredHTTPSession)iter.next ();
  +                  ClusteredHTTPSessionBusiness sessionBean = 
(ClusteredHTTPSessionBusiness)iter.next ();
                     long lastAccess = sessionBean.getLastAccessedTime ();
                     
                     if ( ( now - lastAccess) > sessionTimeout )
  -                     sessionBean.remove ();
  +                     if (useLocalBean)
  +                        ((LocalClusteredHTTPSession)sessionBean).remove ();
  +                     else
  +                        ((ClusteredHTTPSession)sessionBean).remove ();
                     
                     if (stopping)
                        return;                  
  
  
  
  1.2       +14 -2     
jbossmx/src/main/org/jboss/ha/httpsession/server/ClusteredHTTPSessionServiceMBean.java
  
  Index: ClusteredHTTPSessionServiceMBean.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/jbossmx/src/main/org/jboss/ha/httpsession/server/ClusteredHTTPSessionServiceMBean.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ClusteredHTTPSessionServiceMBean.java     2001/12/31 15:19:49     1.1
  +++ ClusteredHTTPSessionServiceMBean.java     2002/01/06 12:05:32     1.2
  @@ -18,7 +18,7 @@
    * @see org.jboss.ha.httpsession.interfaces.ClusteredHTTPSessionHome
    *
    * @author  <a href="mailto:[EMAIL PROTECTED]";>Sacha Labourey</a>.
  - * @version $Revision: 1.1 $
  + * @version $Revision: 1.2 $
    *   
    * <p><b>Revisions:</b>
    *
  @@ -53,7 +53,11 @@
      /**
       * Remove an HttpSession from the cluster (log off for example)
       */   
  -   public void removeHttpSession (String sessionId) throws EJBException;
  +   public void removeHttpSession (String sessionId) throws EJBException;   
  +   /**
  +    * Generates a new session id available cluster-wide
  +    */   
  +   public String getSessionId ();
      
      /**
       * Indicate the duration, in ms, after which the session can be cleaned if no
  @@ -65,4 +69,12 @@
       * access occurs.
       */   
      public void setSessionTimeout (long miliseconds);   
  +   
  +   /**
  +    * Indicates whether the service should use the local and home interfaces of the
  +    * entity bean or the remote and remote home interfaces (depending if they are in
  +    * the same JVM).
  +    */   
  +   public void setUseLocalBean (boolean useLocal);   
  +   public boolean getUseLocalBean ();
   }
  
  
  

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

Reply via email to