[jboss-cvs] JBossAS SVN: r109488 - in projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3: session and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Nov 26 08:58:44 EST 2010


Author: jaikiran
Date: 2010-11-26 08:58:43 -0500 (Fri, 26 Nov 2010)
New Revision: 109488

Modified:
   projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/mdb/MessagingContainer.java
   projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/session/SessionContainer.java
   projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateful/StatefulContainer.java
   projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java
Log:
EJBTHREE-2205 Invoke setSessionContext(SessionContext) and setMessageDrivenContext(MessageDrivenContext) on bean implementing javax.ejb.SessionBean and javax.ejb.MessageDrivenBean interfaces respectively

Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/mdb/MessagingContainer.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/mdb/MessagingContainer.java	2010-11-26 10:22:50 UTC (rev 109487)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/mdb/MessagingContainer.java	2010-11-26 13:58:43 UTC (rev 109488)
@@ -22,11 +22,14 @@
 package org.jboss.ejb3.mdb;
 
 import java.lang.reflect.Method;
+import java.rmi.RemoteException;
 import java.util.Hashtable;
 import java.util.Map;
 
 import javax.ejb.ActivationConfigProperty;
 import javax.ejb.EJBException;
+import javax.ejb.MessageDrivenBean;
+import javax.ejb.MessageDrivenContext;
 import javax.ejb.Timer;
 import javax.jms.Destination;
 import javax.jms.Queue;
@@ -101,7 +104,17 @@
       this.pushContext(beanCtx);
       try
       {
-         // inject it
+         // call setMessageDrivenContext for bean implementing MessageDrivenBean interface
+         try
+         {
+            this.invokeSetMessageDrivenContext(beanCtx);
+         }
+         catch (RemoteException re)
+         {
+            throw new EJBException(re);
+         }
+         
+         // inject the bean instance and its associated interceptor instances
          this.injectBeanContext(beanCtx);
       }
       finally
@@ -698,4 +711,24 @@
       }
       
    }
+   
+   /**
+    * EJB3 spec states that if a message driven bean implements the {@link MessageDrivenBean} interface then the
+    * container should invoke {@link MessageDrivenBean#setMessageDrivenContext(javax.ejb.MessageDrivenContext)} 
+    * to associate the {@link MessageDrivenContext} context with the bean instance. 
+    * The container calls this {@link #invokeSetMessageDrivenContext(BeanContext)}
+    * method when a new {@link BeanContext} is created (typically via {@link #createBeanContext()}) 
+    * 
+    * @param beanCtx The {@link BeanContext} 
+    * @throws EJBException
+    * @throws RemoteException
+    */
+   protected void invokeSetMessageDrivenContext(BeanContext beanCtx) throws EJBException, RemoteException
+   {
+      Object beanInstance = beanCtx.getInstance();
+      if (beanInstance instanceof MessageDrivenBean)
+      {
+         ((MessageDrivenBean) beanInstance).setMessageDrivenContext((MessageDrivenContext) beanCtx.getEJBContext());
+      }
+   }
 }
\ No newline at end of file

Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/session/SessionContainer.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/session/SessionContainer.java	2010-11-26 10:22:50 UTC (rev 109487)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/session/SessionContainer.java	2010-11-26 13:58:43 UTC (rev 109488)
@@ -25,12 +25,14 @@
 import java.lang.reflect.Method;
 import java.rmi.NoSuchObjectException;
 import java.rmi.Remote;
+import java.rmi.RemoteException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
 
+import javax.ejb.EJBException;
 import javax.ejb.EJBHome;
 import javax.ejb.EJBLocalHome;
 import javax.ejb.EJBLocalObject;
@@ -40,6 +42,7 @@
 import javax.ejb.NoSuchEJBException;
 import javax.ejb.NoSuchObjectLocalException;
 import javax.ejb.RemoteHome;
+import javax.ejb.SessionBean;
 
 import org.jboss.aop.Dispatcher;
 import org.jboss.aop.Domain;
@@ -48,7 +51,7 @@
 import org.jboss.aop.joinpoint.InvocationResponse;
 import org.jboss.aop.proxy.ClassProxy;
 import org.jboss.aop.util.MethodHashing;
-import org.jboss.ejb3.EJBContainer;
+import org.jboss.ejb3.BeanContext;
 import org.jboss.ejb3.Ejb3Deployment;
 import org.jboss.ejb3.Ejb3Module;
 import org.jboss.ejb3.Ejb3Registry;
@@ -71,12 +74,10 @@
 import org.jboss.ejb3.proxy.impl.factory.session.SessionProxyFactory;
 import org.jboss.ejb3.proxy.impl.jndiregistrar.JndiSessionRegistrarBase;
 import org.jboss.ejb3.proxy.spi.container.InvokableContext;
-import org.jboss.ejb3.remoting.IsLocalInterceptor;
 import org.jboss.ejb3.stateful.StatefulContainerInvocation;
 import org.jboss.ha.framework.server.HATarget;
 import org.jboss.logging.Logger;
 import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
-import org.jboss.serial.io.MarshalledObjectForLocalCalls;
 
 /**
  * Comment
@@ -883,4 +884,24 @@
    {
       throw new UnsupportedOperationException("NYI");
    }
+
+   /**
+    * EJB3 spec states that if a session bean implements the {@link SessionBean} interface then the
+    * container should invoke {@link SessionBean#setSessionContext(javax.ejb.SessionContext)} to associate
+    * a session context with the bean instance. The container calls this {@link #invokeSetSessionContext(BeanContext)}
+    * method when a new {@link BeanContext} is created (typically via {@link #createBeanContext()}). 
+    * 
+    * @param beanCtx The {@link BeanContext} 
+    * @throws EJBException
+    * @throws RemoteException
+    */
+   protected void invokeSetSessionContext(BeanContext beanCtx) throws EJBException, RemoteException
+   {
+      Object beanInstance = beanCtx.getInstance();
+      if (beanInstance instanceof SessionBean)
+      {
+         ((SessionBean) beanInstance).setSessionContext((javax.ejb.SessionContext) beanCtx.getEJBContext());
+      }
+   }
+   
 }

Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateful/StatefulContainer.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateful/StatefulContainer.java	2010-11-26 10:22:50 UTC (rev 109487)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateful/StatefulContainer.java	2010-11-26 13:58:43 UTC (rev 109488)
@@ -32,6 +32,7 @@
 import java.util.Map;
 import java.util.concurrent.ExecutorService;
 
+import javax.ejb.EJBException;
 import javax.ejb.EJBHome;
 import javax.ejb.EJBLocalObject;
 import javax.ejb.EJBObject;
@@ -168,7 +169,17 @@
       this.pushContext(beanCtx);
       try
       {
-         // inject it
+         // call setSessionContext for bean implementing SessionBean interface
+         try
+         {
+            this.invokeSetSessionContext(beanCtx);
+         }
+         catch (RemoteException re)
+         {
+            throw new EJBException(re);
+         }
+         
+         // inject the bean instance and its associated interceptor instances
          this.injectBeanContext(beanCtx);
       }
       finally

Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java	2010-11-26 10:22:50 UTC (rev 109487)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java	2010-11-26 13:58:43 UTC (rev 109488)
@@ -83,6 +83,7 @@
 import javax.ejb.Timer;
 import java.io.Serializable;
 import java.lang.reflect.Method;
+import java.rmi.RemoteException;
 import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
@@ -124,7 +125,17 @@
       this.pushContext(beanCtx);
       try
       {
-         // inject it
+         // call setSessionContext for bean implementing SessionBean interface
+         try
+         {
+            this.invokeSetSessionContext(beanCtx);
+         }
+         catch (RemoteException re)
+         {
+            throw new EJBException(re);
+         }
+
+         // inject the bean instance and its associated interceptor instances
          this.injectBeanContext(beanCtx);
       }
       finally



More information about the jboss-cvs-commits mailing list