You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by da...@apache.org on 2007/03/30 03:16:02 UTC
svn commit: r523900 -
/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java
Author: dain
Date: Thu Mar 29 18:16:00 2007
New Revision: 523900
URL: http://svn.apache.org/viewvc?view=rev&rev=523900
Log:
exceptions are return values and must be coppied
Modified:
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java?view=diff&rev=523900&r1=523899&r2=523900
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java Thu Mar 29 18:16:00 2007
@@ -171,13 +171,26 @@
IntraVmCopyMonitor.postCopyOperation();
}
}
- Object returnObj = _invoke(proxy, method, args);
-
- IntraVmCopyMonitor.preCopyOperation();
+ Object returnObj = null;
try {
- returnObj = copyObj(returnObj);
- } finally {
- IntraVmCopyMonitor.postCopyOperation();
+ returnObj = _invoke(proxy, method, args);
+ } catch (Throwable throwable) {
+ // exceptions are return values and must be coppied
+ IntraVmCopyMonitor.preCopyOperation();
+ try {
+ throw (Throwable) copyObj(throwable);
+ } finally {
+ IntraVmCopyMonitor.postCopyOperation();
+ }
+ }
+
+ if (returnObj != null) {
+ IntraVmCopyMonitor.preCopyOperation();
+ try {
+ returnObj = copyObj(returnObj);
+ } finally {
+ IntraVmCopyMonitor.postCopyOperation();
+ }
}
return returnObj;
@@ -197,7 +210,18 @@
}
// invoke method
- Object returnObj = _invoke(proxy, method, args);
+ Object returnObj = null;
+ try {
+ returnObj = _invoke(proxy, method, args);
+ } catch (Throwable throwable) {
+ // exceptions are return values and must be coppied
+ IntraVmCopyMonitor.preCrossClassLoaderOperation();
+ try {
+ throw (Throwable) copyObj(throwable);
+ } finally {
+ IntraVmCopyMonitor.postCrossClassLoaderOperation();
+ }
+ }
if (returnObj != null) {
IntraVmCopyMonitor.preCrossClassLoaderOperation();