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);
+ }
+ }
}