[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