You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by da...@apache.org on 2007/01/15 21:11:18 UTC

svn commit: r496460 - in /incubator/openejb/trunk/openejb3: container/openejb-core/src/main/java/org/apache/openejb/ container/openejb-core/src/main/java/org/apache/openejb/alt/config/ container/openejb-core/src/main/java/org/apache/openejb/assembler/c...

Author: dain
Date: Mon Jan 15 12:11:17 2007
New Revision: 496460

URL: http://svn.apache.org/viewvc?view=rev&rev=496460
Log:
OPENEJB-377 ENC: resource-env-ref: javax.ejb.SessionContext
Thanks Manu

Added:
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ResourceEnvReferenceInfo.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ResourceEnvReferenceLocationInfo.java
Modified:
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/DeploymentInfo.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/JndiEncInfoBuilder.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncInfo.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IvmContext.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbInstanceFactory.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulInstanceManager.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateful/StatefulContainerTest.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessContainerTest.java
    incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateful/ContextLookupStatefulBean.java
    incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateful/ContextLookupStatefulPojoBean.java
    incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateful/EncStatefulBean.java
    incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateful/EncStatefulObject.java
    incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateless/ContextLookupStatelessBean.java
    incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateless/ContextLookupStatelessPojoBean.java
    incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateless/EncStatelessBean.java
    incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateless/EncStatelessObject.java
    incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/resources/META-INF/ejb-jar.xml
    incubator/openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateful/StatefulJndiEncTests.java
    incubator/openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateless/StatelessJndiEncTests.java

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/DeploymentInfo.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/DeploymentInfo.java?view=diff&rev=496460&r1=496459&r2=496460
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/DeploymentInfo.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/DeploymentInfo.java Mon Jan 15 12:11:17 2007
@@ -20,6 +20,7 @@
 import java.util.Collection;
 import java.util.Map;
 import java.util.List;
+import javax.naming.Context;
 
 public interface DeploymentInfo {
 
@@ -68,6 +69,8 @@
     public Class getBusinessRemoteInterface();
 
     public String getPrimaryKeyField();
+
+    public Context getJndiEnc();
 
     public boolean isReentrant();
 

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/JndiEncInfoBuilder.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/JndiEncInfoBuilder.java?view=diff&rev=496460&r1=496459&r2=496460
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/JndiEncInfoBuilder.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/JndiEncInfoBuilder.java Mon Jan 15 12:11:17 2007
@@ -23,6 +23,7 @@
 import org.apache.openejb.assembler.classic.EnterpriseBeanInfo;
 import org.apache.openejb.assembler.classic.EnvEntryInfo;
 import org.apache.openejb.assembler.classic.JndiEncInfo;
+import org.apache.openejb.assembler.classic.ResourceEnvReferenceInfo;
 import org.apache.openejb.assembler.classic.ResourceReferenceInfo;
 import org.apache.openejb.assembler.classic.EjbJarInfo;
 import org.apache.openejb.assembler.classic.PersistenceUnitInfo;
@@ -33,6 +34,7 @@
 import org.apache.openejb.jee.EnvEntry;
 import org.apache.openejb.jee.JndiConsumer;
 import org.apache.openejb.jee.PersistenceUnitRef;
+import org.apache.openejb.jee.ResourceEnvRef;
 import org.apache.openejb.jee.ResourceRef;
 import org.apache.openejb.jee.Injectable;
 import org.apache.openejb.jee.InjectionTarget;
@@ -103,6 +105,9 @@
 
         /* Build Resource References *****************/
         jndi.resourceRefs.addAll(buildResourceRefInfos(jndiConsumer));
+        
+        /* Build Resource Environment References *****************/
+        jndi.resourceEnvRefs.addAll(buildResourceEnvRefInfos(jndiConsumer));
 
         buildAmbiguousEjbRefInfos(jndi, jndiConsumer, ejbName);
 
@@ -271,6 +276,19 @@
         return infos;
     }
 
+    private List<ResourceEnvReferenceInfo> buildResourceEnvRefInfos(JndiConsumer item) {
+        List<ResourceEnvReferenceInfo> infos = new ArrayList<ResourceEnvReferenceInfo>();
+        for (ResourceEnvRef res : item.getResourceEnvRef()) {
+            ResourceEnvReferenceInfo info = new ResourceEnvReferenceInfo();
+            info.resourceEnvRefName = res.getResourceEnvRefName();
+            info.resourceEnvRefType = res.getResourceEnvRefType();
+            info.mappedName = res.getMappedName();           
+            info.targets.addAll(buildInjectionInfos(res));
+            infos.add(info);
+        }
+        return infos;
+    }
+    
     private List<EnvEntryInfo> buildEnvEntryInfos(JndiConsumer item) {
         List<EnvEntryInfo> infos = new ArrayList<EnvEntryInfo>();
         for (EnvEntry env : item.getEnvEntry()) {

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java?view=diff&rev=496460&r1=496459&r2=496460
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java Mon Jan 15 12:11:17 2007
@@ -30,7 +30,9 @@
 import org.apache.openejb.core.ivm.naming.Reference;
 import org.apache.openejb.core.ivm.naming.PersistenceContextReference;
 
+import javax.ejb.EJBContext;
 import javax.naming.Context;
+import javax.naming.LinkRef;
 import javax.naming.NamingException;
 import javax.persistence.EntityManagerFactory;
 import javax.transaction.TransactionManager;
@@ -56,6 +58,7 @@
     private final EjbLocalReferenceInfo[] ejbLocalReferences;
     private final EnvEntryInfo[] envEntries;
     private final ResourceReferenceInfo[] resourceRefs;
+    private final ResourceEnvReferenceInfo[] resourceEnvRefs;
     private final PersistenceUnitInfo[] persistenceUnitRefs;
     private final PersistenceContextInfo[] persistenceContextRefs;
     private final Map<String, EntityManagerFactory> entityManagerFactories;
@@ -108,6 +111,12 @@
             resourceRefs = new ResourceReferenceInfo[]{};
         }
 
+        if ((jndiEnc != null && jndiEnc.resourceEnvRefs != null)) {
+            resourceEnvRefs = jndiEnc.resourceEnvRefs.toArray(new ResourceEnvReferenceInfo[0]);
+        } else {
+            resourceEnvRefs = new ResourceEnvReferenceInfo[]{};
+        }
+        
         if ((jndiEnc != null && jndiEnc.persistenceUnitRefs != null)) {
         	persistenceUnitRefs = jndiEnc.persistenceUnitRefs.toArray(new PersistenceUnitInfo[0]);
         } else {
@@ -250,7 +259,24 @@
             }
             bindings.put(normalize(referenceInfo.referenceName), wrapReference(reference));
         }
-        
+                
+        for (int i = 0; i < resourceEnvRefs.length; i++) {
+            ResourceEnvReferenceInfo referenceInfo = resourceEnvRefs[i];
+            Reference reference = null;
+            LinkRef linkRef = null;
+            try {
+                if (EJBContext.class.isAssignableFrom(Class.forName(referenceInfo.resourceEnvRefType))) {
+                    String jndiName = "java:comp/EJBContext";
+                    linkRef = new LinkRef(jndiName);               
+                    bindings.put(normalize(referenceInfo.resourceEnvRefName), linkRef);
+                    continue;
+                }                 
+            } catch (ClassNotFoundException e) {                
+                throw new OpenEJBException(e);
+            }     
+        //TODO code for handling other resource-env-refs need to be added here. 
+        }
+                                
         for (int i = 0; i < persistenceUnitRefs.length; i++){
         	PersistenceUnitInfo puRefInfo = persistenceUnitRefs[i];
             EntityManagerFactory factory = findEntityManagerFactory(puRefInfo.persistenceUnitName);

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncInfo.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncInfo.java?view=diff&rev=496460&r1=496459&r2=496460
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncInfo.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncInfo.java Mon Jan 15 12:11:17 2007
@@ -28,4 +28,5 @@
     public final List<ResourceReferenceInfo> resourceRefs = new ArrayList<ResourceReferenceInfo>();
     public final List<PersistenceUnitInfo> persistenceUnitRefs = new ArrayList<PersistenceUnitInfo>();
     public final List<PersistenceContextInfo> persistenceContextRefs = new ArrayList<PersistenceContextInfo>();
+    public final List <ResourceEnvReferenceInfo> resourceEnvRefs = new ArrayList<ResourceEnvReferenceInfo>();
 }

Added: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ResourceEnvReferenceInfo.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ResourceEnvReferenceInfo.java?view=auto&rev=496460
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ResourceEnvReferenceInfo.java (added)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ResourceEnvReferenceInfo.java Mon Jan 15 12:11:17 2007
@@ -0,0 +1,25 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.openejb.assembler.classic;
+
+public class ResourceEnvReferenceInfo extends InjectableInfo {
+    public String resourceEnvRefName;
+    public String resourceEnvRefType;
+    public String mappedName;
+    public String resourceID;
+    public ResourceEnvReferenceLocationInfo location;
+}

Added: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ResourceEnvReferenceLocationInfo.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ResourceEnvReferenceLocationInfo.java?view=auto&rev=496460
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ResourceEnvReferenceLocationInfo.java (added)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ResourceEnvReferenceLocationInfo.java Mon Jan 15 12:11:17 2007
@@ -0,0 +1,25 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.openejb.assembler.classic;
+
+public class ResourceEnvReferenceLocationInfo extends InfoObject {
+
+    public boolean remote;
+    public String remoteRefName;
+    public String jndiContextId;
+
+}

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java?view=diff&rev=496460&r1=496459&r2=496460
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java Mon Jan 15 12:11:17 2007
@@ -34,11 +34,11 @@
 import javax.ejb.MessageDrivenBean;
 import javax.ejb.TimedObject;
 import javax.persistence.EntityManagerFactory;
+import javax.naming.Context;
 
 import org.apache.openejb.Container;
 import org.apache.openejb.RpcContainer;
 import org.apache.openejb.SystemException;
-import org.apache.openejb.ApplicationException;
 import org.apache.openejb.InterfaceType;
 import org.apache.openejb.DeploymentInfo;
 import org.apache.openejb.BeanType;
@@ -54,7 +54,6 @@
 import org.apache.openejb.core.stateless.StatelessBeanManagedTxPolicy;
 import org.apache.openejb.core.stateless.StatelessEjbHomeHandler;
 import org.apache.openejb.core.transaction.TransactionContainer;
-import org.apache.openejb.core.transaction.TransactionContext;
 import org.apache.openejb.core.transaction.TransactionPolicy;
 import org.apache.openejb.core.transaction.TxManditory;
 import org.apache.openejb.core.transaction.TxNever;
@@ -406,7 +405,7 @@
         isBeanManagedTransaction = value;
     }
 
-    public javax.naming.Context getJndiEnc() {
+    public Context getJndiEnc() {
         return context.getJndiContext();
     }
 

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IvmContext.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IvmContext.java?view=diff&rev=496460&r1=496459&r2=496460
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IvmContext.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IvmContext.java Mon Jan 15 12:11:17 2007
@@ -37,6 +37,7 @@
 import javax.naming.Binding;
 import javax.naming.CompositeName;
 import javax.naming.Context;
+import javax.naming.LinkRef;
 import javax.naming.Name;
 import javax.naming.NameClassPair;
 import javax.naming.NameNotFoundException;
@@ -141,6 +142,8 @@
              * A Reference type can also carry out dynamic resolution of references if necessary.
              */
             obj = ((Reference) obj).getObject();
+        } else if (obj instanceof LinkRef) {
+            obj = lookup(((LinkRef)obj).getLinkName());
         }
         return obj;
     }

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbInstanceFactory.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbInstanceFactory.java?view=diff&rev=496460&r1=496459&r2=496460
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbInstanceFactory.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbInstanceFactory.java Mon Jan 15 12:11:17 2007
@@ -26,6 +26,9 @@
 import org.apache.xbean.recipe.StaticRecipe;
 import org.apache.xbean.recipe.Option;
 
+import javax.ejb.MessageDrivenBean;
+import javax.naming.Context;
+import javax.naming.NamingException;
 import javax.resource.spi.UnavailableException;
 import javax.transaction.TransactionManager;
 import java.lang.reflect.Method;
@@ -161,11 +164,20 @@
         ThreadContext callContext = ThreadContext.getThreadContext();
         Operation originalOperation = callContext.getCurrentOperation();
         try {
-
-            // construct the bean instance
-            callContext.setCurrentOperation(Operation.OP_SET_CONTEXT);
-            MdbContext mdbContext = new MdbContext(transactionManager, securityService);
-            objectRecipe.setProperty("messageDrivenContext", new StaticRecipe(mdbContext));
+            Context ctx = deploymentInfo.getJndiEnc();            
+            // construct the bean instance            
+            MdbContext mdbContext = null;
+            try {
+                mdbContext = (MdbContext) ctx.lookup("java:comp/EJBContext");
+            } catch (NamingException e) {               
+                mdbContext = new MdbContext(transactionManager, securityService);
+                ctx.bind("java:comp/EJBContext",mdbContext);
+            }
+            // only in this case should the callback be used
+            if(MessageDrivenBean.class.isAssignableFrom(beanClass)) {
+                callContext.setCurrentOperation(Operation.OP_SET_CONTEXT);
+                objectRecipe.setProperty("messageDrivenContext", new StaticRecipe(mdbContext));
+            }
             Object bean = objectRecipe.create();
 
             // call the post construct method

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulInstanceManager.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulInstanceManager.java?view=diff&rev=496460&r1=496459&r2=496460
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulInstanceManager.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulInstanceManager.java Mon Jan 15 12:11:17 2007
@@ -113,8 +113,7 @@
         Object bean = null;
 
         ThreadContext threadContext = ThreadContext.getThreadContext();
-        Operation currentOperation = threadContext.getCurrentOperation();
-        threadContext.setCurrentOperation(Operation.OP_SET_CONTEXT);
+        Operation currentOperation = threadContext.getCurrentOperation();       
         try {
             ObjectRecipe objectRecipe = new ObjectRecipe(beanClass);
             objectRecipe.allow(Option.FIELD_INJECTION);
@@ -124,6 +123,17 @@
             ThreadContext callContext = ThreadContext.getThreadContext();
             CoreDeploymentInfo deploymentInfo = callContext.getDeploymentInfo();
             Context ctx = deploymentInfo.getJndiEnc();
+            SessionContext sessionContext = null;
+            try {
+                sessionContext = (SessionContext)ctx.lookup("java:comp/EJBContext");
+            } catch (NamingException e1) {
+                sessionContext = createSessionContext();  
+                ctx.bind("java:comp/EJBContext", sessionContext);
+            }
+            if(javax.ejb.SessionBean.class.isAssignableFrom(beanClass)) {
+                threadContext.setCurrentOperation(Operation.OP_SET_CONTEXT);
+                objectRecipe.setProperty("sessionContext", new StaticRecipe(sessionContext));
+            }
             for (Injection injection : deploymentInfo.getInjections()) {
                 try {
                     String jndiName = injection.getJndiName();
@@ -132,10 +142,7 @@
                 } catch (NamingException e) {
                     logger.warning("Injection data not found in enc: jndiName='" + injection.getJndiName() + "', target=" + injection.getTarget() + "/" + injection.getName());
                 }
-            }
-
-            objectRecipe.setProperty("sessionContext", new StaticRecipe(createSessionContext()));
-
+            }            
             bean = objectRecipe.create(beanClass.getClassLoader());
         } catch (Throwable callbackException) {
             /*

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java?view=diff&rev=496460&r1=496459&r2=496460
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java Mon Jan 15 12:11:17 2007
@@ -97,7 +97,18 @@
             Operation originalOperation = callContext.getCurrentOperation();
 
             try {
-                Context ctx = deploymentInfo.getJndiEnc();
+                Context ctx = deploymentInfo.getJndiEnc();                                
+                SessionContext sessionContext = null;
+                try {
+                    sessionContext = (SessionContext)ctx.lookup("java:comp/EJBContext");
+                } catch (NamingException e1) {
+                    sessionContext = createSessionContext();  
+                    ctx.bind("java:comp/EJBContext", sessionContext);
+                }                
+                if(javax.ejb.SessionBean.class.isAssignableFrom(beanClass)) {
+                    callContext.setCurrentOperation(Operation.OP_SET_CONTEXT);
+                    objectRecipe.setProperty("sessionContext", new StaticRecipe(sessionContext));
+                }
                 for (Injection injection : deploymentInfo.getInjections()) {
                     try {
                         String jndiName = injection.getJndiName();
@@ -107,9 +118,6 @@
                         logger.warn("Injection data not found in enc: jndiName='"+injection.getJndiName()+"', target="+injection.getTarget()+"/"+injection.getName());
                     }
                 }
-
-                callContext.setCurrentOperation(Operation.OP_SET_CONTEXT);
-                objectRecipe.setProperty("sessionContext", new StaticRecipe(createSessionContext()));
                 bean = objectRecipe.create(beanClass.getClassLoader());
                 callContext.setCurrentOperation(Operation.OP_CREATE);
 

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateful/StatefulContainerTest.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateful/StatefulContainerTest.java?view=diff&rev=496460&r1=496459&r2=496460
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateful/StatefulContainerTest.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateful/StatefulContainerTest.java Mon Jan 15 12:11:17 2007
@@ -207,7 +207,7 @@
     }
 
     public static enum Lifecycle {
-        CONSTRUCTOR, INJECTION, POST_CONSTRUCT, PRE_PASSIVATE1, POST_ACTIVATE1, BUSINESS_METHOD, PRE_PASSIVATE2, POST_ACTIVATE2, PRE_DESTROY
+        CONSTRUCTOR, POST_CONSTRUCT, PRE_PASSIVATE1, POST_ACTIVATE1, BUSINESS_METHOD, PRE_PASSIVATE2, POST_ACTIVATE2, PRE_DESTROY
     }
 
     public static class WidgetBean implements Widget, RemoteWidget, Serializable {
@@ -221,7 +221,7 @@
             lifecycle.push(Lifecycle.CONSTRUCTOR);
         }
         public void setSessionContext(SessionContext sessionContext){
-            lifecycle.push(Lifecycle.INJECTION);
+        //    lifecycle.push(Lifecycle.INJECTION);
         }
 
         public Stack<Lifecycle> getLifecycle() {

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessContainerTest.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessContainerTest.java?view=diff&rev=496460&r1=496459&r2=496460
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessContainerTest.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessContainerTest.java Mon Jan 15 12:11:17 2007
@@ -166,7 +166,7 @@
     }
 
     public static enum Lifecycle {
-        CONSTRUCTOR, INJECTION, POST_CONSTRUCT, BUSINESS_METHOD, PRE_DESTROY
+        CONSTRUCTOR, POST_CONSTRUCT, BUSINESS_METHOD, PRE_DESTROY
     }
 
     public static class WidgetBean implements Widget, RemoteWidget {
@@ -178,7 +178,7 @@
         }
 
         public void setSessionContext(SessionContext sessionContext) {
-            lifecycle.push(Lifecycle.INJECTION);
+            //lifecycle.push(Lifecycle.INJECTION);
         }
 
         public Stack<Lifecycle> getLifecycle() {

Modified: incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateful/ContextLookupStatefulBean.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateful/ContextLookupStatefulBean.java?view=diff&rev=496460&r1=496459&r2=496460
==============================================================================
--- incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateful/ContextLookupStatefulBean.java (original)
+++ incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateful/ContextLookupStatefulBean.java Mon Jan 15 12:11:17 2007
@@ -24,6 +24,7 @@
 import org.apache.openejb.test.stateless.BasicStatelessHome;
 import org.apache.openejb.test.stateless.BasicStatelessObject;
 
+import javax.ejb.EJBContext;
 import javax.ejb.EJBException;
 import javax.ejb.SessionContext;
 import javax.ejb.SessionSynchronization;
@@ -431,6 +432,31 @@
         }
     }
 
+    public void lookupSessionContext() throws TestFailureException{
+        try{
+            try{
+                InitialContext ctx = new InitialContext();
+                Assert.assertNotNull("The InitialContext is null", ctx);
+
+                // lookup in enc
+                SessionContext sctx = (SessionContext)ctx.lookup("java:comp/env/sessioncontext");
+                Assert.assertNotNull("The SessionContext got from java:comp/env/sessioncontext is null", sctx );
+
+                // lookup using global name
+                EJBContext ejbCtx = (EJBContext)ctx.lookup("java:comp/EJBContext");
+                Assert.assertNotNull("The SessionContext got from java:comp/EJBContext is null ", ejbCtx );                
+
+                // verify context was set via legacy set method
+                Assert.assertNotNull("The SessionContext is null from setter method", ejbContext );
+            } catch (Exception e){
+                Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+            }
+        } catch (AssertionFailedError afe){
+            throw new TestFailureException(afe);
+        }
+        
+    }
+    
     //
     // Remote interface methods
     //=============================

Modified: incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateful/ContextLookupStatefulPojoBean.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateful/ContextLookupStatefulPojoBean.java?view=diff&rev=496460&r1=496459&r2=496460
==============================================================================
--- incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateful/ContextLookupStatefulPojoBean.java (original)
+++ incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateful/ContextLookupStatefulPojoBean.java Mon Jan 15 12:11:17 2007
@@ -22,6 +22,7 @@
 import org.apache.openejb.test.entity.bmp.BasicBmpHome;
 import org.apache.openejb.test.entity.bmp.BasicBmpObject;
 
+import javax.ejb.EJBContext;
 import javax.ejb.SessionContext;
 import javax.sql.DataSource;
 import javax.naming.InitialContext;
@@ -95,6 +96,8 @@
     public void lookupStringEntry() throws TestFailureException {
         try {
             try {
+                InitialContext ctx = new InitialContext();
+                ejbContext = (SessionContext)ctx.lookup("java:comp/EJBContext");
                 String expected = new String("1");
                 String actual = (String) ejbContext.lookup("stateful/references/String");
 
@@ -404,12 +407,28 @@
         }
     }
 
+    public void lookupSessionContext() throws TestFailureException{
+        try{
+            try{
+                InitialContext ctx = new InitialContext();
+                Assert.assertNotNull("The InitialContext is null", ctx);                
+
+                // lookup in enc
+                SessionContext sctx = (SessionContext)ctx.lookup("java:comp/env/sessioncontext");
+                Assert.assertNotNull("The SessionContext got from java:comp/env/sessioncontext is null", sctx );
+
+                // lookup using global name
+                EJBContext ejbCtx = (EJBContext)ctx.lookup("java:comp/EJBContext");
+                Assert.assertNotNull("The SessionContext got from java:comp/EJBContext is null ", ejbCtx );
 
-    /**
-     * Set the associated session context. The container calls this method
-     * after the instance creation.
-     */
-    public void setSessionContext(SessionContext ctx) {
-        ejbContext = ctx;
+                // verify context was set via legacy set method
+                Assert.assertNotNull("The SessionContext is null from setter method", ejbContext );
+            } catch (Exception e){
+                Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+            }
+        } catch (AssertionFailedError afe){
+            throw new TestFailureException(afe);
+        }
+        
     }
 }

Modified: incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateful/EncStatefulBean.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateful/EncStatefulBean.java?view=diff&rev=496460&r1=496459&r2=496460
==============================================================================
--- incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateful/EncStatefulBean.java (original)
+++ incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateful/EncStatefulBean.java Mon Jan 15 12:11:17 2007
@@ -18,6 +18,7 @@
 
 import java.rmi.RemoteException;
 
+import javax.ejb.EJBContext;
 import javax.ejb.EJBException;
 import javax.ejb.SessionContext;
 import javax.ejb.SessionSynchronization;
@@ -38,13 +39,13 @@
 import org.apache.openejb.test.stateless.BasicStatelessObject;
 
 /**
- * 
+ *
  * @author <a href="mailto:david.blevins@visi.com">David Blevins</a>
  * @author <a href="mailto:Richard@Monson-Haefel.com">Richard Monson-Haefel</a>
  */
 public class EncStatefulBean implements javax.ejb.SessionBean, SessionSynchronization {
 
-    
+
     private String name;
     private SessionContext ejbContext;
     private EntityManager extendedEntityManager;
@@ -54,10 +55,10 @@
 
     //=============================
     // Home interface methods
-    //    
+    //
     /**
      * Maps to EncStatefulHome.create
-     * 
+     *
      * @param name
      * @exception javax.ejb.CreateException
      * @see EncStatefulHome#create
@@ -65,21 +66,21 @@
     public void ejbCreate(String name) throws CreateException{
         this.name = name;
     }
-    //    
+    //
     // Home interface methods
     //=============================
-    
+
 
     //=============================
     // Remote interface methods
-    //    
-    
+    //
+
     public void lookupEntityBean() throws TestFailureException{
         try{
             try{
             InitialContext ctx = new InitialContext();
             Assert.assertNotNull("The InitialContext is null", ctx );
-            
+
             BasicBmpHome home = (BasicBmpHome) javax.rmi.PortableRemoteObject.narrow( ctx.lookup("java:comp/env/stateful/beanReferences/bmp_entity"), BasicBmpHome.class );
             Assert.assertNotNull("The EJBHome looked up is null",home);
 
@@ -92,13 +93,13 @@
             throw new TestFailureException(afe);
         }
     }
-    
+
     public void lookupStatefulBean() throws TestFailureException{
         try{
             try{
             InitialContext ctx = new InitialContext();
             Assert.assertNotNull("The InitialContext is null", ctx );
-            
+
             BasicStatefulHome home = (BasicStatefulHome) javax.rmi.PortableRemoteObject.narrow( ctx.lookup("java:comp/env/stateful/beanReferences/stateful"), BasicStatefulHome.class );
             Assert.assertNotNull("The EJBHome looked up is null",home);
 
@@ -111,13 +112,13 @@
             throw new TestFailureException(afe);
         }
     }
-    
+
     public void lookupStatelessBean() throws TestFailureException{
         try{
             try{
             InitialContext ctx = new InitialContext();
             Assert.assertNotNull("The InitialContext is null", ctx );
-            
+
             BasicStatelessHome home = (BasicStatelessHome) javax.rmi.PortableRemoteObject.narrow( ctx.lookup("java:comp/env/stateful/beanReferences/stateless"), BasicStatelessHome.class );
             Assert.assertNotNull("The EJBHome looked up is null",home);
 
@@ -136,10 +137,10 @@
             try{
             InitialContext ctx = new InitialContext();
             Assert.assertNotNull("The InitialContext is null", ctx );
-            
+
             String expected = new String("1");
             String actual   = (String)ctx.lookup("java:comp/env/stateful/references/String");
-            
+
             Assert.assertNotNull("The String looked up is null", actual );
             Assert.assertEquals(expected, actual );
 
@@ -150,16 +151,16 @@
             throw new TestFailureException(afe);
         }
     }
-    
+
     public void lookupDoubleEntry() throws TestFailureException{
         try{
             try{
             InitialContext ctx = new InitialContext();
             Assert.assertNotNull("The InitialContext is null", ctx );
-            
+
             Double expected = new Double(1.0D);
             Double actual   = (Double)ctx.lookup("java:comp/env/stateful/references/Double");
-            
+
             Assert.assertNotNull("The Double looked up is null", actual );
             Assert.assertEquals(expected, actual );
 
@@ -170,16 +171,16 @@
             throw new TestFailureException(afe);
         }
     }
-    
+
     public void lookupLongEntry() throws TestFailureException{
         try{
             try{
             InitialContext ctx = new InitialContext();
             Assert.assertNotNull("The InitialContext is null", ctx );
-            
+
             Long expected = new Long(1L);
             Long actual   = (Long)ctx.lookup("java:comp/env/stateful/references/Long");
-            
+
             Assert.assertNotNull("The Long looked up is null", actual );
             Assert.assertEquals(expected, actual );
 
@@ -190,16 +191,16 @@
             throw new TestFailureException(afe);
         }
     }
-    
+
     public void lookupFloatEntry() throws TestFailureException{
         try{
             try{
             InitialContext ctx = new InitialContext();
             Assert.assertNotNull("The InitialContext is null", ctx );
-            
+
             Float expected = new Float(1.0F);
             Float actual   = (Float)ctx.lookup("java:comp/env/stateful/references/Float");
-            
+
             Assert.assertNotNull("The Float looked up is null", actual );
             Assert.assertEquals(expected, actual );
 
@@ -210,16 +211,16 @@
             throw new TestFailureException(afe);
         }
     }
-    
+
     public void lookupIntegerEntry() throws TestFailureException{
         try{
             try{
             InitialContext ctx = new InitialContext();
             Assert.assertNotNull("The InitialContext is null", ctx );
-            
+
             Integer expected = new Integer(1);
             Integer actual   = (Integer)ctx.lookup("java:comp/env/stateful/references/Integer");
-            
+
             Assert.assertNotNull("The Integer looked up is null", actual );
             Assert.assertEquals(expected, actual );
 
@@ -230,16 +231,16 @@
             throw new TestFailureException(afe);
         }
     }
-    
+
     public void lookupShortEntry() throws TestFailureException{
         try{
             try{
             InitialContext ctx = new InitialContext();
             Assert.assertNotNull("The InitialContext is null", ctx );
-            
+
             Short expected = new Short((short)1);
             Short actual   = (Short)ctx.lookup("java:comp/env/stateful/references/Short");
-            
+
             Assert.assertNotNull("The Short looked up is null", actual );
             Assert.assertEquals(expected, actual );
 
@@ -250,16 +251,16 @@
             throw new TestFailureException(afe);
         }
     }
-    
+
     public void lookupBooleanEntry() throws TestFailureException{
         try{
             try{
             InitialContext ctx = new InitialContext();
             Assert.assertNotNull("The InitialContext is null", ctx );
-            
+
             Boolean expected = new Boolean(true);
             Boolean actual = (Boolean)ctx.lookup("java:comp/env/stateful/references/Boolean");
-            
+
             Assert.assertNotNull("The Boolean looked up is null", actual );
             Assert.assertEquals(expected, actual );
 
@@ -270,16 +271,16 @@
             throw new TestFailureException(afe);
         }
     }
-    
+
     public void lookupByteEntry() throws TestFailureException{
         try{
             try{
             InitialContext ctx = new InitialContext();
             Assert.assertNotNull("The InitialContext is null", ctx );
-            
+
             Byte expected = new Byte((byte)1);
             Byte actual   = (Byte)ctx.lookup("java:comp/env/stateful/references/Byte");
-            
+
             Assert.assertNotNull("The Byte looked up is null", actual );
             Assert.assertEquals(expected, actual );
 
@@ -326,12 +327,12 @@
             throw new TestFailureException(afe);
         }
     }
-    
+
     public void lookupPersistenceUnit() throws TestFailureException{
         try{
             try{
                 InitialContext ctx = new InitialContext();
-                Assert.assertNotNull("The InitialContext is null", ctx);                
+                Assert.assertNotNull("The InitialContext is null", ctx);
                 EntityManagerFactory emf = (EntityManagerFactory)ctx.lookup("java:comp/env/persistence/TestUnit");
                 Assert.assertNotNull("The EntityManagerFactory is null", emf );
 
@@ -342,7 +343,7 @@
             throw new TestFailureException(afe);
         }
     }
-    
+
     public void lookupPersistenceContext() throws TestFailureException{
         try{
             try{
@@ -479,6 +480,31 @@
         } catch (AssertionFailedError afe){
             throw new TestFailureException(afe);
         }
+    }
+
+    public void lookupSessionContext() throws TestFailureException{
+        try{
+            try{
+                InitialContext ctx = new InitialContext();
+                Assert.assertNotNull("The InitialContext is null", ctx);
+
+                // lookup in enc
+                SessionContext sctx = (SessionContext)ctx.lookup("java:comp/env/sessioncontext");
+                Assert.assertNotNull("The SessionContext got from java:comp/env/sessioncontext is null", sctx );
+
+                // lookup using global name
+                EJBContext ejbCtx = (EJBContext)ctx.lookup("java:comp/EJBContext");
+                Assert.assertNotNull("The SessionContext got from java:comp/EJBContext is null ", ejbCtx );
+
+                // verify context was set via legacy set method
+                Assert.assertNotNull("The SessionContext is null from setter method", ejbContext );
+            } catch (Exception e){
+                Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+            }
+        } catch (AssertionFailedError afe){
+            throw new TestFailureException(afe);
+        }
+
     }
 
     //

Modified: incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateful/EncStatefulObject.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateful/EncStatefulObject.java?view=diff&rev=496460&r1=496459&r2=496460
==============================================================================
--- incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateful/EncStatefulObject.java (original)
+++ incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateful/EncStatefulObject.java Mon Jan 15 12:11:17 2007
@@ -37,7 +37,7 @@
     public void lookupExtendedPersistenceContext() throws TestFailureException, RemoteException;
     public void lookupPropagatedPersistenceContext() throws TestFailureException, RemoteException;
     public void testPropgation() throws TestFailureException, RemoteException;
-
+    public void lookupSessionContext() throws TestFailureException,RemoteException;
     public void lookupStringEntry()  throws TestFailureException, RemoteException;
     public void lookupDoubleEntry()  throws TestFailureException, RemoteException;
     public void lookupLongEntry()    throws TestFailureException, RemoteException;

Modified: incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateless/ContextLookupStatelessBean.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateless/ContextLookupStatelessBean.java?view=diff&rev=496460&r1=496459&r2=496460
==============================================================================
--- incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateless/ContextLookupStatelessBean.java (original)
+++ incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateless/ContextLookupStatelessBean.java Mon Jan 15 12:11:17 2007
@@ -24,6 +24,7 @@
 import org.apache.openejb.test.stateful.BasicStatefulHome;
 import org.apache.openejb.test.stateful.BasicStatefulObject;
 
+import javax.ejb.EJBContext;
 import javax.ejb.EJBException;
 import javax.ejb.SessionContext;
 import javax.naming.InitialContext;
@@ -301,6 +302,32 @@
         }
     }
 
+    public void lookupSessionContext() throws TestFailureException{
+        try{
+            try{
+                InitialContext ctx = new InitialContext();
+                Assert.assertNotNull("The InitialContext is null", ctx);                
+
+                // lookup in enc
+                SessionContext sctx = (SessionContext)ctx.lookup("java:comp/env/sessioncontext");
+                Assert.assertNotNull("The SessionContext got from java:comp/env/sessioncontext is null", sctx );
+
+                // lookup using global name
+                EJBContext ejbCtx = (EJBContext)ctx.lookup("java:comp/EJBContext");
+                Assert.assertNotNull("The SessionContext got from java:comp/EJBContext is null ", ejbCtx );
+
+                // verify context was set via legacy set method
+                Assert.assertNotNull("The SessionContext is null from setter method", ejbContext );
+            } catch (Exception e){
+                Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+            }
+        } catch (AssertionFailedError afe){
+            throw new TestFailureException(afe);
+        }
+        
+    }
+    
+    
     //
     // Remote interface methods
     //=============================

Modified: incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateless/ContextLookupStatelessPojoBean.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateless/ContextLookupStatelessPojoBean.java?view=diff&rev=496460&r1=496459&r2=496460
==============================================================================
--- incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateless/ContextLookupStatelessPojoBean.java (original)
+++ incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateless/ContextLookupStatelessPojoBean.java Mon Jan 15 12:11:17 2007
@@ -22,10 +22,12 @@
 import org.apache.openejb.test.entity.bmp.BasicBmpHome;
 import org.apache.openejb.test.entity.bmp.BasicBmpObject;
 
+import javax.ejb.EJBContext;
 import javax.ejb.SessionContext;
 import javax.ejb.EJBException;
 import javax.sql.DataSource;
 import javax.naming.InitialContext;
+import javax.naming.NamingException;
 import javax.persistence.EntityManagerFactory;
 import javax.persistence.EntityManager;
 
@@ -36,12 +38,12 @@
 
 public class ContextLookupStatelessPojoBean {
 
-    private SessionContext ejbContext;
+    
 
     public void lookupEntityBean() throws TestFailureException {
         try {
             try {
-                BasicBmpHome home = (BasicBmpHome) ejbContext.lookup("stateless/beanReferences/bmp_entity");
+                BasicBmpHome home = (BasicBmpHome) getSessionContext().lookup("stateless/beanReferences/bmp_entity");
                 Assert.assertNotNull("The EJBHome looked up is null", home);
 
                 BasicBmpObject object = home.createObject("Enc Bean");
@@ -57,7 +59,7 @@
     public void lookupStatefulBean() throws TestFailureException {
         try {
             try {
-                BasicStatefulHome home = (BasicStatefulHome) ejbContext.lookup("stateless/beanReferences/stateful");
+                BasicStatefulHome home = (BasicStatefulHome) getSessionContext().lookup("stateless/beanReferences/stateful");
                 Assert.assertNotNull("The EJBHome looked up is null", home);
 
                 BasicStatefulObject object = home.createObject("Enc Bean");
@@ -73,7 +75,7 @@
     public void lookupStatelessBean() throws TestFailureException {
         try {
             try {
-                BasicStatelessHome home = (BasicStatelessHome) ejbContext.lookup("stateless/beanReferences/stateless");
+                BasicStatelessHome home = (BasicStatelessHome) getSessionContext().lookup("stateless/beanReferences/stateless");
                 Assert.assertNotNull("The EJBHome looked up is null", home);
 
                 BasicStatelessObject object = home.createObject();
@@ -90,7 +92,7 @@
         try {
             try {
                 String expected = new String("1");
-                String actual = (String) ejbContext.lookup("stateless/references/String");
+                String actual = (String) getSessionContext().lookup("stateless/references/String");
 
                 Assert.assertNotNull("The String looked up is null", actual);
                 Assert.assertEquals(expected, actual);
@@ -107,7 +109,7 @@
         try {
             try {
                 Double expected = new Double(1.0D);
-                Double actual = (Double) ejbContext.lookup("stateless/references/Double");
+                Double actual = (Double) getSessionContext().lookup("stateless/references/Double");
 
                 Assert.assertNotNull("The Double looked up is null", actual);
                 Assert.assertEquals(expected, actual);
@@ -124,7 +126,7 @@
         try {
             try {
                 Long expected = new Long(1L);
-                Long actual = (Long) ejbContext.lookup("stateless/references/Long");
+                Long actual = (Long) getSessionContext().lookup("stateless/references/Long");
 
                 Assert.assertNotNull("The Long looked up is null", actual);
                 Assert.assertEquals(expected, actual);
@@ -141,7 +143,7 @@
         try {
             try {
                 Float expected = new Float(1.0F);
-                Float actual = (Float) ejbContext.lookup("stateless/references/Float");
+                Float actual = (Float) getSessionContext().lookup("stateless/references/Float");
 
                 Assert.assertNotNull("The Float looked up is null", actual);
                 Assert.assertEquals(expected, actual);
@@ -158,7 +160,7 @@
         try {
             try {
                 Integer expected = new Integer(1);
-                Integer actual = (Integer) ejbContext.lookup("stateless/references/Integer");
+                Integer actual = (Integer) getSessionContext().lookup("stateless/references/Integer");
 
                 Assert.assertNotNull("The Integer looked up is null", actual);
                 Assert.assertEquals(expected, actual);
@@ -175,7 +177,7 @@
         try {
             try {
                 Short expected = new Short((short) 1);
-                Short actual = (Short) ejbContext.lookup("stateless/references/Short");
+                Short actual = (Short) getSessionContext().lookup("stateless/references/Short");
 
                 Assert.assertNotNull("The Short looked up is null", actual);
                 Assert.assertEquals(expected, actual);
@@ -192,7 +194,7 @@
         try {
             try {
                 Boolean expected = new Boolean(true);
-                Boolean actual = (Boolean) ejbContext.lookup("stateless/references/Boolean");
+                Boolean actual = (Boolean) getSessionContext().lookup("stateless/references/Boolean");
 
                 Assert.assertNotNull("The Boolean looked up is null", actual);
                 Assert.assertEquals(expected, actual);
@@ -209,7 +211,7 @@
         try {
             try {
                 Byte expected = new Byte((byte) 1);
-                Byte actual = (Byte) ejbContext.lookup("stateless/references/Byte");
+                Byte actual = (Byte) getSessionContext().lookup("stateless/references/Byte");
 
                 Assert.assertNotNull("The Byte looked up is null", actual);
                 Assert.assertEquals(expected, actual);
@@ -226,7 +228,7 @@
         try {
             try {
                 Character expected = new Character('D');
-                Character actual = (Character) ejbContext.lookup("stateless/references/Character");
+                Character actual = (Character) getSessionContext().lookup("stateless/references/Character");
 
                 Assert.assertNotNull("The Character looked up is null", actual);
                 Assert.assertEquals(expected, actual);
@@ -242,7 +244,7 @@
     public void lookupResource() throws TestFailureException {
         try {
             try {
-                Object obj = ejbContext.lookup("datasource");
+                Object obj = getSessionContext().lookup("datasource");
                 Assert.assertNotNull("The DataSource is null", obj);
                 Assert.assertTrue("Not an instance of DataSource", obj instanceof DataSource);
             } catch (Exception e) {
@@ -268,6 +270,28 @@
             throw new TestFailureException(afe);
         }
     }
+    
+    public void lookupSessionContext() throws TestFailureException{
+        try{
+            try{
+                InitialContext ctx = new InitialContext();
+                Assert.assertNotNull("The InitialContext is null", ctx);                
+
+                // lookup in enc
+                SessionContext sctx = (SessionContext)ctx.lookup("java:comp/env/sessioncontext");
+                Assert.assertNotNull("The SessionContext got from java:comp/env/sessioncontext is null", sctx );
+
+                // lookup using global name
+                EJBContext ejbCtx = (EJBContext)ctx.lookup("java:comp/EJBContext");
+                Assert.assertNotNull("The SessionContext got from java:comp/EJBContext is null ", ejbCtx );
+            } catch (Exception e){
+                Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+            }
+        } catch (AssertionFailedError afe){
+            throw new TestFailureException(afe);
+        }
+        
+    }    
 
     public void lookupPersistenceContext() throws TestFailureException{
         try{
@@ -291,7 +315,14 @@
      * Set the associated session context. The container calls this method
      * after the instance creation.
      */
-    public void setSessionContext(SessionContext ctx) throws EJBException, RemoteException {
-        ejbContext = ctx;
+    public SessionContext getSessionContext() throws EJBException, RemoteException {
+        SessionContext ejbContext = null;
+        try {
+            ejbContext = (SessionContext) new InitialContext().lookup("java:comp/EJBContext");
+        } catch (NamingException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        return ejbContext;
     }
 }

Modified: incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateless/EncStatelessBean.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateless/EncStatelessBean.java?view=diff&rev=496460&r1=496459&r2=496460
==============================================================================
--- incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateless/EncStatelessBean.java (original)
+++ incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateless/EncStatelessBean.java Mon Jan 15 12:11:17 2007
@@ -19,6 +19,7 @@
 import java.rmi.RemoteException;
 import java.sql.Connection;
 
+import javax.ejb.EJBContext;
 import javax.ejb.EJBException;
 import javax.ejb.SessionContext;
 import javax.naming.InitialContext;
@@ -343,8 +344,34 @@
             throw new TestFailureException(afe);
         }
     }
+    
+    public void lookupSessionContext() throws TestFailureException{
+        try{
+            try{
+                InitialContext ctx = new InitialContext();
+                Assert.assertNotNull("The InitialContext is null", ctx);                
 
-    //
+                // lookup in enc
+                SessionContext sctx = (SessionContext)ctx.lookup("java:comp/env/sessioncontext");
+                Assert.assertNotNull("The SessionContext got from java:comp/env/sessioncontext is null", sctx );
+
+                // lookup using global name
+                EJBContext ejbCtx = (EJBContext)ctx.lookup("java:comp/EJBContext");
+                Assert.assertNotNull("The SessionContext got from java:comp/EJBContext is null ", ejbCtx );
+
+                // verify context was set via legacy set method
+                Assert.assertNotNull("The SessionContext is null from setter method", ejbContext );
+            } catch (Exception e){
+                Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+            }
+        } catch (AssertionFailedError afe){
+            throw new TestFailureException(afe);
+        }
+        
+    }
+    
+    
+    //    
     // Remote interface methods
     //=============================
 

Modified: incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateless/EncStatelessObject.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateless/EncStatelessObject.java?view=diff&rev=496460&r1=496459&r2=496460
==============================================================================
--- incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateless/EncStatelessObject.java (original)
+++ incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateless/EncStatelessObject.java Mon Jan 15 12:11:17 2007
@@ -34,7 +34,7 @@
     public void lookupResource() throws TestFailureException, RemoteException;
     public void lookupPersistenceUnit() throws TestFailureException, RemoteException;
     public void lookupPersistenceContext() throws TestFailureException, RemoteException;
-
+    public void lookupSessionContext() throws TestFailureException, RemoteException;
     public void lookupStringEntry()  throws TestFailureException, RemoteException;
     public void lookupDoubleEntry()  throws TestFailureException, RemoteException;
     public void lookupLongEntry()    throws TestFailureException, RemoteException;

Modified: incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/resources/META-INF/ejb-jar.xml
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/resources/META-INF/ejb-jar.xml?view=diff&rev=496460&r1=496459&r2=496460
==============================================================================
--- incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/resources/META-INF/ejb-jar.xml (original)
+++ incubator/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/resources/META-INF/ejb-jar.xml Mon Jan 15 12:11:17 2007
@@ -1054,6 +1054,10 @@
         <res-type>javax.sql.DataSource</res-type>
         <res-auth>Container</res-auth>
       </resource-ref>
+      <resource-env-ref>
+        <resource-env-ref-name>sessioncontext</resource-env-ref-name>
+        <resource-env-ref-type>javax.ejb.SessionContext</resource-env-ref-type>
+      </resource-env-ref>      
       <persistence-unit-ref>
         <description>
           Persistence unit for testing the functionality.
@@ -1169,6 +1173,10 @@
         <res-type>javax.sql.DataSource</res-type>
         <res-auth>Container</res-auth>
       </resource-ref>
+      <resource-env-ref>
+        <resource-env-ref-name>sessioncontext</resource-env-ref-name>
+        <resource-env-ref-type>javax.ejb.SessionContext</resource-env-ref-type>
+      </resource-env-ref>            
       <persistence-unit-ref>
         <description>
           Persistence unit for testing the functionality.
@@ -1284,6 +1292,10 @@
         <res-type>javax.sql.DataSource</res-type>
         <res-auth>Container</res-auth>
       </resource-ref>
+      <resource-env-ref>
+        <resource-env-ref-name>sessioncontext</resource-env-ref-name>
+        <resource-env-ref-type>javax.ejb.SessionContext</resource-env-ref-type>
+      </resource-env-ref>            
       <persistence-unit-ref>
         <description>
           Persistence unit for testing the functionality.
@@ -1654,6 +1666,10 @@
         <res-type>javax.sql.DataSource</res-type>
         <res-auth>Container</res-auth>
       </resource-ref>
+      <resource-env-ref>
+        <resource-env-ref-name>sessioncontext</resource-env-ref-name>
+        <resource-env-ref-type>javax.ejb.SessionContext</resource-env-ref-type>
+      </resource-env-ref>
       <persistence-unit-ref>
         <description>
           Persistence unit for testing the functionality.
@@ -1775,6 +1791,10 @@
         <res-type>javax.sql.DataSource</res-type>
         <res-auth>Container</res-auth>
       </resource-ref>
+      <resource-env-ref>
+        <resource-env-ref-name>sessioncontext</resource-env-ref-name>
+        <resource-env-ref-type>javax.ejb.SessionContext</resource-env-ref-type>
+      </resource-env-ref>            
       <persistence-unit-ref>
         <description>
           Persistence unit for testing the functionality.
@@ -1896,6 +1916,10 @@
         <res-type>javax.sql.DataSource</res-type>
         <res-auth>Container</res-auth>
       </resource-ref>
+      <resource-env-ref>
+        <resource-env-ref-name>sessioncontext</resource-env-ref-name>
+        <resource-env-ref-type>javax.ejb.SessionContext</resource-env-ref-type>
+      </resource-env-ref>            
       <persistence-unit-ref>
         <description>
           Persistence unit for testing the functionality.

Modified: incubator/openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateful/StatefulJndiEncTests.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateful/StatefulJndiEncTests.java?view=diff&rev=496460&r1=496459&r2=496460
==============================================================================
--- incubator/openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateful/StatefulJndiEncTests.java (original)
+++ incubator/openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateful/StatefulJndiEncTests.java Mon Jan 15 12:11:17 2007
@@ -232,4 +232,14 @@
         }
     }
 
+    public void test18_lookupSessionContext() {
+        try{
+            ejbObject.lookupSessionContext();
+        } catch (TestFailureException e){
+            throw e.error;
+        } catch (Exception e){
+            fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+        }
+    }
+    
 }

Modified: incubator/openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateless/StatelessJndiEncTests.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateless/StatelessJndiEncTests.java?view=diff&rev=496460&r1=496459&r2=496460
==============================================================================
--- incubator/openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateless/StatelessJndiEncTests.java (original)
+++ incubator/openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateless/StatelessJndiEncTests.java Mon Jan 15 12:11:17 2007
@@ -198,8 +198,17 @@
             fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
         }
     }
-    
-    public void test15_lookupPersistenceContext() {
+
+    public void test15_lookupSessionContext() {
+        try{
+            ejbObject.lookupSessionContext();
+        } catch (TestFailureException e){
+            throw e.error;
+        } catch (Exception e){
+            fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+        }
+    }
+    public void test16_lookupPersistenceContext() {
         try{
             ejbObject.lookupPersistenceContext();
         } catch (TestFailureException e){