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