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/26 07:16:34 UTC

svn commit: r532612 - in /incubator/openejb/trunk/openejb3: container/openejb-core/src/main/java/org/apache/openejb/ container/openejb-core/src/main/java/org/apache/openejb/core/ container/openejb-core/src/main/java/org/apache/openejb/core/cmp/ contain...

Author: dblevins
Date: Wed Apr 25 22:16:33 2007
New Revision: 532612

URL: http://svn.apache.org/viewvc?view=rev&rev=532612
Log:
Add the interface to the container invoke signature as discussed

Modified:
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/RpcContainer.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/RpcContainerWrapper.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/cmp/CmpContainer.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityContainer.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityEjbHomeHandler.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityEjbObjectHandler.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.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/ivm/EjbObjectProxyHandler.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbContainer.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/StatefulEjbHomeHandler.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulEjbObjectHandler.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessContainer.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessEjbHomeHandler.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessEjbObjectHandler.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/JaxRpcWebServiceInvocationTest.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/JaxWsWebServiceInvocationTest.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessContainerTest.java
    incubator/openejb/trunk/openejb3/examples/moviefun/src/main/webapp/WEB-INF/web.xml
    incubator/openejb/trunk/openejb3/server/openejb-axis/src/main/java/org/apache/openejb/server/axis/EjbContainerProvider.java
    incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbRequestHandler.java

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/RpcContainer.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/RpcContainer.java?view=diff&rev=532612&r1=532611&r2=532612
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/RpcContainer.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/RpcContainer.java Wed Apr 25 22:16:33 2007
@@ -25,6 +25,6 @@
      */
     public Object invoke(Object deployID, Method callMethod, Object [] args, Object primKey, Object securityIdentity) throws OpenEJBException;
 
-    public Object invoke(Object deployID, Method callMethod, Object [] args, Object primKey) throws OpenEJBException;
+    public Object invoke(Object deployID, Class callInterface, Method callMethod, Object [] args, Object primKey) throws OpenEJBException;
 
 }

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/RpcContainerWrapper.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/RpcContainerWrapper.java?view=diff&rev=532612&r1=532611&r2=532612
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/RpcContainerWrapper.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/RpcContainerWrapper.java Wed Apr 25 22:16:33 2007
@@ -32,11 +32,11 @@
     }
 
     public Object invoke(Object deployID, Method callMethod, Object [] args, Object primKey, Object securityIdentity) throws OpenEJBException {
-        return container.invoke(deployID, callMethod, args, primKey);
+        return container.invoke(deployID, callMethod.getDeclaringClass(), callMethod, args, primKey);
     }
 
-    public Object invoke(Object deployID, Method callMethod, Object [] args, Object primKey) throws OpenEJBException {
-        return container.invoke(deployID, callMethod, args, primKey);
+    public Object invoke(Object deployID, Class callInterface, Method callMethod, Object [] args, Object primKey) throws OpenEJBException {
+        return container.invoke(deployID, callInterface, callMethod, args, primKey);
     }
 
     public ContainerType getContainerType() {

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/cmp/CmpContainer.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/cmp/CmpContainer.java?view=diff&rev=532612&r1=532611&r2=532612
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/cmp/CmpContainer.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/cmp/CmpContainer.java Wed Apr 25 22:16:33 2007
@@ -257,10 +257,10 @@
      * @deprecated use invoke signature without 'securityIdentity' argument.
      */
     public Object invoke(Object deployID, Method callMethod, Object[] args, Object primKey, Object securityIdentity) throws OpenEJBException {
-        return invoke(deployID, callMethod, args, primKey);
+        return invoke(deployID, callMethod.getDeclaringClass(), callMethod, args, primKey);
     }
-    
-    public Object invoke(Object deployID, Method callMethod, Object[] args, Object primKey) throws OpenEJBException {
+
+    public Object invoke(Object deployID, Class callInterface, Method callMethod, Object[] args, Object primKey) throws OpenEJBException {
         CoreDeploymentInfo deployInfo = (CoreDeploymentInfo) this.getDeploymentInfo(deployID);
         if (deployInfo == null) throw new OpenEJBException("Deployment does not exist in this container. Deployment(id='"+deployID+"'), Container(id='"+containerID+"')");
         ThreadContext callContext = new ThreadContext(deployInfo, primKey);

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityContainer.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityContainer.java?view=diff&rev=532612&r1=532611&r2=532612
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityContainer.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityContainer.java Wed Apr 25 22:16:33 2007
@@ -24,7 +24,6 @@
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Vector;
-import java.util.List;
 
 import javax.ejb.EJBAccessException;
 import javax.ejb.EJBHome;
@@ -137,10 +136,10 @@
      * @deprecated use invoke signature without 'securityIdentity' argument.
      */
     public Object invoke(Object deployID, Method callMethod, Object[] args, Object primKey, Object securityIdentity) throws OpenEJBException {
-        return invoke(deployID, callMethod, args, primKey);
+        return invoke(deployID, callMethod.getDeclaringClass(), callMethod, args, primKey);
     }
 
-    public Object invoke(Object deployID, Method callMethod, Object [] args, Object primKey) throws org.apache.openejb.OpenEJBException {
+    public Object invoke(Object deployID, Class callInterface, Method callMethod, Object [] args, Object primKey) throws org.apache.openejb.OpenEJBException {
         CoreDeploymentInfo deployInfo = (CoreDeploymentInfo) this.getDeploymentInfo(deployID);
         if (deployInfo == null) throw new OpenEJBException("Deployment does not exist in this container. Deployment(id='"+deployID+"'), Container(id='"+containerID+"')");
         

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityEjbHomeHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityEjbHomeHandler.java?view=diff&rev=532612&r1=532611&r2=532612
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityEjbHomeHandler.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityEjbHomeHandler.java Wed Apr 25 22:16:33 2007
@@ -51,10 +51,10 @@
 
     }
 
-    protected Object findX(Method method, Object[] args, Object proxy) throws Throwable {
+    protected Object findX(Class interfce, Method method, Object[] args, Object proxy) throws Throwable {
         Object retValue = null;
         try {
-            retValue = container.invoke(deploymentID, method, args, null);
+            retValue = container.invoke(deploymentID, interfce, method, args, null);
         } catch (OpenEJBException e) {
             e.printStackTrace();
             throw e;
@@ -93,9 +93,9 @@
 
     }
 
-    protected Object removeByPrimaryKey(Method method, Object[] args, Object proxy) throws Throwable {
+    protected Object removeByPrimaryKey(Class interfce, Method method, Object[] args, Object proxy) throws Throwable {
         Object primKey = args[0];
-        container.invoke(deploymentID, method, args, primKey);
+        container.invoke(deploymentID, interfce, method, args, primKey);
 
         /* 
         * This operation takes care of invalidating all the EjbObjectProxyHanders associated with 

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityEjbObjectHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityEjbObjectHandler.java?view=diff&rev=532612&r1=532611&r2=532612
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityEjbObjectHandler.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityEjbObjectHandler.java Wed Apr 25 22:16:33 2007
@@ -17,7 +17,6 @@
 package org.apache.openejb.core.entity;
 
 import java.lang.reflect.Method;
-import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.openejb.Container;
@@ -86,9 +85,9 @@
 
     }
 
-    protected Object remove(Method method, Object[] args, Object proxy) throws Throwable {
+    protected Object remove(Class interfce, Method method, Object[] args, Object proxy) throws Throwable {
         checkAuthorization(method);
-        Object value = container.invoke(deploymentID, method, args, primaryKey);
+        Object value = container.invoke(deploymentID, interfce, method, args, primaryKey);
         /* 
         * This operation takes care of invalidating all the EjbObjectProxyHanders associated with 
         * the same RegistryId. See this.createProxy().

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=532612&r1=532611&r2=532612
==============================================================================
--- 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 Wed Apr 25 22:16:33 2007
@@ -86,6 +86,7 @@
     protected final InterfaceType interfaceType;
     protected final List<Class> interfaces;
     private static final boolean REMOTE_COPY_ENABLED = parseRemoteCopySetting();
+    protected final Class mainInterface;
 
     public BaseEjbProxyHandler(DeploymentInfo deploymentInfo, Object pk, InterfaceType interfaceType, List<Class> interfaces) {
         this.container = (RpcContainer) deploymentInfo.getContainer();
@@ -106,6 +107,49 @@
         if (!interfaceType.isLocal()){
             doIntraVmCopy = REMOTE_COPY_ENABLED;
         }
+
+        if (interfaceType.isHome()){
+            mainInterface = deploymentInfo.getInterface(interfaceType);
+        } else {
+            // Then arbitrarily pick the first interface
+            mainInterface = interfaces.get(0);
+        }
+    }
+
+    /**
+     * This method should be called to determine the corresponding
+     * business interface class to name as the invoking interface.
+     * This method should NOT be called on non-business-interface
+     * methods the proxy has such as java.lang.Object or IntraVmProxy.
+     * @param method
+     * @return the business (or component) interface matching this method
+     */
+    protected Class<?> getInvokedInterface(Method method) {
+        // Home's only have one interface ever.  We don't
+        // need to verify that the method invoked is in
+        // it's interface.
+        if (interfaceType.isHome()) return mainInterface;
+
+        Class declaringClass = method.getDeclaringClass();
+
+        // If our "main" interface is or extends the method's declaring class
+        // then we're good.  We know the main interface has the method being
+        // invoked and it's safe to return it as the invoked interface.
+        if (declaringClass.isAssignableFrom(mainInterface)){
+            return mainInterface;
+        }
+
+        // If the method being invoked isn't in the "main" interface
+        // we need to find a suitable interface or throw an exception.
+        for (Class secondaryInterface : interfaces) {
+            if (declaringClass.isAssignableFrom(secondaryInterface)){
+                return secondaryInterface;
+            }
+        }
+
+        // We couldn't find an implementing interface.  Where did this
+        // method come from???  Freak occurence.  Throw an exception.
+        throw new IllegalStateException("Received method invocation and cannot determine corresponding business interface: method=" + method);
     }
 
     private static boolean parseRemoteCopySetting() {
@@ -165,9 +209,7 @@
                 throw new UnsupportedOperationException("Unkown method: " + method);
         }
 
-
-        String jndiEnc = System.getProperty(javax.naming.Context.URL_PKG_PREFIXES);
-//        System.setProperty(javax.naming.Context.URL_PKG_PREFIXES,"org.apache.openejb.core.ivm.naming");
+        Class interfce = getInvokedInterface(method);
 
         // Should we copy arguments as required by the specification?
         if (doIntraVmCopy && !doCrossClassLoaderCopy) {
@@ -182,7 +224,7 @@
             }
             Object returnObj = null;
             try {
-                returnObj = _invoke(proxy, method, args);
+                returnObj = _invoke(proxy, interfce, method, args);
             } catch (Throwable throwable) {
                 // exceptions are return values and must be coppied
                 IntraVmCopyMonitor.preCopyOperation();
@@ -213,6 +255,7 @@
                     args = copyArgs(args);
                 }
                 method = copyMethod(method);
+                interfce = (Class) copyObj(interfce);
             } finally {
                 Thread.currentThread().setContextClassLoader(oldClassLoader);
                 IntraVmCopyMonitor.postCrossClassLoaderOperation();
@@ -221,7 +264,7 @@
             // invoke method
             Object returnObj = null;
             try {
-                returnObj = _invoke(proxy, method, args);
+                returnObj = _invoke(proxy, interfce, method, args);
             } catch (Throwable throwable) {
                 // exceptions are return values and must be coppied
                 IntraVmCopyMonitor.preCrossClassLoaderOperation();
@@ -255,7 +298,7 @@
                      * property in the static block for this class.
                      */
 
-                return _invoke(proxy, method, args);
+                return _invoke(proxy, interfce, method, args);
             } catch (TransactionRequiredException e) {
                 if (interfaceType.isBusiness()) {
                     throw new EJBTransactionRequiredException(e.getMessage()).initCause(getCause(e));
@@ -307,6 +350,15 @@
         }
     }
 
+    /**
+     * Method instance on proxies that come from a classloader outside
+     * the bean's classloader need to be swapped out for the identical
+     * method in the bean's classloader.
+     *
+     * @param method
+     * @return return's the same method but loaded from the beans classloader
+     */
+
     private Method copyMethod(Method method) throws Exception {
         int parameterCount = method.getParameterTypes().length;
         Object[] types = new Object[1 + parameterCount];
@@ -361,7 +413,7 @@
         }
     }
 
-    protected abstract Object _invoke(Object proxy, Method method, Object[] args) throws Throwable;
+    protected abstract Object _invoke(Object proxy, Class interfce, Method method, Object[] args) throws Throwable;
 
     protected Object[] copyArgs(Object[] objects) throws IOException, ClassNotFoundException {
         /* 

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=532612&r1=532611&r2=532612
==============================================================================
--- 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 Wed Apr 25 22:16:33 2007
@@ -136,7 +136,7 @@
 
     protected abstract EjbObjectProxyHandler newEjbObjectHandler(DeploymentInfo deploymentInfo, Object pk, InterfaceType interfaceType, List<Class> interfaces);
 
-    protected Object _invoke(Object proxy, Method method, Object[] args) throws Throwable {
+    protected Object _invoke(Object proxy, Class interfce, Method method, Object[] args) throws Throwable {
 
         if (logger.isInfoEnabled()) {
             logger.info("invoking method " + method.getName() + " on " + deploymentID);
@@ -149,15 +149,15 @@
             MethodType operation = dispatchTable.get(methodName);
 
             if (operation == null) {
-                retValue = homeMethod(method, args, proxy);
+                retValue = homeMethod(interfce, method, args, proxy);
             } else {
                 switch (operation) {
                     /*-- CREATE ------------- <HomeInterface>.create(<x>) ---*/
                     case CREATE:
-                        retValue = create(method, args, proxy);
+                        retValue = create(interfce, method, args, proxy);
                         break;
                     case FIND:
-                        retValue = findX(method, args, proxy);
+                        retValue = findX(interfce, method, args, proxy);
                         break;
                         /*-- GET EJB METADATA ------ EJBHome.getEJBMetaData() ---*/
                     case META_DATA:
@@ -173,10 +173,10 @@
 
                         /*-- HANDLE ------- EJBHome.remove(Handle handle) ---*/
                         if (javax.ejb.Handle.class.isAssignableFrom(type)) {
-                            retValue = removeWithHandle(method, args, proxy);
+                            retValue = removeWithHandle(interfce, method, args, proxy);
                         } else {
                             /*-- PRIMARY KEY ----- EJBHome.remove(Object key) ---*/
-                            retValue = removeByPrimaryKey(method, args, proxy);
+                            retValue = removeByPrimaryKey(interfce, method, args, proxy);
                         }
                         break;
                     }
@@ -257,18 +257,18 @@
     /*  Home interface methods                         */
     /*-------------------------------------------------*/
 
-    protected Object homeMethod(Method method, Object[] args, Object proxy) throws Throwable {
+    protected Object homeMethod(Class interfce, Method method, Object[] args, Object proxy) throws Throwable {
         checkAuthorization(method);
-        return container.invoke(deploymentID, method, args, null);
+        return container.invoke(deploymentID, interfce, method, args, null);
     }
 
-    protected Object create(Method method, Object[] args, Object proxy) throws Throwable {
-        ProxyInfo proxyInfo = (ProxyInfo) container.invoke(deploymentID, method, args, null);
+    protected Object create(Class interfce, Method method, Object[] args, Object proxy) throws Throwable {
+        ProxyInfo proxyInfo = (ProxyInfo) container.invoke(deploymentID, interfce, method, args, null);
         assert proxyInfo != null : "Container returned a null ProxyInfo: ContainerID=" + container.getContainerID();
         return createProxy(proxyInfo.getPrimaryKey());
     }
 
-    protected abstract Object findX(Method method, Object[] args, Object proxy) throws Throwable;
+    protected abstract Object findX(Class interfce, Method method, Object[] args, Object proxy) throws Throwable;
 
     /*-------------------------------------------------*/
     /*  EJBHome methods                                */
@@ -319,7 +319,7 @@
         }
     }
 
-    protected Object removeWithHandle(Method method, Object[] args, Object proxy) throws Throwable {
+    protected Object removeWithHandle(Class interfce, Method method, Object[] args, Object proxy) throws Throwable {
 
         IntraVmHandle handle = (IntraVmHandle) args[0];
         Object primKey = handle.getPrimaryKey();
@@ -331,7 +331,7 @@
             stub = null;
         }
 
-        container.invoke(deploymentID, method, args, primKey);
+        container.invoke(deploymentID, interfce, method, args, primKey);
 
         /*
          * This operation takes care of invalidating all the EjbObjectProxyHanders associated with
@@ -343,5 +343,5 @@
         return null;
     }
 
-    protected abstract Object removeByPrimaryKey(Method method, Object[] args, Object proxy) throws Throwable;
+    protected abstract Object removeByPrimaryKey(Class interfce, Method method, Object[] args, Object proxy) throws Throwable;
 }

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbObjectProxyHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbObjectProxyHandler.java?view=diff&rev=532612&r1=532611&r2=532612
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbObjectProxyHandler.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbObjectProxyHandler.java Wed Apr 25 22:16:33 2007
@@ -51,7 +51,7 @@
 
     public abstract Object getRegistryId();
 
-    public Object _invoke(Object p, Method m, Object[] a) throws Throwable {
+    public Object _invoke(Object p, Class interfce, Method m, Object[] a) throws Throwable {
         java.lang.Object retValue = null;
         java.lang.Throwable exc = null;
 
@@ -62,7 +62,7 @@
             Integer operation = (Integer) dispatchTable.get(m.getName());
 
             if (operation == null) {
-                retValue = businessMethod(m, a, p);
+                retValue = businessMethod(interfce, m, a, p);
             } else {
                 switch (operation.intValue()) {
                     case 1:
@@ -75,7 +75,7 @@
                         retValue = isIdentical(m, a, p);
                         break;
                     case 4:
-                        retValue = remove(m, a, p);
+                        retValue = remove(interfce, m, a, p);
                         break;
                     case 5:
                         retValue = getEJBHome(m, a, p);
@@ -200,11 +200,11 @@
 
     protected abstract Object isIdentical(Method method, Object[] args, Object proxy) throws Throwable;
 
-    protected abstract Object remove(Method method, Object[] args, Object proxy) throws Throwable;
+    protected abstract Object remove(Class interfce, Method method, Object[] args, Object proxy) throws Throwable;
 
-    protected Object businessMethod(Method method, Object[] args, Object proxy) throws Throwable {
+    protected Object businessMethod(Class interfce, Method method, Object[] args, Object proxy) throws Throwable {
 //        checkAuthorization(method);
-        return container.invoke(deploymentID, method, args, primaryKey);
+        return container.invoke(deploymentID, interfce, method, args, primaryKey);
     }
 
     public static Object createProxy(DeploymentInfo deploymentInfo, Object primaryKey, InterfaceType interfaceType) {

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbContainer.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbContainer.java?view=diff&rev=532612&r1=532611&r2=532612
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbContainer.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbContainer.java Wed Apr 25 22:16:33 2007
@@ -192,10 +192,10 @@
      * @deprecated use invoke signature without 'securityIdentity' argument.
      */
     public Object invoke(Object deployID, Method callMethod, Object[] args, Object primKey, Object securityIdentity) throws OpenEJBException {
-        return invoke(deployID, callMethod, args, primKey);
+        return invoke(deployID, callMethod.getDeclaringClass(), callMethod, args, primKey);
     }
 
-    public Object invoke(Object deploymentId, Method method, Object[] args, Object primKey) throws OpenEJBException {
+    public Object invoke(Object deploymentId, Class callInterface, Method method, Object[] args, Object primKey) throws OpenEJBException {
         // get the target deployment (MDB)
         CoreDeploymentInfo deployInfo = (CoreDeploymentInfo) getDeploymentInfo(deploymentId);
         if (deployInfo == null) throw new SystemException("Unknown deployment " + deploymentId);

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=532612&r1=532611&r2=532612
==============================================================================
--- 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 Wed Apr 25 22:16:33 2007
@@ -222,10 +222,10 @@
      * @deprecated use invoke signature without 'securityIdentity' argument.
      */
     public Object invoke(Object deployID, Method callMethod, Object[] args, Object primKey, Object securityIdentity) throws OpenEJBException {
-        return invoke(deployID, callMethod, args, primKey);
+        return invoke(deployID, callMethod.getDeclaringClass(), callMethod, args, primKey);
     }
 
-    public Object invoke(Object deployID, Method callMethod, Object [] args, Object primKey) throws OpenEJBException {
+    public Object invoke(Object deployID, Class callInterface, Method callMethod, Object [] args, Object primKey) throws OpenEJBException {
         CoreDeploymentInfo deployInfo = (CoreDeploymentInfo) this.getDeploymentInfo(deployID);
         if (deployInfo == null)
             throw new OpenEJBException("Deployment does not exist in this container. Deployment(id='" + deployID + "'), Container(id='" + containerID + "')");

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulEjbHomeHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulEjbHomeHandler.java?view=diff&rev=532612&r1=532611&r2=532612
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulEjbHomeHandler.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulEjbHomeHandler.java Wed Apr 25 22:16:33 2007
@@ -43,11 +43,11 @@
 
     }
 
-    protected Object findX(Method method, Object[] args, Object proxy) throws Throwable {
+    protected Object findX(Class interfce, Method method, Object[] args, Object proxy) throws Throwable {
         throw new UnsupportedOperationException("Stateful beans may not have find methods");
     }
 
-    protected Object removeByPrimaryKey(Method method, Object[] args, Object proxy) throws Throwable {
+    protected Object removeByPrimaryKey(Class interfce, Method method, Object[] args, Object proxy) throws Throwable {
         throw new RemoveException("Session objects are private resources and do not have primary keys");
     }
 

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulEjbObjectHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulEjbObjectHandler.java?view=diff&rev=532612&r1=532611&r2=532612
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulEjbObjectHandler.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulEjbObjectHandler.java Wed Apr 25 22:16:33 2007
@@ -16,7 +16,6 @@
  */
 package org.apache.openejb.core.stateful;
 
-import org.apache.openejb.RpcContainer;
 import org.apache.openejb.InterfaceType;
 import org.apache.openejb.DeploymentInfo;
 import org.apache.openejb.core.ivm.EjbObjectProxyHandler;
@@ -24,7 +23,6 @@
 
 import java.lang.reflect.Method;
 import java.rmi.RemoteException;
-import java.util.ArrayList;
 import java.util.List;
 
 public class StatefulEjbObjectHandler extends EjbObjectProxyHandler {
@@ -47,9 +45,9 @@
         return new Boolean(primaryKey.equals(handler.primaryKey));
     }
 
-    protected Object remove(Method method, Object[] args, Object proxy) throws Throwable {
+    protected Object remove(Class interfce, Method method, Object[] args, Object proxy) throws Throwable {
         checkAuthorization(method);
-        Object value = container.invoke(deploymentID, method, args, primaryKey);
+        Object value = container.invoke(deploymentID, interfce, method, args, primaryKey);
 
         invalidateAllHandlers(getRegistryId());
         return value;

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessContainer.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessContainer.java?view=diff&rev=532612&r1=532611&r2=532612
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessContainer.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessContainer.java Wed Apr 25 22:16:33 2007
@@ -128,10 +128,10 @@
      * @deprecated use invoke signature without 'securityIdentity' argument.
      */
     public Object invoke(Object deployID, Method callMethod, Object[] args, Object primKey, Object securityIdentity) throws OpenEJBException {
-        return invoke(deployID, callMethod, args, primKey);
+        return invoke(deployID, callMethod.getDeclaringClass(), callMethod, args, primKey);
     }
 
-    public Object invoke(Object deployID, Method callMethod, Object [] args, Object primKey) throws OpenEJBException {
+    public Object invoke(Object deployID, Class callInterface, Method callMethod, Object [] args, Object primKey) throws OpenEJBException {
         CoreDeploymentInfo deployInfo = (CoreDeploymentInfo) this.getDeploymentInfo(deployID);
         if (deployInfo == null) throw new OpenEJBException("Deployment does not exist in this container. Deployment(id='"+deployID+"'), Container(id='"+containerID+"')");
 

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessEjbHomeHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessEjbHomeHandler.java?view=diff&rev=532612&r1=532611&r2=532612
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessEjbHomeHandler.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessEjbHomeHandler.java Wed Apr 25 22:16:33 2007
@@ -17,7 +17,6 @@
 package org.apache.openejb.core.stateless;
 
 import java.lang.reflect.Method;
-import java.util.ArrayList;
 import java.util.List;
 
 import javax.ejb.RemoveException;
@@ -33,15 +32,15 @@
         super(deploymentInfo, interfaceType, interfaces);
     }
 
-    protected Object findX(Method method, Object[] args, Object proxy) throws Throwable {
+    protected Object findX(Class interfce, Method method, Object[] args, Object proxy) throws Throwable {
         throw new UnsupportedOperationException("Stateful beans may not have find methods");
     }
 
-    protected Object removeByPrimaryKey(Method method, Object[] args, Object proxy) throws Throwable {
+    protected Object removeByPrimaryKey(Class interfce, Method method, Object[] args, Object proxy) throws Throwable {
         throw new RemoveException("Session objects are private resources and do not have primary keys");
     }
 
-    protected Object removeWithHandle(Method method, Object[] args, Object proxy) throws Throwable {
+    protected Object removeWithHandle(Class interfce, Method method, Object[] args, Object proxy) throws Throwable {
         // stateless can't be removed
         return null;
     }

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessEjbObjectHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessEjbObjectHandler.java?view=diff&rev=532612&r1=532611&r2=532612
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessEjbObjectHandler.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessEjbObjectHandler.java Wed Apr 25 22:16:33 2007
@@ -17,7 +17,6 @@
 package org.apache.openejb.core.stateless;
 
 import org.apache.openejb.Container;
-import org.apache.openejb.RpcContainer;
 import org.apache.openejb.InterfaceType;
 import org.apache.openejb.DeploymentInfo;
 import org.apache.openejb.core.ivm.EjbObjectProxyHandler;
@@ -25,7 +24,6 @@
 
 import java.lang.reflect.Method;
 import java.rmi.RemoteException;
-import java.util.ArrayList;
 import java.util.List;
 
 public class StatelessEjbObjectHandler extends EjbObjectProxyHandler {
@@ -63,7 +61,7 @@
         // stateless can't be removed
     }
 
-    protected Object remove(Method method, Object[] args, Object proxy) throws Throwable {
+    protected Object remove(Class interfce, Method method, Object[] args, Object proxy) throws Throwable {
         // stateless can't be removed
         return null;
     }

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java?view=diff&rev=532612&r1=532611&r2=532612
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java Wed Apr 25 22:16:33 2007
@@ -37,6 +37,7 @@
 import java.util.TimerTask;
 import java.util.concurrent.Executor;
 import java.util.concurrent.Executors;
+import java.lang.reflect.Method;
 
 public class EjbTimerServiceImpl implements EjbTimerService {
     private static final Logger log = Logger.getInstance("Timer", "org.apache.openejb.util.resources");
@@ -143,7 +144,7 @@
         // make sure it was removed from the strore
         timerStore.removeTimer(timerData.getId());
     }
-    
+
     /**
      * Returns a timerData to the TimerStore, if a cancel() is rolled back.
      * @param timerData the timer to be returned to the timer store
@@ -249,7 +250,7 @@
             throw new IllegalStateException("TimerService method not permitted for current operation " + ThreadContext.getThreadContext().getCurrentOperation().name());
         }
     }
-    
+
     /**
      * This method calls the ejbTimeout method and starts a transaction if the timeout is transacted.
      *
@@ -278,7 +279,8 @@
                 // call the timeout method
                 try {
                     RpcContainer container = (RpcContainer) deployment.getContainer();
-                    container.invoke(deployment.getDeploymentID(), deployment.getEjbTimeout(), new Object[] {timer}, timerData.getPrimaryKey());
+                    Method ejbTimeout = deployment.getEjbTimeout();
+                    container.invoke(deployment.getDeploymentID(), ejbTimeout.getDeclaringClass(), ejbTimeout, new Object[] {timer}, timerData.getPrimaryKey());
                 } catch (RuntimeException e) {
                     // exception from a timer does not necessairly mean failure
                     log.warning("RuntimeException from ejbTimeout on " + deployment.getDeploymentID(), e);

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/JaxRpcWebServiceInvocationTest.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/JaxRpcWebServiceInvocationTest.java?view=diff&rev=532612&r1=532611&r2=532612
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/JaxRpcWebServiceInvocationTest.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/JaxRpcWebServiceInvocationTest.java Wed Apr 25 22:16:33 2007
@@ -116,7 +116,7 @@
 
         Method echoMethod = EchoServiceEndpoint.class.getMethod("echo", String.class);
 
-        String value = (String)container.invoke("EchoBean", echoMethod, args, null);
+        String value = (String) container.invoke("EchoBean", echoMethod.getDeclaringClass(), echoMethod, args, null);
 
         assertCalls(Call.values());
         calls.clear();

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/JaxWsWebServiceInvocationTest.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/JaxWsWebServiceInvocationTest.java?view=diff&rev=532612&r1=532611&r2=532612
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/JaxWsWebServiceInvocationTest.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/JaxWsWebServiceInvocationTest.java Wed Apr 25 22:16:33 2007
@@ -49,7 +49,6 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Arrays;
-import java.util.Iterator;
 import java.lang.reflect.Method;
 
 /**
@@ -121,7 +120,7 @@
 
         Method echoMethod = EchoServiceEndpoint.class.getMethod("echo", String.class);
 
-        String value = (String)container.invoke("EchoBean", echoMethod, args, null);
+        String value = (String) container.invoke("EchoBean", echoMethod.getDeclaringClass(), echoMethod, args, null);
 
         assertCalls(Call.values());
         calls.clear();
@@ -188,12 +187,12 @@
             }
             
             // test @Resource WebServiceContext injection
-            junit.framework.Assert.assertNotNull("web service context should not be null", wsContext);  
+            junit.framework.Assert.assertNotNull("web service context should not be null", wsContext);
             junit.framework.Assert.assertEquals("msg context should be the smae", messageContext, wsContext.getMessageContext());
-            
+
             junit.framework.Assert.assertFalse("user in role 'foo'", wsContext.isUserInRole("foo"));
             junit.framework.Assert.assertNull("user principal", wsContext.getUserPrincipal());
-            
+
             calls.add(Call.Bean_Invoke_BEFORE);
             Object o = context.proceed();
             calls.add(Call.Bean_Invoke_AFTER);

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessContainerTest.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessContainerTest.java?view=diff&rev=532612&r1=532611&r2=532612
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessContainerTest.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessContainerTest.java Wed Apr 25 22:16:33 2007
@@ -53,7 +53,7 @@
 
     public void testPojoStyleBean() throws Exception {
 
-        Object result = container.invoke("widget", Widget.class.getMethod("getLifecycle"), new Object[]{}, null);
+        Object result = container.invoke("widget", Widget.class, Widget.class.getMethod("getLifecycle"), new Object[]{}, null);
         assertTrue("instance of Stack", result instanceof Stack);
 
         Stack<Lifecycle> actual = (Stack<Lifecycle>) result;

Modified: incubator/openejb/trunk/openejb3/examples/moviefun/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/examples/moviefun/src/main/webapp/WEB-INF/web.xml?view=diff&rev=532612&r1=532611&r2=532612
==============================================================================
--- incubator/openejb/trunk/openejb3/examples/moviefun/src/main/webapp/WEB-INF/web.xml (original)
+++ incubator/openejb/trunk/openejb3/examples/moviefun/src/main/webapp/WEB-INF/web.xml Wed Apr 25 22:16:33 2007
@@ -6,11 +6,11 @@
 
     <servlet>
         <servlet-name>loader</servlet-name>
-        <servlet-class>org.openejb.loader.LoaderServlet</servlet-class>
+        <servlet-class>org.apache.openejb.loader.LoaderServlet</servlet-class>
 
         <init-param>
             <param-name>openejb.home</param-name>
-            <param-value>/Users/dblevins/work/openejb1/target/openejb-1.0-SNAPSHOT</param-value>
+            <param-value>/Users/dblevins/work/openejb3/assembly-standalone/target/openejb-3.0-SNAPSHOT-incubating</param-value>
         </init-param>
 
         <init-param>

Modified: incubator/openejb/trunk/openejb3/server/openejb-axis/src/main/java/org/apache/openejb/server/axis/EjbContainerProvider.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-axis/src/main/java/org/apache/openejb/server/axis/EjbContainerProvider.java?view=diff&rev=532612&r1=532611&r2=532612
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-axis/src/main/java/org/apache/openejb/server/axis/EjbContainerProvider.java (original)
+++ incubator/openejb/trunk/openejb3/server/openejb-axis/src/main/java/org/apache/openejb/server/axis/EjbContainerProvider.java Wed Apr 25 22:16:33 2007
@@ -71,7 +71,7 @@
         this.ejbDeployment = ejbDeployment;
         this.handlerInfos = handlerInfos;
     }
-    
+
     public void processMessage(MessageContext msgContext, SOAPEnvelope reqEnv, SOAPEnvelope resEnv, Object obj) throws Exception {
 
         RPCElement body = getBody(reqEnv, msgContext);
@@ -88,8 +88,9 @@
 
             Object[] arguments = {msgContext, interceptor};
 
-            Object result = container.invoke(ejbDeployment.getDeploymentID(), operation.getMethod(), arguments, null);
-            
+            Class callInterface = ejbDeployment.getServiceEndpointInterface();
+            Object result = container.invoke(ejbDeployment.getDeploymentID(), callInterface, operation.getMethod(), arguments, null);
+
             interceptor.createResult(result);
         } catch (InvalidateReferenceException e) {
             interceptor.createExceptionResult(e.getCause());
@@ -119,7 +120,7 @@
             this.messageContext = msgContext;
             this.operation = operation;
         }
-        
+
         @AroundInvoke
         public Object intercept(InvocationContext context) throws Exception {
             HandlerChain handlerChain = new HandlerChainImpl(handlerInfos);
@@ -151,10 +152,10 @@
                 }
 
                 handlerChain.handleResponse(messageContext);
-                
+
                 if (!handlerChain.isEmpty()) {
-                    /* 
-                     * Deserialize the result value from soap msg as handers could have 
+                    /*
+                     * Deserialize the result value from soap msg as handers could have
                      * changed it.
                      */
                     try {
@@ -169,7 +170,7 @@
                 handlerChain.destroy();
             }
         }
-        
+
         public Object[] getArguments() {
             try {
                 return demarshallArguments();
@@ -177,7 +178,7 @@
                 throw (IllegalStateException) new IllegalStateException("Cannot demarshal the soap parts into arguments").initCause(e);
             }
         }
-        
+
         private Object[] demarshallArguments() throws Exception {
             SOAPMessage message = messageContext.getMessage();
             messageContext.setProperty(org.apache.axis.SOAPPart.ALLOW_FORM_OPTIMIZATION, Boolean.TRUE);
@@ -205,7 +206,7 @@
                 for (int i = 0; i < args.size(); i++) {
                     RPCParam rpcParam = (RPCParam) args.get(i);
                     Object value = rpcParam.getObjectValue();
-                    
+
                     ParameterDesc paramDesc = rpcParam.getParamDesc();
 
                     if (paramDesc != null && paramDesc.getJavaType() != null) {
@@ -223,7 +224,7 @@
 
         private Object demarshallResult() throws Exception {
             Message resMsg = messageContext.getResponseMessage();
-            
+
             /*
              * This is not the most efficient way to deserialize the result
              * but could not find better or more reliable way to do this.
@@ -231,17 +232,17 @@
             ByteArrayOutputStream out = new ByteArrayOutputStream();
             resMsg.writeTo(out);
             ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
-            
-            DeserializationContext dser = 
+
+            DeserializationContext dser =
                 new DeserializationContext(new InputSource(in), resMsg.getMessageContext(), null);
             dser.parse();
             SOAPEnvelope responseEnvelope = dser.getEnvelope();
-            
+
             SOAPBodyElement bodyEl = responseEnvelope.getFirstBody();
             if (bodyEl == null) {
                 return null;
             }
-            
+
             QName returnType = operation.getReturnType();
             if (XMLType.AXIS_VOID.equals(returnType)) {
                 return null;
@@ -290,7 +291,7 @@
             if (operation.getReturnClass() != null) {
                 result = JavaUtils.convert(result, operation.getReturnClass());
             }
-            
+
             return result;
         }
 
@@ -315,7 +316,7 @@
 
         public void createExceptionResult(Throwable exception) {
             messageContext.setPastPivot(true);
-            
+
             AxisFault axisFault = null;
             if (exception instanceof Exception) {
                 axisFault = AxisFault.makeFault((Exception)exception);
@@ -323,7 +324,7 @@
             } else {
                 axisFault = new AxisFault("Server", "Server Error", null, null);
             }
-            
+
             SOAPFault fault = new SOAPFault(axisFault);
             SOAPEnvelope envelope = new SOAPEnvelope();
             envelope.addBodyElement(fault);

Modified: incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbRequestHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbRequestHandler.java?view=diff&rev=532612&r1=532611&r2=532612
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbRequestHandler.java (original)
+++ incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbRequestHandler.java Wed Apr 25 22:16:33 2007
@@ -23,8 +23,6 @@
 import java.util.Collection;
 
 import javax.ejb.EJBAccessException;
-import javax.ejb.EJBHome;
-import javax.ejb.EJBObject;
 
 import org.apache.openejb.DeploymentInfo;
 import org.apache.openejb.ProxyInfo;
@@ -196,7 +194,7 @@
         RpcContainer c = (RpcContainer) call.getDeploymentInfo().getContainer();
 
         Object result = c.invoke(req.getDeploymentId(),
-                req.getMethodInstance(),
+                req.getMethodClass(), req.getMethodInstance(),
                 req.getMethodParameters(),
                 req.getPrimaryKey()
         );
@@ -210,7 +208,7 @@
         RpcContainer c = (RpcContainer) call.getDeploymentInfo().getContainer();
 
         Object result = c.invoke(req.getDeploymentId(),
-                req.getMethodInstance(),
+                req.getMethodClass(), req.getMethodInstance(),
                 req.getMethodParameters(),
                 req.getPrimaryKey()
         );
@@ -224,7 +222,7 @@
         RpcContainer c = (RpcContainer) call.getDeploymentInfo().getContainer();
 
         Object result = c.invoke(req.getDeploymentId(),
-                req.getMethodInstance(),
+                req.getMethodClass(), req.getMethodInstance(),
                 req.getMethodParameters(),
                 req.getPrimaryKey()
         );
@@ -246,7 +244,7 @@
         RpcContainer c = (RpcContainer) call.getDeploymentInfo().getContainer();
 
         Object result = c.invoke(req.getDeploymentId(),
-                req.getMethodInstance(),
+                req.getMethodClass(), req.getMethodInstance(),
                 req.getMethodParameters(),
                 req.getPrimaryKey()
         );
@@ -322,7 +320,7 @@
         RpcContainer c = (RpcContainer) call.getDeploymentInfo().getContainer();
 
         Object result = c.invoke(req.getDeploymentId(),
-                req.getMethodInstance(),
+                req.getMethodClass(), req.getMethodInstance(),
                 req.getMethodParameters(),
                 req.getPrimaryKey()
         );
@@ -344,7 +342,7 @@
         RpcContainer c = (RpcContainer) call.getDeploymentInfo().getContainer();
 
         Object result = c.invoke(req.getDeploymentId(),
-                req.getMethodInstance(),
+                req.getMethodClass(), req.getMethodInstance(),
                 req.getMethodParameters(),
                 req.getPrimaryKey()
         );
@@ -358,7 +356,7 @@
         RpcContainer c = (RpcContainer) call.getDeploymentInfo().getContainer();
 
         Object result = c.invoke(req.getDeploymentId(),
-                req.getMethodInstance(),
+                req.getMethodClass(), req.getMethodInstance(),
                 req.getMethodParameters(),
                 req.getPrimaryKey()
         );