You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by be...@apache.org on 2011/03/08 21:26:09 UTC

svn commit: r1079515 - in /openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans: servlet/WebBeansConfigurationListener.java web/failover/FailOverBag.java web/failover/FailOverBagWrapper.java

Author: bergmark
Date: Tue Mar  8 20:26:09 2011
New Revision: 1079515

URL: http://svn.apache.org/viewvc?rev=1079515&view=rev
Log:
[OWB-532] Correct issues with session scoped bean failover.

Modified:
    openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/servlet/WebBeansConfigurationListener.java
    openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/failover/FailOverBag.java
    openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/failover/FailOverBagWrapper.java

Modified: openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/servlet/WebBeansConfigurationListener.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/servlet/WebBeansConfigurationListener.java?rev=1079515&r1=1079514&r2=1079515&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/servlet/WebBeansConfigurationListener.java (original)
+++ openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/servlet/WebBeansConfigurationListener.java Tue Mar  8 20:26:09 2011
@@ -38,7 +38,6 @@ import javax.servlet.ServletRequestEvent
 import javax.servlet.ServletRequestListener;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
-import javax.servlet.http.HttpSessionActivationListener;
 import javax.servlet.http.HttpSessionEvent;
 import javax.servlet.http.HttpSessionListener;
 
@@ -48,7 +47,7 @@ import javax.servlet.http.HttpSessionLis
  * 
  * @version $Rev: 910075 $ $Date: 2010-02-14 23:17:23 +0200 (Sun, 14 Feb 2010) $
  */
-public class WebBeansConfigurationListener implements ServletContextListener, ServletRequestListener, HttpSessionListener,HttpSessionActivationListener
+public class WebBeansConfigurationListener implements ServletContextListener, ServletRequestListener, HttpSessionListener
 {
     /**Logger instance*/
     private static final WebBeansLogger logger = WebBeansLogger.getLogger(WebBeansConfigurationListener.class);
@@ -209,27 +208,4 @@ public class WebBeansConfigurationListen
         ConversationManager conversationManager = WebBeansContext.getInstance().getConversationManager();
         conversationManager.destroyConversationContextWithSessionId(event.getSession().getId());
     }
-
-    @Override
-    public void sessionWillPassivate(HttpSessionEvent event) 
-    {
-        if (failoverService != null &&
-            failoverService.isSupportPassivation())
-        {
-            HttpSession session = event.getSession();
-            failoverService.sessionWillPassivate(session);
-        }
-
-    }
-
-    @Override
-    public void sessionDidActivate(HttpSessionEvent event)
-    {
-        if (failoverService.isSupportFailOver() ||
-            failoverService.isSupportPassivation())
-        {
-            HttpSession session = event.getSession();
-            failoverService.restoreBeans(session);
-        }
-    }
 }

Modified: openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/failover/FailOverBag.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/failover/FailOverBag.java?rev=1079515&r1=1079514&r2=1079515&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/failover/FailOverBag.java (original)
+++ openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/failover/FailOverBag.java Tue Mar  8 20:26:09 2011
@@ -28,6 +28,7 @@ import org.apache.webbeans.config.WebBea
 import org.apache.webbeans.context.ConversationContext;
 import org.apache.webbeans.context.SessionContext;
 import org.apache.webbeans.conversation.ConversationManager;
+import org.apache.webbeans.logger.WebBeansLogger;
 import org.apache.webbeans.spi.FailOverService;
 import org.apache.webbeans.web.context.SessionContextManager;
 import org.apache.webbeans.web.context.WebContextsService;
@@ -44,6 +45,10 @@ public class FailOverBag implements Seri
      */
     private static final long serialVersionUID = -6314819837009653189L;
     
+    /**Logger instance*/
+    protected  final WebBeansLogger logger = 
+            WebBeansLogger.getLogger(FailOverBag.class);
+    
     private String sessionId;
 
     private String owbFailoverJVMId;
@@ -52,14 +57,17 @@ public class FailOverBag implements Seri
     
     private Map<Conversation, ConversationContext> conversationContextMap;
 
-    private final WebBeansContext webBeansContext = WebBeansContext.getInstance();
+    private transient WebBeansContext webBeansContext;
     
     public FailOverBag()
     {
+        webBeansContext = WebBeansContext.getInstance();
     }
     
     public FailOverBag(HttpSession session, FailOverService service) 
     {
+        webBeansContext = WebBeansContext.getInstance();
+        
         sessionId = session.getId();
         owbFailoverJVMId = service.getJVMId();
         updateOwbFailOverBag(session, service);
@@ -80,6 +88,9 @@ public class FailOverBag implements Seri
     {
         try 
         {
+            //Transient, so we need to look this up again during restore.
+            webBeansContext = WebBeansContext.getInstance();
+            
             if (sessionContext != null) 
             {
                 SessionContextManager sessionManager = ((WebContextsService)webBeansContext.getContextsService()).getSessionContextManager();
@@ -100,7 +111,7 @@ public class FailOverBag implements Seri
         } 
         catch (Exception e)
         {
-            
+            logger.error(e);
         }
     }
 

Modified: openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/failover/FailOverBagWrapper.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/failover/FailOverBagWrapper.java?rev=1079515&r1=1079514&r2=1079515&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/failover/FailOverBagWrapper.java (original)
+++ openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/failover/FailOverBagWrapper.java Tue Mar  8 20:26:09 2011
@@ -21,14 +21,16 @@ package org.apache.webbeans.web.failover
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.Externalizable;
-import java.io.Serializable;
 import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutput;
 import java.io.ObjectOutputStream;
+import java.io.Serializable;
 
 import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpSessionActivationListener;
+import javax.servlet.http.HttpSessionEvent;
 
 import org.apache.webbeans.config.WebBeansContext;
 import org.apache.webbeans.logger.WebBeansLogger;
@@ -38,7 +40,7 @@ import org.apache.webbeans.spi.FailOverS
  * Use javassist Proxy streams to serialize and restore failover bean bag.
  * 
  */
-public class FailOverBagWrapper implements Serializable, Externalizable 
+public class FailOverBagWrapper implements Serializable, Externalizable, HttpSessionActivationListener
 {
     /**Logger instance*/
     protected  final WebBeansLogger logger = 
@@ -143,4 +145,25 @@ public class FailOverBagWrapper implemen
         baos.close();
         out.writeObject(buf);
     }
+    
+    @Override
+    public void sessionWillPassivate(HttpSessionEvent event)
+    {
+        if (failoverService != null && failoverService.isSupportPassivation())
+        {
+            HttpSession session = event.getSession();
+            failoverService.sessionWillPassivate(session);
+        }
+
+    }
+
+    @Override
+    public void sessionDidActivate(HttpSessionEvent event)
+    {
+        if (failoverService != null && failoverService.isSupportFailOver() || failoverService.isSupportPassivation())
+        {
+            HttpSession session = event.getSession();
+            failoverService.restoreBeans(session);
+        }
+    }
 }