You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2007/04/20 05:42:12 UTC

svn commit: r530626 - in /incubator/openejb/trunk/openejb3: container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ container/openejb-core/src/main/java/org/apache/openejb/config/ container/openejb-core/src/main/java/org/apache/opene...

Author: dblevins
Date: Thu Apr 19 20:42:11 2007
New Revision: 530626

URL: http://svn.apache.org/viewvc?view=rev&rev=530626
Log:
Support for one proxy per business interface.  more to come.

Modified:
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbLocalReferenceInfo.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.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/config/JndiEncInfoBuilder.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/EjbHomeProxyHandler.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainerManagedTxPolicy.java
    incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbLocalReferenceInfo.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbLocalReferenceInfo.java?view=diff&rev=530626&r1=530625&r2=530626
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbLocalReferenceInfo.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbLocalReferenceInfo.java Thu Apr 19 20:42:11 2007
@@ -20,6 +20,7 @@
 
     public String referenceName;
     public String homeType;
+    public String localType;
     public String ejbDeploymentId;
 
     public ReferenceLocationInfo location;

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java?view=diff&rev=530626&r1=530625&r2=530626
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java Thu Apr 19 20:42:11 2007
@@ -143,7 +143,10 @@
             if (homeInterface != null) {
                 String name = strategy.getName(deployment, homeInterface, JndiNameStrategy.Interface.REMOTE_HOME);
                 bindings.add(name);
-                context.bind("openejb/ejb/" + name, new ObjectReference(deployment.getEJBHome()));
+                ObjectReference ref = new ObjectReference(deployment.getEJBHome());
+                context.bind("openejb/ejb/" + name, ref);
+                name = deployment.getDeploymentID() + "/" + deployment.getRemoteInterface().getName();
+                context.bind("openejb/Deployment/" + name, ref);
             }
         } catch (NamingException e) {
             throw new RuntimeException("Unable to bind home interface for deployment " + id, e);
@@ -154,7 +157,9 @@
             if (localHomeInterface != null) {
                 String name = strategy.getName(deployment, localHomeInterface, JndiNameStrategy.Interface.LOCAL_HOME);
                 bindings.add(name);
-                context.bind("openejb/ejb/" + name, new ObjectReference(deployment.getEJBLocalHome()));
+                ObjectReference ref = new ObjectReference(deployment.getEJBLocalHome());
+                context.bind("openejb/ejb/" + name, ref);
+                context.bind("openejb/Deployment/" + deployment.getDeploymentID() + "/" + deployment.getLocalInterface().getName(), ref);
             }
         } catch (NamingException e) {
             throw new RuntimeException("Unable to bind local interface for deployment " + id, e);
@@ -167,6 +172,11 @@
                 DeploymentInfo.BusinessLocalHome businessLocalHome = deployment.getBusinessLocalHome();
                 bindings.add(name);
                 context.bind("openejb/ejb/" + name, new BusinessLocalReference(businessLocalHome));
+
+                for (Class interfce : deployment.getBusinessLocalInterfaces()) {
+                    DeploymentInfo.BusinessLocalHome home = deployment.getBusinessLocalHome(asList(interfce));
+                    context.bind("openejb/Deployment/" + deployment.getDeploymentID() + "/" + interfce.getName(), new BusinessLocalReference(home));
+                }
             }
         } catch (NamingException e) {
             throw new RuntimeException("Unable to bind business local interface for deployment " + id, e);
@@ -178,7 +188,13 @@
                 String name = strategy.getName(deployment, businessRemoteInterface, JndiNameStrategy.Interface.BUSINESS_REMOTE);
                 DeploymentInfo.BusinessRemoteHome businessRemoteHome = deployment.getBusinessRemoteHome();
                 bindings.add(name);
-                context.bind("openejb/ejb/" + name, new BusinessRemoteReference(businessRemoteHome));
+                BusinessRemoteReference ref = new BusinessRemoteReference(businessRemoteHome);
+                context.bind("openejb/ejb/" + name, ref);
+
+                for (Class interfce : deployment.getBusinessRemoteInterfaces()) {
+                    DeploymentInfo.BusinessRemoteHome home = deployment.getBusinessRemoteHome(asList(interfce));
+                    context.bind("openejb/Deployment/" + deployment.getDeploymentID() + "/" + interfce.getName(), new BusinessRemoteReference(home));
+                }
             }
         } catch (NamingException e) {
             throw new RuntimeException("Unable to bind business remote deployment in jndi.", e);
@@ -204,6 +220,12 @@
         } catch (NamingException e) {
             throw new RuntimeException("Unable to bind mdb destination in jndi.", e);
         }
+    }
+
+    private static List<Class> asList(Class interfce) {
+        List<Class> list = new ArrayList<Class>();
+        list.add(interfce);
+        return list;
     }
 
     protected static final class Bindings {

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=530626&r1=530625&r2=530626
==============================================================================
--- 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 Thu Apr 19 20:42:11 2007
@@ -183,22 +183,11 @@
             if (referenceInfo.location != null) {
                 reference = buildReferenceLocation(referenceInfo.location);
             } else {
-                // TODO: Before JndiNameStrategy can be used, this assumption has to be updated
-                if (referenceInfo.homeType == null){
-                    String jndiName = "java:openejb/ejb/" + referenceInfo.ejbDeploymentId + "BusinessRemote";
-                    if (useCrossClassLoaderRef && referenceInfo.externalReference) {
-                        reference = new CrossClassLoaderJndiReference(jndiName);
-                    } else {
-                        reference = new IntraVmJndiReference(jndiName);
-                    }
+                String jndiName = "java:openejb/Deployment/" + referenceInfo.ejbDeploymentId + "/" + referenceInfo.remoteType;
+                if (useCrossClassLoaderRef && referenceInfo.externalReference) {
+                    reference = new CrossClassLoaderJndiReference(jndiName);
                 } else {
-                    // TODO: Before JndiNameStrategy can be used, this assumption has to be updated
-                    String jndiName = "java:openejb/ejb/" + referenceInfo.ejbDeploymentId;
-                    if (useCrossClassLoaderRef && referenceInfo.externalReference) {
-                        reference = new CrossClassLoaderJndiReference(jndiName);
-                    } else {
-                        reference = new IntraVmJndiReference(jndiName);
-                    }
+                    reference = new IntraVmJndiReference(jndiName);
                 }
             }
             bindings.put(normalize(referenceInfo.referenceName), reference);
@@ -210,12 +199,8 @@
 
             if (referenceInfo.location != null) {
                 reference = buildReferenceLocation(referenceInfo.location);
-            } else if (referenceInfo.homeType == null){
-                // TODO: Before JndiNameStrategy can be used, this assumption has to be updated
-                String jndiName = "java:openejb/ejb/" + referenceInfo.ejbDeploymentId + "BusinessLocal";
-                reference = new IntraVmJndiReference(jndiName);
             } else {
-                String jndiName = "java:openejb/ejb/" + referenceInfo.ejbDeploymentId + "Local";
+                String jndiName = "java:openejb/Deployment/" + referenceInfo.ejbDeploymentId + "/" + referenceInfo.localType;
                 reference = new IntraVmJndiReference(jndiName);
             }
             bindings.put(normalize(referenceInfo.referenceName), reference);

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java?view=diff&rev=530626&r1=530625&r2=530626
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java Thu Apr 19 20:42:11 2007
@@ -361,6 +361,7 @@
             EjbLocalReferenceInfo info = new EjbLocalReferenceInfo();
 
             info.homeType = ejb.getLocalHome();
+            info.localType = ejb.getLocal();
             info.referenceName = ejb.getEjbRefName();
 
             // assign location to a global jndi name

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=530626&r1=530625&r2=530626
==============================================================================
--- 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 Thu Apr 19 20:42:11 2007
@@ -506,7 +506,7 @@
             }
         }
 
-        return (BusinessLocalHome) EjbHomeProxyHandler.createHomeProxy(this, InterfaceType.BUSINESS_LOCAL_HOME);
+        return (BusinessLocalHome) EjbHomeProxyHandler.createHomeProxy(this, InterfaceType.BUSINESS_LOCAL_HOME, interfaces);
     }
 
     public BusinessRemoteHome getBusinessRemoteHome() {
@@ -526,7 +526,7 @@
             }
         }
 
-        return (BusinessRemoteHome) EjbHomeProxyHandler.createHomeProxy(this, InterfaceType.BUSINESS_REMOTE_HOME);
+        return (BusinessRemoteHome) EjbHomeProxyHandler.createHomeProxy(this, InterfaceType.BUSINESS_REMOTE_HOME, interfaces);
     }
 
     public String getMessageDestination() {

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java?view=diff&rev=530626&r1=530625&r2=530626
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java Thu Apr 19 20:42:11 2007
@@ -97,7 +97,7 @@
         return createHomeProxy(deploymentInfo, interfaceType, null);
     }
 
-    public static Object createHomeProxy(DeploymentInfo deploymentInfo, InterfaceType interfaceType, ArrayList<Class> objectInterfaces) {
+    public static Object createHomeProxy(DeploymentInfo deploymentInfo, InterfaceType interfaceType, List<Class> objectInterfaces) {
         if (!interfaceType.isHome()) throw new IllegalArgumentException("InterfaceType is not a Home type: " + interfaceType);
 
         try {
@@ -105,7 +105,8 @@
 
             List<Class> proxyInterfaces = new ArrayList<Class>(2);
 
-            proxyInterfaces.add(deploymentInfo.getInterface(interfaceType));
+            Class homeInterface = deploymentInfo.getInterface(interfaceType);
+            proxyInterfaces.add(homeInterface);
             proxyInterfaces.add(IntraVmProxy.class);
 
             return ProxyManager.newProxyInstance(proxyInterfaces.toArray(new Class[]{}), handler);

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java?view=diff&rev=530626&r1=530625&r2=530626
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java Thu Apr 19 20:42:11 2007
@@ -39,6 +39,7 @@
 import org.apache.openejb.OpenEJBException;
 import org.apache.openejb.ProxyInfo;
 import org.apache.openejb.RpcContainer;
+import org.apache.openejb.InvalidateReferenceException;
 import org.apache.openejb.core.CoreDeploymentInfo;
 import org.apache.openejb.core.Operation;
 import org.apache.openejb.core.ThreadContext;
@@ -315,6 +316,8 @@
                 InterceptorStack interceptorStack = new InterceptorStack(instance.bean, runMethod, Operation.REMOVE, interceptors, instance.interceptors);
                 _invoke(callMethod, interceptorStack, args, instance, callContext);
 
+            } catch(InvalidateReferenceException e){
+                throw e;
             } catch(ApplicationException e){
                 retain = deploymentInfo.retainIfExeption(runMethod);
                 throw e;

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainerManagedTxPolicy.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainerManagedTxPolicy.java?view=diff&rev=530626&r1=530625&r2=530626
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainerManagedTxPolicy.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainerManagedTxPolicy.java Thu Apr 19 20:42:11 2007
@@ -54,7 +54,10 @@
     public void handleSystemException(Throwable sysException, Object instance, TransactionContext context) throws ApplicationException, SystemException {
         try {
             policy.handleSystemException(sysException, instance, context);
+        } catch (InvalidateReferenceException e) {
+            throw e;
         } catch (ApplicationException e) {
+            // DMB: Not sure we want this here
             throw new InvalidateReferenceException(e.getRootCause());
         }
     }

Modified: incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java?view=diff&rev=530626&r1=530625&r2=530626
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java (original)
+++ incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java Thu Apr 19 20:42:11 2007
@@ -162,7 +162,7 @@
                         deployment.getPrimaryKeyClass(),
                         deployment.getComponentType().toString(),
                         deploymentID,
-                        -1, deployment.getBusinessRemoteInterfaces());
+                        -1, proxyInfo.getInterfaces());
                 Object[] data = {metaData, proxyInfo.getPrimaryKey()};
                 res.setResult(data);
                 break;
@@ -172,11 +172,11 @@
                 if (property.equalsIgnoreCase("remotable")) {
                     res.setResponseCode(ResponseCodes.JNDI_BUSINESS_OBJECT);
                     EJBMetaDataImpl metaData = new EJBMetaDataImpl(null,
-                            deployment.getBusinessLocalInterface(),
+                            null,
                             deployment.getPrimaryKeyClass(),
                             deployment.getComponentType().toString(),
                             deploymentID,
-                            -1, null);
+                            -1, proxyInfo.getInterfaces());
                     Object[] data = {metaData, proxyInfo.getPrimaryKey()};
                     res.setResult(data);
                 } else {



Re: svn commit: r530626 - in /incubator/openejb/trunk/openejb3: container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ container/openejb-core/src/main/java/org/apache/openejb/config/ container/openejb-core/src/main/java/org/apache/opene...

Posted by Kevan Miller <ke...@gmail.com>.
On Apr 23, 2007, at 6:31 AM, David Blevins wrote:

>
> On Apr 23, 2007, at 1:09 AM, Kevan Miller wrote:
>
>> David Blevins,
>> This change has caused some breakage in Geronimo TCK testing.
>>
>> Would be great if you could have a look...
>
> You may have missed the commit around 10pm fixing this.  Update  
> OpenEJB and Geronimo it should be fixed.

Yep I hadn't seen it... Because I started looking at the problem  
before then...

Thanks for fixing.

--kevan

Re: svn commit: r530626 - in /incubator/openejb/trunk/openejb3: container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ container/openejb-core/src/main/java/org/apache/openejb/config/ container/openejb-core/src/main/java/org/apache/opene...

Posted by Rick McGuire <ri...@gmail.com>.
David Blevins wrote:
> Ok, this is definitely fixed now and tested.  You won't need to update 
> OpenEJB if you have yesterday's fix, but you will need to update your 
> G tree to get my last two commits.
My problems with the naming exceptions finally appear to be fixed.

Rick

>
> -David
>
> On Apr 23, 2007, at 6:59 AM, Kevan Miller wrote:
>
>>
>> On Apr 23, 2007, at 9:05 AM, Rick McGuire wrote:
>>
>>> Unfortunately, I believe it was the 10PM fix that caused the TCK 
>>> breakages.  The problems first appeared for me after I rebuilt 
>>> saturday morning, and are still there this morning.
>>
>> The 10 PM fix that David is referring to is Geronimo RC 531336 which 
>> was committed at 10PM left-coast time last night (Sunday) or 1 AM 
>> right-coast time. Unfortunately, RC 531336 doesn't fix the problem. 
>> David did you verify the fix by testing?
>>
>> Rick,
>> I think you'll find that if you revert 530626 in OpenEJB, the problem 
>> goes away. You'd probably have to revert 531336 from Geronimo, also.
>>
>> --kevan
>>
>>
>
>


Re: svn commit: r530626 - in /incubator/openejb/trunk/openejb3: container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ container/openejb-core/src/main/java/org/apache/openejb/config/ container/openejb-core/src/main/java/org/apache/opene...

Posted by David Blevins <da...@visi.com>.
On Apr 23, 2007, at 8:40 PM, Kevan Miller wrote:

>
> On Apr 23, 2007, at 6:14 PM, David Blevins wrote:
>
>> Ok, this is definitely fixed now and tested.  You won't need to  
>> update OpenEJB if you have yesterday's fix, but you will need to  
>> update your G tree to get my last two commits.
>
> Unfortunately, looks like we're still broken. Rick reported that he  
> was still seeing errors, also...
>

Looks like my fix worked for business interfaces but not old-style  
remote/home.  I've built/tested/checked-in another patch.

The tck smoke tests don't all pass for me due to a seemingly "setup"  
related issue -- more on the tck list about that.

-David


Re: svn commit: r530626 - in /incubator/openejb/trunk/openejb3: container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ container/openejb-core/src/main/java/org/apache/openejb/config/ container/openejb-core/src/main/java/org/apache/opene...

Posted by Kevan Miller <ke...@gmail.com>.
On Apr 23, 2007, at 6:14 PM, David Blevins wrote:

> Ok, this is definitely fixed now and tested.  You won't need to  
> update OpenEJB if you have yesterday's fix, but you will need to  
> update your G tree to get my last two commits.

Unfortunately, looks like we're still broken. Rick reported that he  
was still seeing errors, also...

--kevan 

Re: svn commit: r530626 - in /incubator/openejb/trunk/openejb3: container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ container/openejb-core/src/main/java/org/apache/openejb/config/ container/openejb-core/src/main/java/org/apache/opene...

Posted by David Blevins <da...@visi.com>.
Ok, this is definitely fixed now and tested.  You won't need to  
update OpenEJB if you have yesterday's fix, but you will need to  
update your G tree to get my last two commits.

-David

On Apr 23, 2007, at 6:59 AM, Kevan Miller wrote:

>
> On Apr 23, 2007, at 9:05 AM, Rick McGuire wrote:
>
>> Unfortunately, I believe it was the 10PM fix that caused the TCK  
>> breakages.  The problems first appeared for me after I rebuilt  
>> saturday morning, and are still there this morning.
>
> The 10 PM fix that David is referring to is Geronimo RC 531336  
> which was committed at 10PM left-coast time last night (Sunday) or  
> 1 AM right-coast time. Unfortunately, RC 531336 doesn't fix the  
> problem. David did you verify the fix by testing?
>
> Rick,
> I think you'll find that if you revert 530626 in OpenEJB, the  
> problem goes away. You'd probably have to revert 531336 from  
> Geronimo, also.
>
> --kevan
>
>


Re: svn commit: r530626 - in /incubator/openejb/trunk/openejb3: container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ container/openejb-core/src/main/java/org/apache/openejb/config/ container/openejb-core/src/main/java/org/apache/opene...

Posted by David Blevins <da...@visi.com>.
Ok, this is definitely fixed now and tested.  You won't need to  
update OpenEJB if you have yesterday's fix, but you will need to  
update your G tree to get my last two commits.

-David

On Apr 23, 2007, at 6:59 AM, Kevan Miller wrote:

>
> On Apr 23, 2007, at 9:05 AM, Rick McGuire wrote:
>
>> Unfortunately, I believe it was the 10PM fix that caused the TCK  
>> breakages.  The problems first appeared for me after I rebuilt  
>> saturday morning, and are still there this morning.
>
> The 10 PM fix that David is referring to is Geronimo RC 531336  
> which was committed at 10PM left-coast time last night (Sunday) or  
> 1 AM right-coast time. Unfortunately, RC 531336 doesn't fix the  
> problem. David did you verify the fix by testing?
>
> Rick,
> I think you'll find that if you revert 530626 in OpenEJB, the  
> problem goes away. You'd probably have to revert 531336 from  
> Geronimo, also.
>
> --kevan
>
>


Re: svn commit: r530626 - in /incubator/openejb/trunk/openejb3: container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ container/openejb-core/src/main/java/org/apache/openejb/config/ container/openejb-core/src/main/java/org/apache/opene...

Posted by Kevan Miller <ke...@gmail.com>.
On Apr 23, 2007, at 9:05 AM, Rick McGuire wrote:

> Unfortunately, I believe it was the 10PM fix that caused the TCK  
> breakages.  The problems first appeared for me after I rebuilt  
> saturday morning, and are still there this morning.

The 10 PM fix that David is referring to is Geronimo RC 531336 which  
was committed at 10PM left-coast time last night (Sunday) or 1 AM  
right-coast time. Unfortunately, RC 531336 doesn't fix the problem.  
David did you verify the fix by testing?

Rick,
I think you'll find that if you revert 530626 in OpenEJB, the problem  
goes away. You'd probably have to revert 531336 from Geronimo, also.

--kevan



Re: svn commit: r530626 - in /incubator/openejb/trunk/openejb3: container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ container/openejb-core/src/main/java/org/apache/openejb/config/ container/openejb-core/src/main/java/org/apache/opene...

Posted by Rick McGuire <ri...@gmail.com>.
Unfortunately, I believe it was the 10PM fix that caused the TCK 
breakages.  The problems first appeared for me after I rebuilt saturday 
morning, and are still there this morning.

Rick


David Blevins wrote:
>
> On Apr 23, 2007, at 1:09 AM, Kevan Miller wrote:
>
>> David Blevins,
>> This change has caused some breakage in Geronimo TCK testing.
>>
>> Would be great if you could have a look...
>
> You may have missed the commit around 10pm fixing this.  Update 
> OpenEJB and Geronimo it should be fixed.
>
> -David
>
>
>> --kevan
>>
>> On Apr 19, 2007, at 11:42 PM, dblevins@apache.org wrote:
>>
>>> Author: dblevins
>>> Date: Thu Apr 19 20:42:11 2007
>>> New Revision: 530626
>>>
>>> URL: http://svn.apache.org/viewvc?view=rev&rev=530626
>>> Log:
>>> Support for one proxy per business interface.  more to come.
>>>
>>> Modified:
>>>     
>>> incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbLocalReferenceInfo.java 
>>>
>>>     
>>> incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.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/config/JndiEncInfoBuilder.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/EjbHomeProxyHandler.java 
>>>
>>>     
>>> incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java 
>>>
>>>     
>>> incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainerManagedTxPolicy.java 
>>>
>>>     
>>> incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java 
>>>
>>>
>>> Modified: 
>>> incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbLocalReferenceInfo.java 
>>>
>>> URL: 
>>> http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbLocalReferenceInfo.java?view=diff&rev=530626&r1=530625&r2=530626 
>>>
>>> ============================================================================== 
>>>
>>> --- 
>>> incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbLocalReferenceInfo.java 
>>> (original)
>>> +++ 
>>> incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbLocalReferenceInfo.java 
>>> Thu Apr 19 20:42:11 2007
>>> @@ -20,6 +20,7 @@
>>>
>>>      public String referenceName;
>>>      public String homeType;
>>> +    public String localType;
>>>      public String ejbDeploymentId;
>>>
>>>      public ReferenceLocationInfo location;
>>>
>>> Modified: 
>>> incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java 
>>>
>>> URL: 
>>> http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java?view=diff&rev=530626&r1=530625&r2=530626 
>>>
>>> ============================================================================== 
>>>
>>> --- 
>>> incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java 
>>> (original)
>>> +++ 
>>> incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java 
>>> Thu Apr 19 20:42:11 2007
>>> @@ -143,7 +143,10 @@
>>>              if (homeInterface != null) {
>>>                  String name = strategy.getName(deployment, 
>>> homeInterface, JndiNameStrategy.Interface.REMOTE_HOME);
>>>                  bindings.add(name);
>>> -                context.bind("openejb/ejb/" + name, new 
>>> ObjectReference(deployment.getEJBHome()));
>>> +                ObjectReference ref = new 
>>> ObjectReference(deployment.getEJBHome());
>>> +                context.bind("openejb/ejb/" + name, ref);
>>> +                name = deployment.getDeploymentID() + "/" + 
>>> deployment.getRemoteInterface().getName();
>>> +                context.bind("openejb/Deployment/" + name, ref);
>>>              }
>>>          } catch (NamingException e) {
>>>              throw new RuntimeException("Unable to bind home 
>>> interface for deployment " + id, e);
>>> @@ -154,7 +157,9 @@
>>>              if (localHomeInterface != null) {
>>>                  String name = strategy.getName(deployment, 
>>> localHomeInterface, JndiNameStrategy.Interface.LOCAL_HOME);
>>>                  bindings.add(name);
>>> -                context.bind("openejb/ejb/" + name, new 
>>> ObjectReference(deployment.getEJBLocalHome()));
>>> +                ObjectReference ref = new 
>>> ObjectReference(deployment.getEJBLocalHome());
>>> +                context.bind("openejb/ejb/" + name, ref);
>>> +                context.bind("openejb/Deployment/" + 
>>> deployment.getDeploymentID() + "/" + 
>>> deployment.getLocalInterface().getName(), ref);
>>>              }
>>>          } catch (NamingException e) {
>>>              throw new RuntimeException("Unable to bind local 
>>> interface for deployment " + id, e);
>>> @@ -167,6 +172,11 @@
>>>                  DeploymentInfo.BusinessLocalHome businessLocalHome 
>>> = deployment.getBusinessLocalHome();
>>>                  bindings.add(name);
>>>                  context.bind("openejb/ejb/" + name, new 
>>> BusinessLocalReference(businessLocalHome));
>>> +
>>> +                for (Class interfce : 
>>> deployment.getBusinessLocalInterfaces()) {
>>> +                    DeploymentInfo.BusinessLocalHome home = 
>>> deployment.getBusinessLocalHome(asList(interfce));
>>> +                    context.bind("openejb/Deployment/" + 
>>> deployment.getDeploymentID() + "/" + interfce.getName(), new 
>>> BusinessLocalReference(home));
>>> +                }
>>>              }
>>>          } catch (NamingException e) {
>>>              throw new RuntimeException("Unable to bind business 
>>> local interface for deployment " + id, e);
>>> @@ -178,7 +188,13 @@
>>>                  String name = strategy.getName(deployment, 
>>> businessRemoteInterface, JndiNameStrategy.Interface.BUSINESS_REMOTE);
>>>                  DeploymentInfo.BusinessRemoteHome 
>>> businessRemoteHome = deployment.getBusinessRemoteHome();
>>>                  bindings.add(name);
>>> -                context.bind("openejb/ejb/" + name, new 
>>> BusinessRemoteReference(businessRemoteHome));
>>> +                BusinessRemoteReference ref = new 
>>> BusinessRemoteReference(businessRemoteHome);
>>> +                context.bind("openejb/ejb/" + name, ref);
>>> +
>>> +                for (Class interfce : 
>>> deployment.getBusinessRemoteInterfaces()) {
>>> +                    DeploymentInfo.BusinessRemoteHome home = 
>>> deployment.getBusinessRemoteHome(asList(interfce));
>>> +                    context.bind("openejb/Deployment/" + 
>>> deployment.getDeploymentID() + "/" + interfce.getName(), new 
>>> BusinessRemoteReference(home));
>>> +                }
>>>              }
>>>          } catch (NamingException e) {
>>>              throw new RuntimeException("Unable to bind business 
>>> remote deployment in jndi.", e);
>>> @@ -204,6 +220,12 @@
>>>          } catch (NamingException e) {
>>>              throw new RuntimeException("Unable to bind mdb 
>>> destination in jndi.", e);
>>>          }
>>> +    }
>>> +
>>> +    private static List<Class> asList(Class interfce) {
>>> +        List<Class> list = new ArrayList<Class>();
>>> +        list.add(interfce);
>>> +        return list;
>>>      }
>>>
>>>      protected static final class Bindings {
>>>
>>> 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=530626&r1=530625&r2=530626 
>>>
>>> ============================================================================== 
>>>
>>> --- 
>>> 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 
>>> Thu Apr 19 20:42:11 2007
>>> @@ -183,22 +183,11 @@
>>>              if (referenceInfo.location != null) {
>>>                  reference = 
>>> buildReferenceLocation(referenceInfo.location);
>>>              } else {
>>> -                // TODO: Before JndiNameStrategy can be used, this 
>>> assumption has to be updated
>>> -                if (referenceInfo.homeType == null){
>>> -                    String jndiName = "java:openejb/ejb/" + 
>>> referenceInfo.ejbDeploymentId + "BusinessRemote";
>>> -                    if (useCrossClassLoaderRef && 
>>> referenceInfo.externalReference) {
>>> -                        reference = new 
>>> CrossClassLoaderJndiReference(jndiName);
>>> -                    } else {
>>> -                        reference = new 
>>> IntraVmJndiReference(jndiName);
>>> -                    }
>>> +                String jndiName = "java:openejb/Deployment/" + 
>>> referenceInfo.ejbDeploymentId + "/" + referenceInfo.remoteType;
>>> +                if (useCrossClassLoaderRef && 
>>> referenceInfo.externalReference) {
>>> +                    reference = new 
>>> CrossClassLoaderJndiReference(jndiName);
>>>                  } else {
>>> -                    // TODO: Before JndiNameStrategy can be used, 
>>> this assumption has to be updated
>>> -                    String jndiName = "java:openejb/ejb/" + 
>>> referenceInfo.ejbDeploymentId;
>>> -                    if (useCrossClassLoaderRef && 
>>> referenceInfo.externalReference) {
>>> -                        reference = new 
>>> CrossClassLoaderJndiReference(jndiName);
>>> -                    } else {
>>> -                        reference = new 
>>> IntraVmJndiReference(jndiName);
>>> -                    }
>>> +                    reference = new IntraVmJndiReference(jndiName);
>>>                  }
>>>              }
>>>              bindings.put(normalize(referenceInfo.referenceName), 
>>> reference);
>>> @@ -210,12 +199,8 @@
>>>
>>>              if (referenceInfo.location != null) {
>>>                  reference = 
>>> buildReferenceLocation(referenceInfo.location);
>>> -            } else if (referenceInfo.homeType == null){
>>> -                // TODO: Before JndiNameStrategy can be used, this 
>>> assumption has to be updated
>>> -                String jndiName = "java:openejb/ejb/" + 
>>> referenceInfo.ejbDeploymentId + "BusinessLocal";
>>> -                reference = new IntraVmJndiReference(jndiName);
>>>              } else {
>>> -                String jndiName = "java:openejb/ejb/" + 
>>> referenceInfo.ejbDeploymentId + "Local";
>>> +                String jndiName = "java:openejb/Deployment/" + 
>>> referenceInfo.ejbDeploymentId + "/" + referenceInfo.localType;
>>>                  reference = new IntraVmJndiReference(jndiName);
>>>              }
>>>              bindings.put(normalize(referenceInfo.referenceName), 
>>> reference);
>>>
>>> Modified: 
>>> incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java 
>>>
>>> URL: 
>>> http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java?view=diff&rev=530626&r1=530625&r2=530626 
>>>
>>> ============================================================================== 
>>>
>>> --- 
>>> incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java 
>>> (original)
>>> +++ 
>>> incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java 
>>> Thu Apr 19 20:42:11 2007
>>> @@ -361,6 +361,7 @@
>>>              EjbLocalReferenceInfo info = new EjbLocalReferenceInfo();
>>>
>>>              info.homeType = ejb.getLocalHome();
>>> +            info.localType = ejb.getLocal();
>>>              info.referenceName = ejb.getEjbRefName();
>>>
>>>              // assign location to a global jndi name
>>>
>>> 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=530626&r1=530625&r2=530626 
>>>
>>> ============================================================================== 
>>>
>>> --- 
>>> 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 
>>> Thu Apr 19 20:42:11 2007
>>> @@ -506,7 +506,7 @@
>>>              }
>>>          }
>>>
>>> -        return (BusinessLocalHome) 
>>> EjbHomeProxyHandler.createHomeProxy(this, 
>>> InterfaceType.BUSINESS_LOCAL_HOME);
>>> +        return (BusinessLocalHome) 
>>> EjbHomeProxyHandler.createHomeProxy(this, 
>>> InterfaceType.BUSINESS_LOCAL_HOME, interfaces);
>>>      }
>>>
>>>      public BusinessRemoteHome getBusinessRemoteHome() {
>>> @@ -526,7 +526,7 @@
>>>              }
>>>          }
>>>
>>> -        return (BusinessRemoteHome) 
>>> EjbHomeProxyHandler.createHomeProxy(this, 
>>> InterfaceType.BUSINESS_REMOTE_HOME);
>>> +        return (BusinessRemoteHome) 
>>> EjbHomeProxyHandler.createHomeProxy(this, 
>>> InterfaceType.BUSINESS_REMOTE_HOME, interfaces);
>>>      }
>>>
>>>      public String getMessageDestination() {
>>>
>>> Modified: 
>>> incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java 
>>>
>>> URL: 
>>> http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java?view=diff&rev=530626&r1=530625&r2=530626 
>>>
>>> ============================================================================== 
>>>
>>> --- 
>>> incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java 
>>> (original)
>>> +++ 
>>> incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java 
>>> Thu Apr 19 20:42:11 2007
>>> @@ -97,7 +97,7 @@
>>>          return createHomeProxy(deploymentInfo, interfaceType, null);
>>>      }
>>>
>>> -    public static Object createHomeProxy(DeploymentInfo 
>>> deploymentInfo, InterfaceType interfaceType, ArrayList<Class> 
>>> objectInterfaces) {
>>> +    public static Object createHomeProxy(DeploymentInfo 
>>> deploymentInfo, InterfaceType interfaceType, List<Class> 
>>> objectInterfaces) {
>>>          if (!interfaceType.isHome()) throw new 
>>> IllegalArgumentException("InterfaceType is not a Home type: " + 
>>> interfaceType);
>>>
>>>          try {
>>> @@ -105,7 +105,8 @@
>>>
>>>              List<Class> proxyInterfaces = new ArrayList<Class>(2);
>>>
>>> -            
>>> proxyInterfaces.add(deploymentInfo.getInterface(interfaceType));
>>> +            Class homeInterface = 
>>> deploymentInfo.getInterface(interfaceType);
>>> +            proxyInterfaces.add(homeInterface);
>>>              proxyInterfaces.add(IntraVmProxy.class);
>>>
>>>              return 
>>> ProxyManager.newProxyInstance(proxyInterfaces.toArray(new 
>>> Class[]{}), handler);
>>>
>>> Modified: 
>>> incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java 
>>>
>>> URL: 
>>> http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java?view=diff&rev=530626&r1=530625&r2=530626 
>>>
>>> ============================================================================== 
>>>
>>> --- 
>>> incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java 
>>> (original)
>>> +++ 
>>> incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java 
>>> Thu Apr 19 20:42:11 2007
>>> @@ -39,6 +39,7 @@
>>>  import org.apache.openejb.OpenEJBException;
>>>  import org.apache.openejb.ProxyInfo;
>>>  import org.apache.openejb.RpcContainer;
>>> +import org.apache.openejb.InvalidateReferenceException;
>>>  import org.apache.openejb.core.CoreDeploymentInfo;
>>>  import org.apache.openejb.core.Operation;
>>>  import org.apache.openejb.core.ThreadContext;
>>> @@ -315,6 +316,8 @@
>>>                  InterceptorStack interceptorStack = new 
>>> InterceptorStack(instance.bean, runMethod, Operation.REMOVE, 
>>> interceptors, instance.interceptors);
>>>                  _invoke(callMethod, interceptorStack, args, 
>>> instance, callContext);
>>>
>>> +            } catch(InvalidateReferenceException e){
>>> +                throw e;
>>>              } catch(ApplicationException e){
>>>                  retain = deploymentInfo.retainIfExeption(runMethod);
>>>                  throw e;
>>>
>>> Modified: 
>>> incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainerManagedTxPolicy.java 
>>>
>>> URL: 
>>> http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainerManagedTxPolicy.java?view=diff&rev=530626&r1=530625&r2=530626 
>>>
>>> ============================================================================== 
>>>
>>> --- 
>>> incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainerManagedTxPolicy.java 
>>> (original)
>>> +++ 
>>> incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainerManagedTxPolicy.java 
>>> Thu Apr 19 20:42:11 2007
>>> @@ -54,7 +54,10 @@
>>>      public void handleSystemException(Throwable sysException, 
>>> Object instance, TransactionContext context) throws 
>>> ApplicationException, SystemException {
>>>          try {
>>>              policy.handleSystemException(sysException, instance, 
>>> context);
>>> +        } catch (InvalidateReferenceException e) {
>>> +            throw e;
>>>          } catch (ApplicationException e) {
>>> +            // DMB: Not sure we want this here
>>>              throw new InvalidateReferenceException(e.getRootCause());
>>>          }
>>>      }
>>>
>>> Modified: 
>>> incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java 
>>>
>>> URL: 
>>> http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java?view=diff&rev=530626&r1=530625&r2=530626 
>>>
>>> ============================================================================== 
>>>
>>> --- 
>>> incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java 
>>> (original)
>>> +++ 
>>> incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java 
>>> Thu Apr 19 20:42:11 2007
>>> @@ -162,7 +162,7 @@
>>>                          deployment.getPrimaryKeyClass(),
>>>                          deployment.getComponentType().toString(),
>>>                          deploymentID,
>>> -                        -1, deployment.getBusinessRemoteInterfaces());
>>> +                        -1, proxyInfo.getInterfaces());
>>>                  Object[] data = {metaData, proxyInfo.getPrimaryKey()};
>>>                  res.setResult(data);
>>>                  break;
>>> @@ -172,11 +172,11 @@
>>>                  if (property.equalsIgnoreCase("remotable")) {
>>>                      
>>> res.setResponseCode(ResponseCodes.JNDI_BUSINESS_OBJECT);
>>>                      EJBMetaDataImpl metaData = new 
>>> EJBMetaDataImpl(null,
>>> -                            deployment.getBusinessLocalInterface(),
>>> +                            null,
>>>                              deployment.getPrimaryKeyClass(),
>>>                              deployment.getComponentType().toString(),
>>>                              deploymentID,
>>> -                            -1, null);
>>> +                            -1, proxyInfo.getInterfaces());
>>>                      Object[] data = {metaData, 
>>> proxyInfo.getPrimaryKey()};
>>>                      res.setResult(data);
>>>                  } else {
>>>
>>>
>>
>
>


Re: svn commit: r530626 - in /incubator/openejb/trunk/openejb3: container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ container/openejb-core/src/main/java/org/apache/openejb/config/ container/openejb-core/src/main/java/org/apache/opene...

Posted by David Blevins <da...@visi.com>.
On Apr 23, 2007, at 1:09 AM, Kevan Miller wrote:

> David Blevins,
> This change has caused some breakage in Geronimo TCK testing.
>
> Would be great if you could have a look...

You may have missed the commit around 10pm fixing this.  Update  
OpenEJB and Geronimo it should be fixed.

-David


> --kevan
>
> On Apr 19, 2007, at 11:42 PM, dblevins@apache.org wrote:
>
>> Author: dblevins
>> Date: Thu Apr 19 20:42:11 2007
>> New Revision: 530626
>>
>> URL: http://svn.apache.org/viewvc?view=rev&rev=530626
>> Log:
>> Support for one proxy per business interface.  more to come.
>>
>> Modified:
>>     incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
>> main/java/org/apache/openejb/assembler/classic/ 
>> EjbLocalReferenceInfo.java
>>     incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
>> main/java/org/apache/openejb/assembler/classic/JndiBuilder.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/config/JndiEncInfoBuilder.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/EjbHomeProxyHandler.java
>>     incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
>> main/java/org/apache/openejb/core/stateful/StatefulContainer.java
>>     incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
>> main/java/org/apache/openejb/core/stateful/ 
>> StatefulContainerManagedTxPolicy.java
>>     incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/ 
>> java/org/apache/openejb/server/ejbd/JndiRequestHandler.java
>>
>> Modified: incubator/openejb/trunk/openejb3/container/openejb-core/ 
>> src/main/java/org/apache/openejb/assembler/classic/ 
>> EjbLocalReferenceInfo.java
>> URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/ 
>> container/openejb-core/src/main/java/org/apache/openejb/assembler/ 
>> classic/EjbLocalReferenceInfo.java? 
>> view=diff&rev=530626&r1=530625&r2=530626
>> ===================================================================== 
>> =========
>> --- incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
>> main/java/org/apache/openejb/assembler/classic/ 
>> EjbLocalReferenceInfo.java (original)
>> +++ incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
>> main/java/org/apache/openejb/assembler/classic/ 
>> EjbLocalReferenceInfo.java Thu Apr 19 20:42:11 2007
>> @@ -20,6 +20,7 @@
>>
>>      public String referenceName;
>>      public String homeType;
>> +    public String localType;
>>      public String ejbDeploymentId;
>>
>>      public ReferenceLocationInfo location;
>>
>> Modified: incubator/openejb/trunk/openejb3/container/openejb-core/ 
>> src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java
>> URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/ 
>> container/openejb-core/src/main/java/org/apache/openejb/assembler/ 
>> classic/JndiBuilder.java?view=diff&rev=530626&r1=530625&r2=530626
>> ===================================================================== 
>> =========
>> --- incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
>> main/java/org/apache/openejb/assembler/classic/JndiBuilder.java  
>> (original)
>> +++ incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
>> main/java/org/apache/openejb/assembler/classic/JndiBuilder.java  
>> Thu Apr 19 20:42:11 2007
>> @@ -143,7 +143,10 @@
>>              if (homeInterface != null) {
>>                  String name = strategy.getName(deployment,  
>> homeInterface, JndiNameStrategy.Interface.REMOTE_HOME);
>>                  bindings.add(name);
>> -                context.bind("openejb/ejb/" + name, new  
>> ObjectReference(deployment.getEJBHome()));
>> +                ObjectReference ref = new ObjectReference 
>> (deployment.getEJBHome());
>> +                context.bind("openejb/ejb/" + name, ref);
>> +                name = deployment.getDeploymentID() + "/" +  
>> deployment.getRemoteInterface().getName();
>> +                context.bind("openejb/Deployment/" + name, ref);
>>              }
>>          } catch (NamingException e) {
>>              throw new RuntimeException("Unable to bind home  
>> interface for deployment " + id, e);
>> @@ -154,7 +157,9 @@
>>              if (localHomeInterface != null) {
>>                  String name = strategy.getName(deployment,  
>> localHomeInterface, JndiNameStrategy.Interface.LOCAL_HOME);
>>                  bindings.add(name);
>> -                context.bind("openejb/ejb/" + name, new  
>> ObjectReference(deployment.getEJBLocalHome()));
>> +                ObjectReference ref = new ObjectReference 
>> (deployment.getEJBLocalHome());
>> +                context.bind("openejb/ejb/" + name, ref);
>> +                context.bind("openejb/Deployment/" +  
>> deployment.getDeploymentID() + "/" + deployment.getLocalInterface 
>> ().getName(), ref);
>>              }
>>          } catch (NamingException e) {
>>              throw new RuntimeException("Unable to bind local  
>> interface for deployment " + id, e);
>> @@ -167,6 +172,11 @@
>>                  DeploymentInfo.BusinessLocalHome  
>> businessLocalHome = deployment.getBusinessLocalHome();
>>                  bindings.add(name);
>>                  context.bind("openejb/ejb/" + name, new  
>> BusinessLocalReference(businessLocalHome));
>> +
>> +                for (Class interfce :  
>> deployment.getBusinessLocalInterfaces()) {
>> +                    DeploymentInfo.BusinessLocalHome home =  
>> deployment.getBusinessLocalHome(asList(interfce));
>> +                    context.bind("openejb/Deployment/" +  
>> deployment.getDeploymentID() + "/" + interfce.getName(), new  
>> BusinessLocalReference(home));
>> +                }
>>              }
>>          } catch (NamingException e) {
>>              throw new RuntimeException("Unable to bind business  
>> local interface for deployment " + id, e);
>> @@ -178,7 +188,13 @@
>>                  String name = strategy.getName(deployment,  
>> businessRemoteInterface, JndiNameStrategy.Interface.BUSINESS_REMOTE);
>>                  DeploymentInfo.BusinessRemoteHome  
>> businessRemoteHome = deployment.getBusinessRemoteHome();
>>                  bindings.add(name);
>> -                context.bind("openejb/ejb/" + name, new  
>> BusinessRemoteReference(businessRemoteHome));
>> +                BusinessRemoteReference ref = new  
>> BusinessRemoteReference(businessRemoteHome);
>> +                context.bind("openejb/ejb/" + name, ref);
>> +
>> +                for (Class interfce :  
>> deployment.getBusinessRemoteInterfaces()) {
>> +                    DeploymentInfo.BusinessRemoteHome home =  
>> deployment.getBusinessRemoteHome(asList(interfce));
>> +                    context.bind("openejb/Deployment/" +  
>> deployment.getDeploymentID() + "/" + interfce.getName(), new  
>> BusinessRemoteReference(home));
>> +                }
>>              }
>>          } catch (NamingException e) {
>>              throw new RuntimeException("Unable to bind business  
>> remote deployment in jndi.", e);
>> @@ -204,6 +220,12 @@
>>          } catch (NamingException e) {
>>              throw new RuntimeException("Unable to bind mdb  
>> destination in jndi.", e);
>>          }
>> +    }
>> +
>> +    private static List<Class> asList(Class interfce) {
>> +        List<Class> list = new ArrayList<Class>();
>> +        list.add(interfce);
>> +        return list;
>>      }
>>
>>      protected static final class Bindings {
>>
>> 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=530626&r1=530625&r2=530626
>> ===================================================================== 
>> =========
>> --- 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  
>> Thu Apr 19 20:42:11 2007
>> @@ -183,22 +183,11 @@
>>              if (referenceInfo.location != null) {
>>                  reference = buildReferenceLocation 
>> (referenceInfo.location);
>>              } else {
>> -                // TODO: Before JndiNameStrategy can be used,  
>> this assumption has to be updated
>> -                if (referenceInfo.homeType == null){
>> -                    String jndiName = "java:openejb/ejb/" +  
>> referenceInfo.ejbDeploymentId + "BusinessRemote";
>> -                    if (useCrossClassLoaderRef &&  
>> referenceInfo.externalReference) {
>> -                        reference = new  
>> CrossClassLoaderJndiReference(jndiName);
>> -                    } else {
>> -                        reference = new IntraVmJndiReference 
>> (jndiName);
>> -                    }
>> +                String jndiName = "java:openejb/Deployment/" +  
>> referenceInfo.ejbDeploymentId + "/" + referenceInfo.remoteType;
>> +                if (useCrossClassLoaderRef &&  
>> referenceInfo.externalReference) {
>> +                    reference = new CrossClassLoaderJndiReference 
>> (jndiName);
>>                  } else {
>> -                    // TODO: Before JndiNameStrategy can be used,  
>> this assumption has to be updated
>> -                    String jndiName = "java:openejb/ejb/" +  
>> referenceInfo.ejbDeploymentId;
>> -                    if (useCrossClassLoaderRef &&  
>> referenceInfo.externalReference) {
>> -                        reference = new  
>> CrossClassLoaderJndiReference(jndiName);
>> -                    } else {
>> -                        reference = new IntraVmJndiReference 
>> (jndiName);
>> -                    }
>> +                    reference = new IntraVmJndiReference(jndiName);
>>                  }
>>              }
>>              bindings.put(normalize(referenceInfo.referenceName),  
>> reference);
>> @@ -210,12 +199,8 @@
>>
>>              if (referenceInfo.location != null) {
>>                  reference = buildReferenceLocation 
>> (referenceInfo.location);
>> -            } else if (referenceInfo.homeType == null){
>> -                // TODO: Before JndiNameStrategy can be used,  
>> this assumption has to be updated
>> -                String jndiName = "java:openejb/ejb/" +  
>> referenceInfo.ejbDeploymentId + "BusinessLocal";
>> -                reference = new IntraVmJndiReference(jndiName);
>>              } else {
>> -                String jndiName = "java:openejb/ejb/" +  
>> referenceInfo.ejbDeploymentId + "Local";
>> +                String jndiName = "java:openejb/Deployment/" +  
>> referenceInfo.ejbDeploymentId + "/" + referenceInfo.localType;
>>                  reference = new IntraVmJndiReference(jndiName);
>>              }
>>              bindings.put(normalize(referenceInfo.referenceName),  
>> reference);
>>
>> Modified: incubator/openejb/trunk/openejb3/container/openejb-core/ 
>> src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java
>> URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/ 
>> container/openejb-core/src/main/java/org/apache/openejb/config/ 
>> JndiEncInfoBuilder.java?view=diff&rev=530626&r1=530625&r2=530626
>> ===================================================================== 
>> =========
>> --- incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
>> main/java/org/apache/openejb/config/JndiEncInfoBuilder.java  
>> (original)
>> +++ incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
>> main/java/org/apache/openejb/config/JndiEncInfoBuilder.java Thu  
>> Apr 19 20:42:11 2007
>> @@ -361,6 +361,7 @@
>>              EjbLocalReferenceInfo info = new EjbLocalReferenceInfo 
>> ();
>>
>>              info.homeType = ejb.getLocalHome();
>> +            info.localType = ejb.getLocal();
>>              info.referenceName = ejb.getEjbRefName();
>>
>>              // assign location to a global jndi name
>>
>> 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=530626&r1=530625&r2=530626
>> ===================================================================== 
>> =========
>> --- 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 Thu Apr  
>> 19 20:42:11 2007
>> @@ -506,7 +506,7 @@
>>              }
>>          }
>>
>> -        return (BusinessLocalHome)  
>> EjbHomeProxyHandler.createHomeProxy(this,  
>> InterfaceType.BUSINESS_LOCAL_HOME);
>> +        return (BusinessLocalHome)  
>> EjbHomeProxyHandler.createHomeProxy(this,  
>> InterfaceType.BUSINESS_LOCAL_HOME, interfaces);
>>      }
>>
>>      public BusinessRemoteHome getBusinessRemoteHome() {
>> @@ -526,7 +526,7 @@
>>              }
>>          }
>>
>> -        return (BusinessRemoteHome)  
>> EjbHomeProxyHandler.createHomeProxy(this,  
>> InterfaceType.BUSINESS_REMOTE_HOME);
>> +        return (BusinessRemoteHome)  
>> EjbHomeProxyHandler.createHomeProxy(this,  
>> InterfaceType.BUSINESS_REMOTE_HOME, interfaces);
>>      }
>>
>>      public String getMessageDestination() {
>>
>> Modified: incubator/openejb/trunk/openejb3/container/openejb-core/ 
>> src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java
>> URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/ 
>> container/openejb-core/src/main/java/org/apache/openejb/core/ivm/ 
>> EjbHomeProxyHandler.java?view=diff&rev=530626&r1=530625&r2=530626
>> ===================================================================== 
>> =========
>> --- incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
>> main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java  
>> (original)
>> +++ incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
>> main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java Thu  
>> Apr 19 20:42:11 2007
>> @@ -97,7 +97,7 @@
>>          return createHomeProxy(deploymentInfo, interfaceType, null);
>>      }
>>
>> -    public static Object createHomeProxy(DeploymentInfo  
>> deploymentInfo, InterfaceType interfaceType, ArrayList<Class>  
>> objectInterfaces) {
>> +    public static Object createHomeProxy(DeploymentInfo  
>> deploymentInfo, InterfaceType interfaceType, List<Class>  
>> objectInterfaces) {
>>          if (!interfaceType.isHome()) throw new  
>> IllegalArgumentException("InterfaceType is not a Home type: " +  
>> interfaceType);
>>
>>          try {
>> @@ -105,7 +105,8 @@
>>
>>              List<Class> proxyInterfaces = new ArrayList<Class>(2);
>>
>> -            proxyInterfaces.add(deploymentInfo.getInterface 
>> (interfaceType));
>> +            Class homeInterface = deploymentInfo.getInterface 
>> (interfaceType);
>> +            proxyInterfaces.add(homeInterface);
>>              proxyInterfaces.add(IntraVmProxy.class);
>>
>>              return ProxyManager.newProxyInstance 
>> (proxyInterfaces.toArray(new Class[]{}), handler);
>>
>> Modified: incubator/openejb/trunk/openejb3/container/openejb-core/ 
>> src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java
>> URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/ 
>> container/openejb-core/src/main/java/org/apache/openejb/core/ 
>> stateful/StatefulContainer.java? 
>> view=diff&rev=530626&r1=530625&r2=530626
>> ===================================================================== 
>> =========
>> --- incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
>> main/java/org/apache/openejb/core/stateful/StatefulContainer.java  
>> (original)
>> +++ incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
>> main/java/org/apache/openejb/core/stateful/StatefulContainer.java  
>> Thu Apr 19 20:42:11 2007
>> @@ -39,6 +39,7 @@
>>  import org.apache.openejb.OpenEJBException;
>>  import org.apache.openejb.ProxyInfo;
>>  import org.apache.openejb.RpcContainer;
>> +import org.apache.openejb.InvalidateReferenceException;
>>  import org.apache.openejb.core.CoreDeploymentInfo;
>>  import org.apache.openejb.core.Operation;
>>  import org.apache.openejb.core.ThreadContext;
>> @@ -315,6 +316,8 @@
>>                  InterceptorStack interceptorStack = new  
>> InterceptorStack(instance.bean, runMethod, Operation.REMOVE,  
>> interceptors, instance.interceptors);
>>                  _invoke(callMethod, interceptorStack, args,  
>> instance, callContext);
>>
>> +            } catch(InvalidateReferenceException e){
>> +                throw e;
>>              } catch(ApplicationException e){
>>                  retain = deploymentInfo.retainIfExeption(runMethod);
>>                  throw e;
>>
>> Modified: incubator/openejb/trunk/openejb3/container/openejb-core/ 
>> src/main/java/org/apache/openejb/core/stateful/ 
>> StatefulContainerManagedTxPolicy.java
>> URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/ 
>> container/openejb-core/src/main/java/org/apache/openejb/core/ 
>> stateful/StatefulContainerManagedTxPolicy.java? 
>> view=diff&rev=530626&r1=530625&r2=530626
>> ===================================================================== 
>> =========
>> --- incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
>> main/java/org/apache/openejb/core/stateful/ 
>> StatefulContainerManagedTxPolicy.java (original)
>> +++ incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
>> main/java/org/apache/openejb/core/stateful/ 
>> StatefulContainerManagedTxPolicy.java Thu Apr 19 20:42:11 2007
>> @@ -54,7 +54,10 @@
>>      public void handleSystemException(Throwable sysException,  
>> Object instance, TransactionContext context) throws  
>> ApplicationException, SystemException {
>>          try {
>>              policy.handleSystemException(sysException, instance,  
>> context);
>> +        } catch (InvalidateReferenceException e) {
>> +            throw e;
>>          } catch (ApplicationException e) {
>> +            // DMB: Not sure we want this here
>>              throw new InvalidateReferenceException(e.getRootCause 
>> ());
>>          }
>>      }
>>
>> Modified: incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/ 
>> main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java
>> URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/ 
>> server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/ 
>> JndiRequestHandler.java?view=diff&rev=530626&r1=530625&r2=530626
>> ===================================================================== 
>> =========
>> --- incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/ 
>> java/org/apache/openejb/server/ejbd/JndiRequestHandler.java  
>> (original)
>> +++ incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/ 
>> java/org/apache/openejb/server/ejbd/JndiRequestHandler.java Thu  
>> Apr 19 20:42:11 2007
>> @@ -162,7 +162,7 @@
>>                          deployment.getPrimaryKeyClass(),
>>                          deployment.getComponentType().toString(),
>>                          deploymentID,
>> -                        -1, deployment.getBusinessRemoteInterfaces 
>> ());
>> +                        -1, proxyInfo.getInterfaces());
>>                  Object[] data = {metaData, proxyInfo.getPrimaryKey 
>> ()};
>>                  res.setResult(data);
>>                  break;
>> @@ -172,11 +172,11 @@
>>                  if (property.equalsIgnoreCase("remotable")) {
>>                      res.setResponseCode 
>> (ResponseCodes.JNDI_BUSINESS_OBJECT);
>>                      EJBMetaDataImpl metaData = new EJBMetaDataImpl 
>> (null,
>> -                            deployment.getBusinessLocalInterface(),
>> +                            null,
>>                              deployment.getPrimaryKeyClass(),
>>                              deployment.getComponentType().toString 
>> (),
>>                              deploymentID,
>> -                            -1, null);
>> +                            -1, proxyInfo.getInterfaces());
>>                      Object[] data = {metaData,  
>> proxyInfo.getPrimaryKey()};
>>                      res.setResult(data);
>>                  } else {
>>
>>
>


Re: svn commit: r530626 - in /incubator/openejb/trunk/openejb3: container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ container/openejb-core/src/main/java/org/apache/openejb/config/ container/openejb-core/src/main/java/org/apache/opene...

Posted by Kevan Miller <ke...@gmail.com>.
David Blevins,
This change has caused some breakage in Geronimo TCK testing.

Would be great if you could have a look...

--kevan

On Apr 19, 2007, at 11:42 PM, dblevins@apache.org wrote:

> Author: dblevins
> Date: Thu Apr 19 20:42:11 2007
> New Revision: 530626
>
> URL: http://svn.apache.org/viewvc?view=rev&rev=530626
> Log:
> Support for one proxy per business interface.  more to come.
>
> Modified:
>     incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
> main/java/org/apache/openejb/assembler/classic/ 
> EjbLocalReferenceInfo.java
>     incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
> main/java/org/apache/openejb/assembler/classic/JndiBuilder.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/config/JndiEncInfoBuilder.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/EjbHomeProxyHandler.java
>     incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
> main/java/org/apache/openejb/core/stateful/StatefulContainer.java
>     incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
> main/java/org/apache/openejb/core/stateful/ 
> StatefulContainerManagedTxPolicy.java
>     incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/ 
> java/org/apache/openejb/server/ejbd/JndiRequestHandler.java
>
> Modified: incubator/openejb/trunk/openejb3/container/openejb-core/ 
> src/main/java/org/apache/openejb/assembler/classic/ 
> EjbLocalReferenceInfo.java
> URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/ 
> container/openejb-core/src/main/java/org/apache/openejb/assembler/ 
> classic/EjbLocalReferenceInfo.java? 
> view=diff&rev=530626&r1=530625&r2=530626
> ====================================================================== 
> ========
> --- incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
> main/java/org/apache/openejb/assembler/classic/ 
> EjbLocalReferenceInfo.java (original)
> +++ incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
> main/java/org/apache/openejb/assembler/classic/ 
> EjbLocalReferenceInfo.java Thu Apr 19 20:42:11 2007
> @@ -20,6 +20,7 @@
>
>      public String referenceName;
>      public String homeType;
> +    public String localType;
>      public String ejbDeploymentId;
>
>      public ReferenceLocationInfo location;
>
> Modified: incubator/openejb/trunk/openejb3/container/openejb-core/ 
> src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java
> URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/ 
> container/openejb-core/src/main/java/org/apache/openejb/assembler/ 
> classic/JndiBuilder.java?view=diff&rev=530626&r1=530625&r2=530626
> ====================================================================== 
> ========
> --- incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
> main/java/org/apache/openejb/assembler/classic/JndiBuilder.java  
> (original)
> +++ incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
> main/java/org/apache/openejb/assembler/classic/JndiBuilder.java Thu  
> Apr 19 20:42:11 2007
> @@ -143,7 +143,10 @@
>              if (homeInterface != null) {
>                  String name = strategy.getName(deployment,  
> homeInterface, JndiNameStrategy.Interface.REMOTE_HOME);
>                  bindings.add(name);
> -                context.bind("openejb/ejb/" + name, new  
> ObjectReference(deployment.getEJBHome()));
> +                ObjectReference ref = new ObjectReference 
> (deployment.getEJBHome());
> +                context.bind("openejb/ejb/" + name, ref);
> +                name = deployment.getDeploymentID() + "/" +  
> deployment.getRemoteInterface().getName();
> +                context.bind("openejb/Deployment/" + name, ref);
>              }
>          } catch (NamingException e) {
>              throw new RuntimeException("Unable to bind home  
> interface for deployment " + id, e);
> @@ -154,7 +157,9 @@
>              if (localHomeInterface != null) {
>                  String name = strategy.getName(deployment,  
> localHomeInterface, JndiNameStrategy.Interface.LOCAL_HOME);
>                  bindings.add(name);
> -                context.bind("openejb/ejb/" + name, new  
> ObjectReference(deployment.getEJBLocalHome()));
> +                ObjectReference ref = new ObjectReference 
> (deployment.getEJBLocalHome());
> +                context.bind("openejb/ejb/" + name, ref);
> +                context.bind("openejb/Deployment/" +  
> deployment.getDeploymentID() + "/" + deployment.getLocalInterface 
> ().getName(), ref);
>              }
>          } catch (NamingException e) {
>              throw new RuntimeException("Unable to bind local  
> interface for deployment " + id, e);
> @@ -167,6 +172,11 @@
>                  DeploymentInfo.BusinessLocalHome businessLocalHome  
> = deployment.getBusinessLocalHome();
>                  bindings.add(name);
>                  context.bind("openejb/ejb/" + name, new  
> BusinessLocalReference(businessLocalHome));
> +
> +                for (Class interfce :  
> deployment.getBusinessLocalInterfaces()) {
> +                    DeploymentInfo.BusinessLocalHome home =  
> deployment.getBusinessLocalHome(asList(interfce));
> +                    context.bind("openejb/Deployment/" +  
> deployment.getDeploymentID() + "/" + interfce.getName(), new  
> BusinessLocalReference(home));
> +                }
>              }
>          } catch (NamingException e) {
>              throw new RuntimeException("Unable to bind business  
> local interface for deployment " + id, e);
> @@ -178,7 +188,13 @@
>                  String name = strategy.getName(deployment,  
> businessRemoteInterface, JndiNameStrategy.Interface.BUSINESS_REMOTE);
>                  DeploymentInfo.BusinessRemoteHome  
> businessRemoteHome = deployment.getBusinessRemoteHome();
>                  bindings.add(name);
> -                context.bind("openejb/ejb/" + name, new  
> BusinessRemoteReference(businessRemoteHome));
> +                BusinessRemoteReference ref = new  
> BusinessRemoteReference(businessRemoteHome);
> +                context.bind("openejb/ejb/" + name, ref);
> +
> +                for (Class interfce :  
> deployment.getBusinessRemoteInterfaces()) {
> +                    DeploymentInfo.BusinessRemoteHome home =  
> deployment.getBusinessRemoteHome(asList(interfce));
> +                    context.bind("openejb/Deployment/" +  
> deployment.getDeploymentID() + "/" + interfce.getName(), new  
> BusinessRemoteReference(home));
> +                }
>              }
>          } catch (NamingException e) {
>              throw new RuntimeException("Unable to bind business  
> remote deployment in jndi.", e);
> @@ -204,6 +220,12 @@
>          } catch (NamingException e) {
>              throw new RuntimeException("Unable to bind mdb  
> destination in jndi.", e);
>          }
> +    }
> +
> +    private static List<Class> asList(Class interfce) {
> +        List<Class> list = new ArrayList<Class>();
> +        list.add(interfce);
> +        return list;
>      }
>
>      protected static final class Bindings {
>
> 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=530626&r1=530625&r2=530626
> ====================================================================== 
> ========
> --- 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  
> Thu Apr 19 20:42:11 2007
> @@ -183,22 +183,11 @@
>              if (referenceInfo.location != null) {
>                  reference = buildReferenceLocation 
> (referenceInfo.location);
>              } else {
> -                // TODO: Before JndiNameStrategy can be used, this  
> assumption has to be updated
> -                if (referenceInfo.homeType == null){
> -                    String jndiName = "java:openejb/ejb/" +  
> referenceInfo.ejbDeploymentId + "BusinessRemote";
> -                    if (useCrossClassLoaderRef &&  
> referenceInfo.externalReference) {
> -                        reference = new  
> CrossClassLoaderJndiReference(jndiName);
> -                    } else {
> -                        reference = new IntraVmJndiReference 
> (jndiName);
> -                    }
> +                String jndiName = "java:openejb/Deployment/" +  
> referenceInfo.ejbDeploymentId + "/" + referenceInfo.remoteType;
> +                if (useCrossClassLoaderRef &&  
> referenceInfo.externalReference) {
> +                    reference = new CrossClassLoaderJndiReference 
> (jndiName);
>                  } else {
> -                    // TODO: Before JndiNameStrategy can be used,  
> this assumption has to be updated
> -                    String jndiName = "java:openejb/ejb/" +  
> referenceInfo.ejbDeploymentId;
> -                    if (useCrossClassLoaderRef &&  
> referenceInfo.externalReference) {
> -                        reference = new  
> CrossClassLoaderJndiReference(jndiName);
> -                    } else {
> -                        reference = new IntraVmJndiReference 
> (jndiName);
> -                    }
> +                    reference = new IntraVmJndiReference(jndiName);
>                  }
>              }
>              bindings.put(normalize(referenceInfo.referenceName),  
> reference);
> @@ -210,12 +199,8 @@
>
>              if (referenceInfo.location != null) {
>                  reference = buildReferenceLocation 
> (referenceInfo.location);
> -            } else if (referenceInfo.homeType == null){
> -                // TODO: Before JndiNameStrategy can be used, this  
> assumption has to be updated
> -                String jndiName = "java:openejb/ejb/" +  
> referenceInfo.ejbDeploymentId + "BusinessLocal";
> -                reference = new IntraVmJndiReference(jndiName);
>              } else {
> -                String jndiName = "java:openejb/ejb/" +  
> referenceInfo.ejbDeploymentId + "Local";
> +                String jndiName = "java:openejb/Deployment/" +  
> referenceInfo.ejbDeploymentId + "/" + referenceInfo.localType;
>                  reference = new IntraVmJndiReference(jndiName);
>              }
>              bindings.put(normalize(referenceInfo.referenceName),  
> reference);
>
> Modified: incubator/openejb/trunk/openejb3/container/openejb-core/ 
> src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java
> URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/ 
> container/openejb-core/src/main/java/org/apache/openejb/config/ 
> JndiEncInfoBuilder.java?view=diff&rev=530626&r1=530625&r2=530626
> ====================================================================== 
> ========
> --- incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
> main/java/org/apache/openejb/config/JndiEncInfoBuilder.java (original)
> +++ incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
> main/java/org/apache/openejb/config/JndiEncInfoBuilder.java Thu Apr  
> 19 20:42:11 2007
> @@ -361,6 +361,7 @@
>              EjbLocalReferenceInfo info = new EjbLocalReferenceInfo();
>
>              info.homeType = ejb.getLocalHome();
> +            info.localType = ejb.getLocal();
>              info.referenceName = ejb.getEjbRefName();
>
>              // assign location to a global jndi name
>
> 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=530626&r1=530625&r2=530626
> ====================================================================== 
> ========
> --- 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 Thu Apr  
> 19 20:42:11 2007
> @@ -506,7 +506,7 @@
>              }
>          }
>
> -        return (BusinessLocalHome)  
> EjbHomeProxyHandler.createHomeProxy(this,  
> InterfaceType.BUSINESS_LOCAL_HOME);
> +        return (BusinessLocalHome)  
> EjbHomeProxyHandler.createHomeProxy(this,  
> InterfaceType.BUSINESS_LOCAL_HOME, interfaces);
>      }
>
>      public BusinessRemoteHome getBusinessRemoteHome() {
> @@ -526,7 +526,7 @@
>              }
>          }
>
> -        return (BusinessRemoteHome)  
> EjbHomeProxyHandler.createHomeProxy(this,  
> InterfaceType.BUSINESS_REMOTE_HOME);
> +        return (BusinessRemoteHome)  
> EjbHomeProxyHandler.createHomeProxy(this,  
> InterfaceType.BUSINESS_REMOTE_HOME, interfaces);
>      }
>
>      public String getMessageDestination() {
>
> Modified: incubator/openejb/trunk/openejb3/container/openejb-core/ 
> src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java
> URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/ 
> container/openejb-core/src/main/java/org/apache/openejb/core/ivm/ 
> EjbHomeProxyHandler.java?view=diff&rev=530626&r1=530625&r2=530626
> ====================================================================== 
> ========
> --- incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
> main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java  
> (original)
> +++ incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
> main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java Thu  
> Apr 19 20:42:11 2007
> @@ -97,7 +97,7 @@
>          return createHomeProxy(deploymentInfo, interfaceType, null);
>      }
>
> -    public static Object createHomeProxy(DeploymentInfo  
> deploymentInfo, InterfaceType interfaceType, ArrayList<Class>  
> objectInterfaces) {
> +    public static Object createHomeProxy(DeploymentInfo  
> deploymentInfo, InterfaceType interfaceType, List<Class>  
> objectInterfaces) {
>          if (!interfaceType.isHome()) throw new  
> IllegalArgumentException("InterfaceType is not a Home type: " +  
> interfaceType);
>
>          try {
> @@ -105,7 +105,8 @@
>
>              List<Class> proxyInterfaces = new ArrayList<Class>(2);
>
> -            proxyInterfaces.add(deploymentInfo.getInterface 
> (interfaceType));
> +            Class homeInterface = deploymentInfo.getInterface 
> (interfaceType);
> +            proxyInterfaces.add(homeInterface);
>              proxyInterfaces.add(IntraVmProxy.class);
>
>              return ProxyManager.newProxyInstance 
> (proxyInterfaces.toArray(new Class[]{}), handler);
>
> Modified: incubator/openejb/trunk/openejb3/container/openejb-core/ 
> src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java
> URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/ 
> container/openejb-core/src/main/java/org/apache/openejb/core/ 
> stateful/StatefulContainer.java? 
> view=diff&rev=530626&r1=530625&r2=530626
> ====================================================================== 
> ========
> --- incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
> main/java/org/apache/openejb/core/stateful/StatefulContainer.java  
> (original)
> +++ incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
> main/java/org/apache/openejb/core/stateful/StatefulContainer.java  
> Thu Apr 19 20:42:11 2007
> @@ -39,6 +39,7 @@
>  import org.apache.openejb.OpenEJBException;
>  import org.apache.openejb.ProxyInfo;
>  import org.apache.openejb.RpcContainer;
> +import org.apache.openejb.InvalidateReferenceException;
>  import org.apache.openejb.core.CoreDeploymentInfo;
>  import org.apache.openejb.core.Operation;
>  import org.apache.openejb.core.ThreadContext;
> @@ -315,6 +316,8 @@
>                  InterceptorStack interceptorStack = new  
> InterceptorStack(instance.bean, runMethod, Operation.REMOVE,  
> interceptors, instance.interceptors);
>                  _invoke(callMethod, interceptorStack, args,  
> instance, callContext);
>
> +            } catch(InvalidateReferenceException e){
> +                throw e;
>              } catch(ApplicationException e){
>                  retain = deploymentInfo.retainIfExeption(runMethod);
>                  throw e;
>
> Modified: incubator/openejb/trunk/openejb3/container/openejb-core/ 
> src/main/java/org/apache/openejb/core/stateful/ 
> StatefulContainerManagedTxPolicy.java
> URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/ 
> container/openejb-core/src/main/java/org/apache/openejb/core/ 
> stateful/StatefulContainerManagedTxPolicy.java? 
> view=diff&rev=530626&r1=530625&r2=530626
> ====================================================================== 
> ========
> --- incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
> main/java/org/apache/openejb/core/stateful/ 
> StatefulContainerManagedTxPolicy.java (original)
> +++ incubator/openejb/trunk/openejb3/container/openejb-core/src/ 
> main/java/org/apache/openejb/core/stateful/ 
> StatefulContainerManagedTxPolicy.java Thu Apr 19 20:42:11 2007
> @@ -54,7 +54,10 @@
>      public void handleSystemException(Throwable sysException,  
> Object instance, TransactionContext context) throws  
> ApplicationException, SystemException {
>          try {
>              policy.handleSystemException(sysException, instance,  
> context);
> +        } catch (InvalidateReferenceException e) {
> +            throw e;
>          } catch (ApplicationException e) {
> +            // DMB: Not sure we want this here
>              throw new InvalidateReferenceException(e.getRootCause());
>          }
>      }
>
> Modified: incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/ 
> main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java
> URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/ 
> server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/ 
> JndiRequestHandler.java?view=diff&rev=530626&r1=530625&r2=530626
> ====================================================================== 
> ========
> --- incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/ 
> java/org/apache/openejb/server/ejbd/JndiRequestHandler.java (original)
> +++ incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/ 
> java/org/apache/openejb/server/ejbd/JndiRequestHandler.java Thu Apr  
> 19 20:42:11 2007
> @@ -162,7 +162,7 @@
>                          deployment.getPrimaryKeyClass(),
>                          deployment.getComponentType().toString(),
>                          deploymentID,
> -                        -1, deployment.getBusinessRemoteInterfaces 
> ());
> +                        -1, proxyInfo.getInterfaces());
>                  Object[] data = {metaData, proxyInfo.getPrimaryKey 
> ()};
>                  res.setResult(data);
>                  break;
> @@ -172,11 +172,11 @@
>                  if (property.equalsIgnoreCase("remotable")) {
>                      res.setResponseCode 
> (ResponseCodes.JNDI_BUSINESS_OBJECT);
>                      EJBMetaDataImpl metaData = new EJBMetaDataImpl 
> (null,
> -                            deployment.getBusinessLocalInterface(),
> +                            null,
>                              deployment.getPrimaryKeyClass(),
>                              deployment.getComponentType().toString(),
>                              deploymentID,
> -                            -1, null);
> +                            -1, proxyInfo.getInterfaces());
>                      Object[] data = {metaData,  
> proxyInfo.getPrimaryKey()};
>                      res.setResult(data);
>                  } else {
>
>