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/05/02 19:29:38 UTC

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

Author: dblevins
Date: Wed May  2 10:29:36 2007
New Revision: 534559

URL: http://svn.apache.org/viewvc?view=rev&rev=534559
Log:
Weave the 'called interface' through the protocol.  Fixed proxy replacement code to handle business interfaces directly.
Completely compliant SessionContext lookup, getInvokedBusinessInterface, and getBusinessObject methods

Modified:
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BaseContext.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BaseSessionContext.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ServerFederation.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ThreadContext.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/ivm/EjbObjectProxyHandler.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/IntraVmServer.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/stateless/StatelessContainer.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/spi/ApplicationServer.java
    incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBHomeHandler.java
    incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandler.java
    incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectProxyHandle.java
    incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBRequest.java
    incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EntityEJBHomeHandler.java
    incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EntityEJBObjectHandler.java
    incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/StatefulEJBHomeHandler.java
    incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/StatefulEJBObjectHandler.java
    incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/ClientObjectFactory.java
    incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbDaemon.java
    incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbRequestHandler.java
    incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbServer.java

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BaseContext.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BaseContext.java?view=diff&rev=534559&r1=534558&r2=534559
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BaseContext.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BaseContext.java Wed May  2 10:29:36 2007
@@ -28,6 +28,7 @@
 import javax.ejb.TimerService;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
+import javax.naming.Context;
 import javax.transaction.Status;
 import javax.transaction.SystemException;
 import javax.transaction.TransactionManager;
@@ -115,11 +116,27 @@
     }
 
     public Object lookup(String name) {
+        ThreadContext threadContext = ThreadContext.getThreadContext();
+        CoreDeploymentInfo deploymentInfo = threadContext.getDeploymentInfo();
+        Context jndiEnc = deploymentInfo.getJndiEnc();
         try {
-            return (new InitialContext()).lookup("java:comp/env/" + name);
-        } catch (NamingException ne) {
-            throw new IllegalArgumentException(ne);
+            jndiEnc = (Context) jndiEnc.lookup("java:comp/env");
+            return jndiEnc.lookup(name);
+        } catch (NamingException e) {
+            throw new IllegalArgumentException(e);
+        } catch (RuntimeException e) {
+            throw new IllegalArgumentException(e);
         }
+
+//        try {
+//            InitialContext initialContext = new InitialContext();
+//            Context ctx = (Context) initialContext.lookup("java:comp/env");
+//            return ctx.lookup(name);
+//        } catch (NamingException e) {
+//            throw new IllegalArgumentException(e);
+//        } catch (RuntimeException e) {
+//            throw new IllegalArgumentException(e);
+//        }
     }
 
     public boolean isUserTransactionAccessAllowed() {

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BaseSessionContext.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BaseSessionContext.java?view=diff&rev=534559&r1=534558&r2=534559
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BaseSessionContext.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BaseSessionContext.java Wed May  2 10:29:36 2007
@@ -109,6 +109,8 @@
         }
 
         public Object getBusinessObject(Class interfce) {
+            if (interfce == null) throw new IllegalStateException("Interface argument cannot me null.");
+
             ThreadContext threadContext = ThreadContext.getThreadContext();
             DeploymentInfo di = threadContext.getDeploymentInfo();
 
@@ -116,7 +118,7 @@
             InterfaceType interfaceType = di.getInterfaceType(interfce);
 
             if (interfaceType == null){
-                throw new IllegalArgumentException("Component has no such interface: " + interfce.getName());
+                throw new IllegalStateException("Component has no such interface: " + interfce.getName());
             }
 
             if (!interfaceType.isBusiness()) {
@@ -148,12 +150,14 @@
 
         public Class getInvokedBusinessInterface() {
             ThreadContext threadContext = ThreadContext.getThreadContext();
-            DeploymentInfo di = threadContext.getDeploymentInfo();
-            Class methodClass = threadContext.get(Method.class).getDeclaringClass();
+            Class invokedInterface = threadContext.getInvokedInterface();
+            InterfaceType type = threadContext.getDeploymentInfo().getInterfaceType(invokedInterface);
+            if (!type.isBusiness()) throw new IllegalStateException("The EJB spec requires us to cripple the use of this method for anything but business interface proxy.  But FYI, your invoked interface is: "+invokedInterface.getName());
 
-            if (di.getBusinessLocalInterface() != null && di.getBusinessLocalInterface().isAssignableFrom(methodClass)) return di.getBusinessLocalInterface();
-            else if (di.getBusinessRemoteInterface() != null && di.getBusinessRemoteInterface().isAssignableFrom(methodClass)) return di.getBusinessRemoteInterface();
-            else throw new InternalErrorException("Should have found some business interface");
+            if (invokedInterface == null){
+                throw new IllegalStateException("Business interface not set into ThreadContext.");
+            }
+            return invokedInterface;
         }
     }
 

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ServerFederation.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ServerFederation.java?view=diff&rev=534559&r1=534558&r2=534559
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ServerFederation.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ServerFederation.java Wed May  2 10:29:36 2007
@@ -52,6 +52,10 @@
         return getApplicationServer().getEJBHome(proxyInfo);
     }
 
+    public Object getBusinessObject(ProxyInfo proxyInfo) {
+        return getApplicationServer().getBusinessObject(proxyInfo);
+    }
+
     public static void setApplicationServer(ApplicationServer server) {
         // todo why do we restrict null?  This makes call to setApplicationServer non symetrical. Throw an exception?
         if (server != null) {

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ThreadContext.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ThreadContext.java?view=diff&rev=534559&r1=534558&r2=534559
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ThreadContext.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ThreadContext.java Wed May  2 10:29:36 2007
@@ -95,6 +95,7 @@
     private ClassLoader oldClassLoader;
     private Operation currentOperation;
     private BaseContext.State[] currentAllowedStates;
+    private Class invokedInterface;
 
     public ThreadContext(CoreDeploymentInfo deploymentInfo, Object primaryKey) {
         this(deploymentInfo, primaryKey, null);
@@ -130,6 +131,14 @@
 
     public void setCurrentOperation(Operation operation) {
         currentOperation = operation;
+    }
+
+    public Class getInvokedInterface() {
+        return invokedInterface;
+    }
+
+    public void setInvokedInterface(Class invokedInterface) {
+        this.invokedInterface = invokedInterface;
     }
 
     public BaseContext.State[] getCurrentAllowedStates() {

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=534559&r1=534558&r2=534559
==============================================================================
--- 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 May  2 10:29:36 2007
@@ -268,7 +268,7 @@
         ThreadContext oldCallContext = ThreadContext.enter(callContext);
         try {
 
-            boolean authorized = securityService.isCallerAuthorized(callMethod, null);
+            boolean authorized = securityService.isCallerAuthorized(callMethod, deployInfo.getInterfaceType(callInterface));
             if (!authorized) {
                 throw new ApplicationException(new EJBAccessException("Unauthorized Access by Principal Denied"));
             }

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=534559&r1=534558&r2=534559
==============================================================================
--- 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 May  2 10:29:36 2007
@@ -146,7 +146,7 @@
         ThreadContext callContext = new ThreadContext(deployInfo, primKey);
         ThreadContext oldCallContext = ThreadContext.enter(callContext);
         try {
-            boolean authorized = getSecurityService().isCallerAuthorized(callMethod, null);
+            boolean authorized = getSecurityService().isCallerAuthorized(callMethod, deployInfo.getInterfaceType(callInterface));
             if (!authorized)
                 throw new org.apache.openejb.ApplicationException(new EJBAccessException("Unauthorized Access by Principal Denied"));
 

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=534559&r1=534558&r2=534559
==============================================================================
--- 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 May  2 10:29:36 2007
@@ -192,7 +192,11 @@
             */
         } else {
             ApplicationServer applicationServer = ServerFederation.getApplicationServer();
-            return applicationServer.getEJBObject(this.getProxyInfo());
+            if (interfaceType.isBusiness()){
+                return applicationServer.getBusinessObject(this.getProxyInfo());
+            } else {
+                return applicationServer.getEJBObject(this.getProxyInfo());
+            }
         }
     }
 

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/IntraVmServer.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/IntraVmServer.java?view=diff&rev=534559&r1=534558&r2=534559
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/IntraVmServer.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/IntraVmServer.java Wed May  2 10:29:36 2007
@@ -46,7 +46,12 @@
         return (EJBObject) EjbObjectProxyHandler.createProxy(pi.getDeploymentInfo(), pi.getPrimaryKey(), pi.getInterfaceType(), pi.getInterfaces());
     }
 
+    public Object getBusinessObject(ProxyInfo pi) {
+        return EjbObjectProxyHandler.createProxy(pi.getDeploymentInfo(), pi.getPrimaryKey(), pi.getInterfaceType(), pi.getInterfaces());
+    }
+
     public EJBHome getEJBHome(ProxyInfo pi) {
         return (EJBHome) EjbHomeProxyHandler.createHomeProxy(pi.getDeploymentInfo(), pi.getInterfaceType());
     }
+
 }

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=534559&r1=534558&r2=534559
==============================================================================
--- 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 May  2 10:29:36 2007
@@ -235,18 +235,18 @@
 
         switch (methodType) {
             case CREATE:
-                ProxyInfo proxyInfo = createEJBObject(deployInfo, callMethod, args);
+                ProxyInfo proxyInfo = createEJBObject(deployInfo, callInterface, callMethod, args);
                 return proxyInfo;
             case REMOVE:
-                removeEJBObject(deployInfo, primKey, callMethod, args);
+                removeEJBObject(deployInfo, primKey, callInterface, callMethod, args);
                 return null;
             default:
-                Object value = businessMethod(deployInfo, primKey, callMethod, args);
+                Object value = businessMethod(deployInfo, primKey, callInterface, callMethod, args);
                 return value;
         }
     }
 
-    protected ProxyInfo createEJBObject(CoreDeploymentInfo deploymentInfo, Method callMethod, Object [] args) throws OpenEJBException {
+    protected ProxyInfo createEJBObject(CoreDeploymentInfo deploymentInfo, Class callInterface, Method callMethod, Object [] args) throws OpenEJBException {
         // generate a new primary key
         Object primaryKey = newPrimaryKey();
 
@@ -257,7 +257,7 @@
         ThreadContext oldCallContext = ThreadContext.enter(createContext);
 
         try {
-            checkAuthorization(deploymentInfo, callMethod);
+            checkAuthorization(deploymentInfo, callMethod, callInterface);
 
             // create the extended entity managers
             Index<EntityManagerFactory, EntityManager> entityManagers = createEntityManagers(deploymentInfo);
@@ -289,11 +289,11 @@
         return new VMID();
     }
 
-    protected void removeEJBObject(CoreDeploymentInfo deploymentInfo, Object primKey, Method callMethod, Object[] args) throws OpenEJBException {
+    protected void removeEJBObject(CoreDeploymentInfo deploymentInfo, Object primKey, Class callInterface, Method callMethod, Object[] args) throws OpenEJBException {
         ThreadContext callContext = new ThreadContext(deploymentInfo, primKey);
         ThreadContext oldCallContext = ThreadContext.enter(callContext);
         try {
-            checkAuthorization(deploymentInfo, callMethod);
+            checkAuthorization(deploymentInfo, callMethod, callInterface);
             Method runMethod = deploymentInfo.getMatchingBeanMethod(callMethod);
             StatefulInstanceManager.Instance instance = (StatefulInstanceManager.Instance) instanceManager.obtainInstance(primKey, callContext);
 
@@ -301,9 +301,9 @@
 
             boolean retain = false;
             try {
-                    callContext.setCurrentAllowedStates(StatefulContext.getStates());
-                    
+                callContext.setCurrentAllowedStates(StatefulContext.getStates());
                 callContext.setCurrentOperation(Operation.REMOVE);
+                callContext.setInvokedInterface(callInterface);
 
                 Class<?> declaringClass = callMethod.getDeclaringClass();
                 if (declaringClass.equals(EJBHome.class) || declaringClass.equals(EJBLocalHome.class)){
@@ -349,15 +349,16 @@
         }
     }
 
-    private Object businessMethod(CoreDeploymentInfo deploymentInfo, Object primKey, Method callMethod, Object[] args) throws OpenEJBException {
+    private Object businessMethod(CoreDeploymentInfo deploymentInfo, Object primKey, Class callInterface, Method callMethod, Object[] args) throws OpenEJBException {
         ThreadContext callContext = new ThreadContext(deploymentInfo, primKey);
         ThreadContext oldCallContext = ThreadContext.enter(callContext);
         try {
-            checkAuthorization(deploymentInfo, callMethod);
+            checkAuthorization(deploymentInfo, callMethod, callInterface);
 
             Object bean = instanceManager.obtainInstance(primKey, callContext);
             callContext.setCurrentOperation(Operation.BUSINESS);
             callContext.setCurrentAllowedStates(StatefulContext.getStates());
+            callContext.setInvokedInterface(callInterface);
             Method runMethod = deploymentInfo.getMatchingBeanMethod(callMethod);
 
             callContext.set(Method.class, runMethod);
@@ -376,8 +377,8 @@
         }
     }
 
-    private void checkAuthorization(CoreDeploymentInfo deployInfo, Method callMethod) throws ApplicationException {
-        boolean authorized = securityService.isCallerAuthorized(callMethod, null);
+    private void checkAuthorization(CoreDeploymentInfo deployInfo, Method callMethod, Class callInterface) throws ApplicationException {
+        boolean authorized = securityService.isCallerAuthorized(callMethod, deployInfo.getInterfaceType(callInterface));
         if (!authorized) {
             throw new ApplicationException(new EJBAccessException("Unauthorized Access by Principal Denied"));
         }

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=534559&r1=534558&r2=534559
==============================================================================
--- 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 May  2 10:29:36 2007
@@ -138,7 +138,7 @@
         ThreadContext callContext = new ThreadContext(deployInfo, primKey);
         ThreadContext oldCallContext = ThreadContext.enter(callContext);
         try {
-            boolean authorized = getSecurityService().isCallerAuthorized(callMethod, null);
+            boolean authorized = getSecurityService().isCallerAuthorized(callMethod, deployInfo.getInterfaceType(callInterface));
             if (!authorized)
                 throw new org.apache.openejb.ApplicationException(new EJBAccessException("Unauthorized Access by Principal Denied"));
 
@@ -160,7 +160,7 @@
             Method runMethod = deployInfo.getMatchingBeanMethod(callMethod);
 
             callContext.set(Method.class, runMethod);
-
+            callContext.setInvokedInterface(callInterface);
             Object retValue = _invoke(callMethod, runMethod, args, bean, callContext);
             instanceManager.poolInstance(callContext, bean);
 

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/spi/ApplicationServer.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/spi/ApplicationServer.java?view=diff&rev=534559&r1=534558&r2=534559
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/spi/ApplicationServer.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/spi/ApplicationServer.java Wed May  2 10:29:36 2007
@@ -86,6 +86,8 @@
 
     public EJBObject getEJBObject(ProxyInfo proxyInfo);
 
+    public Object getBusinessObject(ProxyInfo proxyInfo);
+
     public EJBHome getEJBHome(ProxyInfo proxyInfo);
 
 }

Modified: incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBHomeHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBHomeHandler.java?view=diff&rev=534559&r1=534558&r2=534559
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBHomeHandler.java (original)
+++ incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBHomeHandler.java Wed May  2 10:29:36 2007
@@ -176,12 +176,7 @@
     }
 
     public Object homeMethod(Method method, Object[] args, Object proxy) throws Throwable {
-        EJBRequest req = new EJBRequest(RequestMethodConstants.EJB_HOME_METHOD);
-
-        req.setDeploymentCode(ejb.deploymentCode);
-        req.setDeploymentId(ejb.deploymentID);
-        req.setMethodInstance(method);
-        req.setMethodParameters(args);
+        EJBRequest req = new EJBRequest(RequestMethodConstants.EJB_HOME_METHOD, ejb, method, args, null);
 
         EJBResponse res = request(req);
 
@@ -205,12 +200,7 @@
     /*-------------------------------------------------*/
 
     protected Object create(Method method, Object[] args, Object proxy) throws Throwable {
-        EJBRequest req = new EJBRequest(RequestMethodConstants.EJB_HOME_CREATE);
-
-        req.setDeploymentCode(ejb.deploymentCode);
-        req.setDeploymentId(ejb.deploymentID);
-        req.setMethodInstance(method);
-        req.setMethodParameters(args);
+        EJBRequest req = new EJBRequest(RequestMethodConstants.EJB_HOME_CREATE, ejb, method, args, null);
 
         EJBResponse res = request(req);
 

Modified: incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandler.java?view=diff&rev=534559&r1=534558&r2=534559
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandler.java (original)
+++ incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandler.java Wed May  2 10:29:36 2007
@@ -205,13 +205,7 @@
 //      checkAuthorization(method);
 //      return container.invoke(deploymentID, method, args, primaryKey, getThreadSpecificSecurityIdentity());
 
-        EJBRequest req = new EJBRequest(RequestMethodConstants.EJB_OBJECT_BUSINESS_METHOD);
-
-        req.setMethodParameters(args);
-        req.setMethodInstance(method);
-        req.setDeploymentCode(ejb.deploymentCode);
-        req.setDeploymentId(ejb.deploymentID);
-        req.setPrimaryKey(primaryKey);
+        EJBRequest req = new EJBRequest(RequestMethodConstants.EJB_OBJECT_BUSINESS_METHOD, ejb, method, args, primaryKey);
 
         EJBResponse res = request(req);
 

Modified: incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectProxyHandle.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectProxyHandle.java?view=diff&rev=534559&r1=534558&r2=534559
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectProxyHandle.java (original)
+++ incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectProxyHandle.java Wed May  2 10:29:36 2007
@@ -37,13 +37,8 @@
 
         handler.client.writeExternal(out);
 
-        EJBMetaDataImpl ejb = handler.ejb;
-        out.writeObject(ejb.homeClass);
-        out.writeObject(ejb.remoteClass);
-        out.writeObject(ejb.keyClass);
-        out.writeByte(ejb.type);
-        out.writeUTF(ejb.deploymentID);
-        out.writeShort(ejb.deploymentCode);
+        handler.ejb.writeExternal(out);
+
         handler.server.writeExternal(out);
         out.writeObject(handler.primaryKey);
     }
@@ -55,14 +50,10 @@
 
         client.readExternal(in);
 
-        ejb.homeClass = (Class) in.readObject();
-        ejb.remoteClass = (Class) in.readObject();
-        ejb.keyClass = (Class) in.readObject();
-        ejb.type = in.readByte();
-        ejb.deploymentID = in.readUTF();
-        ejb.deploymentCode = in.readShort();
+        ejb.readExternal(in);
 
         server.readExternal(in);
+
         Object primaryKey = in.readObject();
 
         handler = EJBObjectHandler.createEJBObjectHandler(ejb, server, client, primaryKey);

Modified: incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBRequest.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBRequest.java?view=diff&rev=534559&r1=534558&r2=534559
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBRequest.java (original)
+++ incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBRequest.java Wed May  2 10:29:36 2007
@@ -24,7 +24,6 @@
 import java.rmi.Remote;
 import javax.naming.Context;
 import javax.naming.InitialContext;
-import javax.naming.NamingException;
 import javax.rmi.PortableRemoteObject;
 import javax.rmi.CORBA.Tie;
 import javax.rmi.CORBA.Stub;
@@ -46,16 +45,22 @@
     public static final int ENTITY_CM_PERSISTENCE = 9;
 
     public EJBRequest() {
-        body = new Body();
+        body = new Body(null);
     }
 
-    public EJBRequest(int requestMethod) {
-        body = new Body();
+    public EJBRequest(int requestMethod, EJBMetaDataImpl ejb, Method method, Object[] args, Object primaryKey) {
+        body = new Body(ejb);
+
         this.requestMethod = requestMethod;
+        setDeploymentCode(ejb.deploymentCode);
+        setDeploymentId(ejb.deploymentID);
+        setMethodInstance(method);
+        setMethodParameters(args);
+        setPrimaryKey(primaryKey);
     }
 
-    public Class getMethodClass() {
-        return body.getMethodClass();
+    public Class getInterfaceClass() {
+        return body.getInterfaceClass();
     }
 
     public Method getMethodInstance() {
@@ -99,14 +104,20 @@
     }
 
     public static class Body implements java.io.Externalizable {
+        private transient EJBMetaDataImpl ejb;
         private transient ORB orb; 
         private transient Method methodInstance;
-        private transient Class methodClass;
+        private transient Class interfaceClass;
+//        private transient Class methodClass;
         private transient String methodName;
         private transient Class[] methodParamTypes;
         private transient Object[] methodParameters;
         private transient Object primaryKey;
 
+        public Body(EJBMetaDataImpl ejb) {
+            this.ejb = ejb;
+        }
+
         public Method getMethodInstance() {
             return methodInstance;
         }
@@ -119,8 +130,8 @@
             return primaryKey;
         }
 
-        public Class getMethodClass() {
-            return methodClass;
+        public Class getInterfaceClass() {
+            return interfaceClass;
         }
 
         public String getMethodName() {
@@ -133,9 +144,30 @@
 
         public void setMethodInstance(Method methodInstance) {
             this.methodInstance = methodInstance;
-            this.methodClass = methodInstance.getDeclaringClass();
             this.methodName = methodInstance.getName();
             this.methodParamTypes = methodInstance.getParameterTypes();
+            Class methodClass = methodInstance.getDeclaringClass();
+
+            if (ejb.homeClass != null) {
+                if (methodClass.isAssignableFrom(ejb.homeClass)){
+                    this.interfaceClass = ejb.homeClass;
+                    return;
+                }
+            }
+
+            if (ejb.remoteClass != null) {
+                if (methodClass.isAssignableFrom(ejb.remoteClass)){
+                    this.interfaceClass = ejb.remoteClass;
+                    return;
+                }
+            }
+
+            for (Class businessClass : ejb.businessClasses) {
+                if (methodClass.isAssignableFrom(businessClass)){
+                    this.interfaceClass = businessClass;
+                    return;
+                }
+            }
         }
 
         public void setMethodParameters(Object[] methodParameters) {
@@ -149,12 +181,13 @@
         public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
             ClassNotFoundException result = null;
             primaryKey = null;
-            methodClass = null;
+//            methodClass = null;
             methodName = null;
             methodInstance = null;
             try {
                 primaryKey = in.readObject();
-                methodClass = (Class) in.readObject();
+                interfaceClass = (Class) in.readObject();
+//                methodClass = (Class) in.readObject();
             } catch (ClassNotFoundException cnfe) {
                 if (result == null) result = cnfe;
             }
@@ -166,9 +199,9 @@
                 if (result == null) result = cnfe;
             }
 
-            if (methodClass != null) {
+            if (interfaceClass != null) {
                 try {
-                    methodInstance = methodClass.getDeclaredMethod(methodName, methodParamTypes);
+                    methodInstance = interfaceClass.getMethod(methodName, methodParamTypes);
                 } catch (NoSuchMethodException nsme) {
                     //if (result == null) result = nsme;
                 }
@@ -180,7 +213,8 @@
         public void writeExternal(ObjectOutput out) throws IOException {
             out.writeObject(primaryKey);
 
-            out.writeObject(methodClass);
+            out.writeObject(interfaceClass);
+//            out.writeObject(methodClass);
             out.writeUTF(methodName);
 
             writeMethodParameters(out, methodParamTypes, methodParameters);

Modified: incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EntityEJBHomeHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EntityEJBHomeHandler.java?view=diff&rev=534559&r1=534558&r2=534559
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EntityEJBHomeHandler.java (original)
+++ incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EntityEJBHomeHandler.java Wed May  2 10:29:36 2007
@@ -32,12 +32,7 @@
     }
 
     protected Object findX(Method method, Object[] args, Object proxy) throws Throwable {
-        EJBRequest req = new EJBRequest(RequestMethodConstants.EJB_HOME_FIND);
-
-        req.setMethodParameters(args);
-        req.setMethodInstance(method);
-        req.setDeploymentCode(ejb.deploymentCode);
-        req.setDeploymentId(ejb.deploymentID);
+        EJBRequest req = new EJBRequest(RequestMethodConstants.EJB_HOME_FIND, ejb, method, args, null);
 
         EJBResponse res = request(req);
 
@@ -103,13 +98,7 @@
 
         if (primKey == null) throw new NullPointerException("The primary key is null.");
 
-        EJBRequest req = new EJBRequest(RequestMethodConstants.EJB_HOME_REMOVE_BY_PKEY);
-
-        req.setMethodParameters(args);
-        req.setMethodInstance(method);
-        req.setDeploymentCode(ejb.deploymentCode);
-        req.setDeploymentId(ejb.deploymentID);
-        req.setPrimaryKey(primKey);
+        EJBRequest req = new EJBRequest(RequestMethodConstants.EJB_HOME_REMOVE_BY_PKEY, ejb, method, args, primKey);
 
         EJBResponse res = request(req);
 
@@ -139,13 +128,7 @@
         Object primKey = ejbObject.getPrimaryKey();
         if (primKey == null) throw new NullPointerException("The handle.getEJBObject().getPrimaryKey() is null.");
 
-        EJBRequest req = new EJBRequest(RequestMethodConstants.EJB_HOME_REMOVE_BY_HANDLE);
-
-        req.setMethodParameters(args);
-        req.setMethodInstance(method);
-        req.setDeploymentCode(ejb.deploymentCode);
-        req.setDeploymentId(ejb.deploymentID);
-        req.setPrimaryKey(primKey);
+        EJBRequest req = new EJBRequest(RequestMethodConstants.EJB_HOME_REMOVE_BY_HANDLE, ejb, method, args, primKey);
 
         EJBResponse res = request(req);
 

Modified: incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EntityEJBObjectHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EntityEJBObjectHandler.java?view=diff&rev=534559&r1=534558&r2=534559
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EntityEJBObjectHandler.java (original)
+++ incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EntityEJBObjectHandler.java Wed May  2 10:29:36 2007
@@ -58,13 +58,7 @@
 
     protected Object remove(Method method, Object[] args, Object proxy) throws Throwable {
 
-        EJBRequest req = new EJBRequest(RequestMethodConstants.EJB_OBJECT_REMOVE);
-
-        req.setMethodParameters(args);
-        req.setMethodInstance(method);
-        req.setDeploymentCode(ejb.deploymentCode);
-        req.setDeploymentId(ejb.deploymentID);
-        req.setPrimaryKey(primaryKey);
+        EJBRequest req = new EJBRequest(RequestMethodConstants.EJB_OBJECT_REMOVE, ejb, method, args, primaryKey);
 
         EJBResponse res = request(req);
 

Modified: incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/StatefulEJBHomeHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/StatefulEJBHomeHandler.java?view=diff&rev=534559&r1=534558&r2=534559
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/StatefulEJBHomeHandler.java (original)
+++ incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/StatefulEJBHomeHandler.java Wed May  2 10:29:36 2007
@@ -51,12 +51,7 @@
             throw new SystemException(new IllegalArgumentException("The handle is not from the same deployment"));
         }
 
-        EJBRequest req = new EJBRequest(RequestMethodConstants.EJB_HOME_REMOVE_BY_HANDLE);
-        req.setDeploymentCode(handler.ejb.deploymentCode);
-        req.setDeploymentId(handler.ejb.deploymentID);
-        req.setMethodInstance(method);
-        req.setMethodParameters(args);
-        req.setPrimaryKey(primKey);
+        EJBRequest req = new EJBRequest(RequestMethodConstants.EJB_HOME_REMOVE_BY_HANDLE, ejb, method, args, primKey);
 
         EJBResponse res = request(req);
 

Modified: incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/StatefulEJBObjectHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/StatefulEJBObjectHandler.java?view=diff&rev=534559&r1=534558&r2=534559
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/StatefulEJBObjectHandler.java (original)
+++ incubator/openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/StatefulEJBObjectHandler.java Wed May  2 10:29:36 2007
@@ -56,12 +56,7 @@
     
     protected Object remove(Method method, Object[] args, Object proxy) throws Throwable {
 
-        EJBRequest req = new EJBRequest(RequestMethodConstants.EJB_OBJECT_REMOVE);
-        req.setDeploymentCode(ejb.deploymentCode);
-        req.setDeploymentId(ejb.deploymentID);
-        req.setMethodInstance(method);
-        req.setMethodParameters(args);
-        req.setPrimaryKey(primaryKey);
+        EJBRequest req = new EJBRequest(RequestMethodConstants.EJB_OBJECT_REMOVE, ejb, method, args, primaryKey);
 
         EJBResponse res = request(req);
 

Modified: incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/ClientObjectFactory.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/ClientObjectFactory.java?view=diff&rev=534559&r1=534558&r2=534559
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/ClientObjectFactory.java (original)
+++ incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/ClientObjectFactory.java Wed May  2 10:29:36 2007
@@ -46,30 +46,6 @@
 
     public javax.ejb.EJBMetaData getEJBMetaData(ProxyInfo info) {
         CallContext call = CallContext.getCallContext();
-        return _getEJBMetaData(call, info);
-    }
-
-    public javax.ejb.Handle getHandle(ProxyInfo info) {
-        CallContext call = CallContext.getCallContext();
-        return _getHandle(call, info);
-    }
-
-    public javax.ejb.HomeHandle getHomeHandle(ProxyInfo info) {
-        CallContext call = CallContext.getCallContext();
-        return _getHomeHandle(call, info);
-    }
-
-    public javax.ejb.EJBObject getEJBObject(ProxyInfo info) {
-        CallContext call = CallContext.getCallContext();
-        return _getEJBObject(call, info);
-    }
-
-    public javax.ejb.EJBHome getEJBHome(ProxyInfo info) {
-        CallContext call = CallContext.getCallContext();
-        return _getEJBHome(call, info);
-    }
-
-    protected javax.ejb.EJBMetaData _getEJBMetaData(CallContext call, ProxyInfo info) {
 
         DeploymentInfo deployment = info.getDeploymentInfo();
         int idCode = -1;
@@ -83,7 +59,8 @@
         return metaData;
     }
 
-    protected javax.ejb.Handle _getHandle(CallContext call, ProxyInfo info) {
+    public javax.ejb.Handle getHandle(ProxyInfo info) {
+        CallContext call = CallContext.getCallContext();
         DeploymentInfo deployment = info.getDeploymentInfo();
 
         int idCode = -1;
@@ -108,7 +85,8 @@
         return new EJBObjectHandle(hanlder.createEJBObjectProxy());
     }
 
-    protected javax.ejb.HomeHandle _getHomeHandle(CallContext call, ProxyInfo info) {
+    public javax.ejb.HomeHandle getHomeHandle(ProxyInfo info) {
+        CallContext call = CallContext.getCallContext();
         DeploymentInfo deployment = info.getDeploymentInfo();
 
         int idCode = -1;
@@ -132,7 +110,8 @@
         return new EJBHomeHandle(hanlder.createEJBHomeProxy());
     }
 
-    protected javax.ejb.EJBObject _getEJBObject(CallContext call, ProxyInfo info) {
+    public javax.ejb.EJBObject getEJBObject(ProxyInfo info) {
+        CallContext call = CallContext.getCallContext();
         DeploymentInfo deployment = info.getDeploymentInfo();
 
         int idCode = -1;
@@ -157,7 +136,33 @@
         return (javax.ejb.EJBObject) hanlder.createEJBObjectProxy();
     }
 
-    protected javax.ejb.EJBHome _getEJBHome(CallContext call, ProxyInfo info) {
+    public Object getBusinessObject(ProxyInfo info) {
+        CallContext call = CallContext.getCallContext();
+        DeploymentInfo deployment = info.getDeploymentInfo();
+
+        int idCode = -1;
+
+        Object securityIdentity = null;
+        try {
+            securityIdentity = call.getEJBRequest().getClientIdentity();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        ClientMetaData cMetaData = new ClientMetaData(securityIdentity);
+        EJBMetaDataImpl eMetaData = new EJBMetaDataImpl(null, null,
+                deployment.getPrimaryKeyClass(),
+                deployment.getComponentType().toString(),
+                deployment.getDeploymentID().toString(),
+                idCode, info.getInterfaces());
+        Object primKey = info.getPrimaryKey();
+
+        EJBObjectHandler hanlder = EJBObjectHandler.createEJBObjectHandler(eMetaData, sMetaData, cMetaData, primKey);
+
+        return hanlder.createEJBObjectProxy();
+    }
+
+    public javax.ejb.EJBHome getEJBHome(ProxyInfo info) {
+        CallContext call = CallContext.getCallContext();
         DeploymentInfo deployment = info.getDeploymentInfo();
 
         int idCode = -1;
@@ -180,4 +185,5 @@
 
         return hanlder.createEJBHomeProxy();
     }
+
 }

Modified: incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbDaemon.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbDaemon.java?view=diff&rev=534559&r1=534558&r2=534559
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbDaemon.java (original)
+++ incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbDaemon.java Wed May  2 10:29:36 2007
@@ -173,6 +173,10 @@
         return clientObjectFactory.getEJBObject(info);
     }
 
+    public Object getBusinessObject(ProxyInfo info) {
+        return clientObjectFactory.getBusinessObject(info);
+    }
+
     public javax.ejb.EJBHome getEJBHome(ProxyInfo info) {
         return clientObjectFactory.getEJBHome(info);
     }

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=534559&r1=534558&r2=534559
==============================================================================
--- 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 May  2 10:29:36 2007
@@ -22,8 +22,6 @@
 import java.util.ArrayList;
 import java.util.Collection;
 
-import javax.ejb.EJBAccessException;
-
 import org.apache.openejb.DeploymentInfo;
 import org.apache.openejb.ProxyInfo;
 import org.apache.openejb.RpcContainer;
@@ -194,7 +192,7 @@
         RpcContainer c = (RpcContainer) call.getDeploymentInfo().getContainer();
 
         Object result = c.invoke(req.getDeploymentId(),
-                req.getMethodClass(), req.getMethodInstance(),
+                req.getInterfaceClass(), req.getMethodInstance(),
                 req.getMethodParameters(),
                 req.getPrimaryKey()
         );
@@ -208,7 +206,7 @@
         RpcContainer c = (RpcContainer) call.getDeploymentInfo().getContainer();
 
         Object result = c.invoke(req.getDeploymentId(),
-                req.getMethodClass(), req.getMethodInstance(),
+                req.getInterfaceClass(), req.getMethodInstance(),
                 req.getMethodParameters(),
                 req.getPrimaryKey()
         );
@@ -222,7 +220,7 @@
         RpcContainer c = (RpcContainer) call.getDeploymentInfo().getContainer();
 
         Object result = c.invoke(req.getDeploymentId(),
-                req.getMethodClass(), req.getMethodInstance(),
+                req.getInterfaceClass(), req.getMethodInstance(),
                 req.getMethodParameters(),
                 req.getPrimaryKey()
         );
@@ -244,7 +242,7 @@
         RpcContainer c = (RpcContainer) call.getDeploymentInfo().getContainer();
 
         Object result = c.invoke(req.getDeploymentId(),
-                req.getMethodClass(), req.getMethodInstance(),
+                req.getInterfaceClass(), req.getMethodInstance(),
                 req.getMethodParameters(),
                 req.getPrimaryKey()
         );
@@ -320,7 +318,7 @@
         RpcContainer c = (RpcContainer) call.getDeploymentInfo().getContainer();
 
         Object result = c.invoke(req.getDeploymentId(),
-                req.getMethodClass(), req.getMethodInstance(),
+                req.getInterfaceClass(), req.getMethodInstance(),
                 req.getMethodParameters(),
                 req.getPrimaryKey()
         );
@@ -342,7 +340,7 @@
         RpcContainer c = (RpcContainer) call.getDeploymentInfo().getContainer();
 
         Object result = c.invoke(req.getDeploymentId(),
-                req.getMethodClass(), req.getMethodInstance(),
+                req.getInterfaceClass(), req.getMethodInstance(),
                 req.getMethodParameters(),
                 req.getPrimaryKey()
         );
@@ -356,7 +354,7 @@
         RpcContainer c = (RpcContainer) call.getDeploymentInfo().getContainer();
 
         Object result = c.invoke(req.getDeploymentId(),
-                req.getMethodClass(), req.getMethodInstance(),
+                req.getInterfaceClass(), req.getMethodInstance(),
                 req.getMethodParameters(),
                 req.getPrimaryKey()
         );
@@ -365,17 +363,17 @@
     }
 
     protected void checkMethodAuthorization(EJBRequest req, EJBResponse res) throws Exception {
-
-        SecurityService sec = SystemInstance.get().getComponent(SecurityService.class);
-        CallContext caller = CallContext.getCallContext();
-        DeploymentInfo di = caller.getDeploymentInfo();
-
-        if (sec.isCallerAuthorized(req.getMethodInstance(), null)) {
-            res.setResponse(ResponseCodes.EJB_OK, null);
-        } else {
-            this.daemon.logger.info(req + "Unauthorized Access by Principal Denied");
-            res.setResponse(ResponseCodes.EJB_APP_EXCEPTION, new ThrowableArtifact(new EJBAccessException("Unauthorized Access by Principal Denied")));
-        }
+        res.setResponse(ResponseCodes.EJB_OK, null);
+//        SecurityService sec = SystemInstance.get().getComponent(SecurityService.class);
+//        CallContext caller = CallContext.getCallContext();
+//        DeploymentInfo di = caller.getDeploymentInfo();
+//
+//        if (sec.isCallerAuthorized(req.getMethodInstance(), null)) {
+//            res.setResponse(ResponseCodes.EJB_OK, null);
+//        } else {
+//            this.daemon.logger.info(req + "Unauthorized Access by Principal Denied");
+//            res.setResponse(ResponseCodes.EJB_APP_EXCEPTION, new ThrowableArtifact(new EJBAccessException("Unauthorized Access by Principal Denied")));
+//        }
     }
 
     private void replyWithFatalError(ObjectOutputStream out, Throwable error, String message) {

Modified: incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbServer.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbServer.java?view=diff&rev=534559&r1=534558&r2=534559
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbServer.java (original)
+++ incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbServer.java Wed May  2 10:29:36 2007
@@ -85,6 +85,10 @@
         return server.getEJBObject(info);
     }
 
+    public Object getBusinessObject(ProxyInfo info) {
+        return server.getBusinessObject(info);   
+    }
+
     public EJBHome getEJBHome(ProxyInfo info) {
         return server.getEJBHome(info);
     }