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){