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 2006/10/18 11:16:33 UTC
svn commit: r465182 - in /incubator/openejb/trunk/openejb3:
container/openejb-core/
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/o...
Author: dblevins
Date: Wed Oct 18 02:16:32 2006
New Revision: 465182
URL: http://svn.apache.org/viewvc?view=rev&rev=465182
Log:
Added InterfaceType which is now used by ProxyInfo to aid in determining the nature of a proxy
Added:
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/BeanType.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/InterfaceType.java
Modified:
incubator/openejb/trunk/openejb3/container/openejb-core/pom.xml
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/DeploymentInfo.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/ProxyInfo.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreContext.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityContext.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/ivm/IntraVmServer.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContext.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/StatelessContext.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/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/pom.xml
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/pom.xml?view=diff&rev=465182&r1=465181&r2=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/pom.xml (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/pom.xml Wed Oct 18 02:16:32 2006
@@ -104,7 +104,7 @@
<configuration>
<!-- namespace>http://openejb.org/schemas/core</namespace -->
<namespace>http://openejb.apache.org/schemas/core</namespace>
- <excludedClasses>org.apache.openejb.alt.config.ejb,org.apache.openejb.util.io</excludedClasses>
+ <excludedClasses>org.apache.openejb.alt.config.ejb,org.apache.openejb.util.io,org.apache.openejb.InterfaceType</excludedClasses>
</configuration>
</plugin>
</plugins>
Added: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/BeanType.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/BeanType.java?view=auto&rev=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/BeanType.java (added)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/BeanType.java Wed Oct 18 02:16:32 2006
@@ -0,0 +1,24 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.openejb;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public enum BeanType {
+ STATEFUL, STATELESS, BMP_ENTITY, CMP_ENTITY, MESSAGE_DRIVEN;
+}
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/DeploymentInfo.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/DeploymentInfo.java?view=diff&rev=465182&r1=465181&r2=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/DeploymentInfo.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/DeploymentInfo.java Wed Oct 18 02:16:32 2006
@@ -78,24 +78,13 @@
public boolean isReentrant();
+ Class getInterface(InterfaceType interfaceType);
+
public interface BusinessLocalHome extends javax.ejb.EJBLocalHome {
Object create();
}
public interface BusinessRemoteHome extends javax.ejb.EJBHome {
Object create();
- }
-
- public enum InterfaceType {
- HOME, REMOTE,
- LOCAL_HOME, LOCAL,
- BUSINESS_LOCAL,
- BUSINESS_REMOTE,
- SERVICE_ENDPOINT
- }
-
- // TODO: Use these instead of the constants above
- public enum BeanType {
- STATEFUL, STATELESS, BMP_ENTITY, CMP_ENTITY, MESSAGE_DRIVEN
}
}
Added: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/InterfaceType.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/InterfaceType.java?view=auto&rev=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/InterfaceType.java (added)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/InterfaceType.java Wed Oct 18 02:16:32 2006
@@ -0,0 +1,33 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.openejb;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public enum InterfaceType {
+ EJB_HOME,
+ EJB_OBJECT,
+ EJB_LOCAL_HOME,
+ EJB_LOCAL,
+ BUSINESS_LOCAL,
+ BUSINESS_LOCAL_HOME,
+ BUSINESS_REMOTE,
+ BUSINESS_REMOTE_HOME,
+ SERVICE_ENDPOINT,
+ UNKNOWN
+}
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/ProxyInfo.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/ProxyInfo.java?view=diff&rev=465182&r1=465181&r2=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/ProxyInfo.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/ProxyInfo.java Wed Oct 18 02:16:32 2006
@@ -20,28 +20,27 @@
protected DeploymentInfo deploymentInfo;
protected Object primaryKey;
- protected Class type;
+ protected Class proxyInterface;
protected RpcContainer beanContainer;
+ protected InterfaceType interfaceType;
protected ProxyInfo() {
}
- public ProxyInfo(DeploymentInfo depInfo, Object pk, Class intrfc, RpcContainer container) {
- deploymentInfo = depInfo;
- primaryKey = pk;
- type = intrfc;
- beanContainer = container;
- }
-
- public ProxyInfo(DeploymentInfo depInfo, Object pk, boolean isLocalInterface, RpcContainer container) {
+ public ProxyInfo(DeploymentInfo depInfo, Object pk, Class intrfc, RpcContainer container, InterfaceType proxyType) {
this.deploymentInfo = depInfo;
this.primaryKey = pk;
+ this.proxyInterface = intrfc;
+ this.interfaceType = proxyType;
this.beanContainer = container;
- if (isLocalInterface) {
- this.type = deploymentInfo.getLocalInterface();
- } else {
- this.type = deploymentInfo.getRemoteInterface();
- }
+ }
+
+ public ProxyInfo(DeploymentInfo depInfo, Object pk, Class intrfc, RpcContainer container) {
+ this(depInfo, pk, intrfc, container, InterfaceType.UNKNOWN);
+ }
+
+ public InterfaceType getInterfaceType() {
+ return interfaceType;
}
public DeploymentInfo getDeploymentInfo() {
@@ -53,10 +52,11 @@
}
public Class getInterface() {
- return type;
+ return proxyInterface;
}
public RpcContainer getBeanContainer() {
return beanContainer;
}
+
}
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreContext.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreContext.java?view=diff&rev=465182&r1=465181&r2=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreContext.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreContext.java Wed Oct 18 02:16:32 2006
@@ -24,6 +24,8 @@
import javax.transaction.TransactionManager;
import org.apache.openejb.RpcContainer;
+import org.apache.openejb.DeploymentInfo;
+import org.apache.openejb.InterfaceType;
import org.apache.openejb.spi.SecurityService;
import org.apache.openejb.core.ivm.EjbObjectProxyHandler;
import org.apache.openejb.util.proxy.ProxyManager;
@@ -90,7 +92,7 @@
ThreadContext threadContext = ThreadContext.getThreadContext();
org.apache.openejb.DeploymentInfo di = threadContext.getDeploymentInfo();
- EjbObjectProxyHandler handler = newEjbObjectHandler((RpcContainer) di.getContainer(), threadContext.getPrimaryKey(), di.getDeploymentID());
+ EjbObjectProxyHandler handler = newEjbObjectHandler((RpcContainer) di.getContainer(), threadContext.getPrimaryKey(), di.getDeploymentID(), InterfaceType.EJB_OBJECT);
Object newProxy = null;
try {
Class[] interfaces = new Class[]{di.getRemoteInterface(), org.apache.openejb.core.ivm.IntraVmProxy.class};
@@ -105,7 +107,7 @@
ThreadContext threadContext = ThreadContext.getThreadContext();
org.apache.openejb.DeploymentInfo di = threadContext.getDeploymentInfo();
- EjbObjectProxyHandler handler = newEjbObjectHandler((RpcContainer) di.getContainer(), threadContext.getPrimaryKey(), di.getDeploymentID());
+ EjbObjectProxyHandler handler = newEjbObjectHandler((RpcContainer) di.getContainer(), threadContext.getPrimaryKey(), di.getDeploymentID(), InterfaceType.EJB_LOCAL);
handler.setLocal(true);
Object newProxy = null;
try {
@@ -120,20 +122,25 @@
public Object getBusinessObject(Class interfce) {
// TODO: This implementation isn't complete
ThreadContext threadContext = ThreadContext.getThreadContext();
- org.apache.openejb.DeploymentInfo di = threadContext.getDeploymentInfo();
+ DeploymentInfo di = threadContext.getDeploymentInfo();
+
+
+ InterfaceType interfaceType;
- EjbObjectProxyHandler handler = newEjbObjectHandler((RpcContainer) di.getContainer(), threadContext.getPrimaryKey(), di.getDeploymentID());
Class businessLocalInterface = di.getBusinessLocalInterface();
if (businessLocalInterface != null && businessLocalInterface.getName().equals(interfce.getName())){
- handler.setLocal(true);
- } else if (di.getBusinessRemoteInterface() == null || !di.getBusinessRemoteInterface().getName().equals(interfce.getName())) {
+ interfaceType = InterfaceType.BUSINESS_LOCAL;
+ } else if (di.getBusinessRemoteInterface() == null && di.getBusinessRemoteInterface().getName().equals(interfce.getName())) {
+ interfaceType = InterfaceType.BUSINESS_REMOTE;
+ } else {
// TODO: verify if this is the right exception
throw new RuntimeException("Component has no such interface "+interfce.getName());
}
Object newProxy = null;
try {
+ EjbObjectProxyHandler handler = newEjbObjectHandler((RpcContainer) di.getContainer(), threadContext.getPrimaryKey(), di.getDeploymentID(), interfaceType);
Class[] interfaces = new Class[]{interfce, org.apache.openejb.core.ivm.IntraVmProxy.class};
newProxy = ProxyManager.newProxyInstance(interfaces, handler);
} catch (IllegalAccessException iae) {
@@ -233,5 +240,5 @@
throw new java.lang.UnsupportedOperationException();
}
- protected abstract EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID);
+ protected abstract EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType);
}
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java?view=diff&rev=465182&r1=465181&r2=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java Wed Oct 18 02:16:32 2006
@@ -32,6 +32,7 @@
import org.apache.openejb.RpcContainer;
import org.apache.openejb.SystemException;
import org.apache.openejb.ApplicationException;
+import org.apache.openejb.InterfaceType;
import org.apache.openejb.DeploymentInfo;
import org.apache.openejb.alt.containers.castor_cmp11.CastorCmpEntityTxPolicy;
import org.apache.openejb.alt.containers.castor_cmp11.KeyGenerator;
@@ -117,6 +118,7 @@
getComponentType(ejbType), null);
}
+
private static Class loadClass(String name, ClassLoader classLoader) throws SystemException {
try {
return classLoader.loadClass(name);
@@ -125,6 +127,20 @@
}
}
+ public Class getInterface(InterfaceType interfaceType) {
+ switch(interfaceType){
+ case EJB_HOME: return getHomeInterface();
+ case EJB_OBJECT: return getRemoteInterface();
+ case EJB_LOCAL_HOME: return getLocalHomeInterface();
+ case EJB_LOCAL: return getLocalInterface();
+ case BUSINESS_LOCAL: return getBusinessLocalInterface();
+ case BUSINESS_REMOTE: return getBusinessRemoteInterface();
+ case BUSINESS_REMOTE_HOME: return DeploymentInfo.BusinessRemoteHome.class;
+ case BUSINESS_LOCAL_HOME: return DeploymentInfo.BusinessLocalHome.class;
+ default: throw new IllegalStateException("Unexpected enum constant: " + interfaceType);
+ }
+ }
+
private static byte getComponentType(String name) throws SystemException {
if ("cmp".equalsIgnoreCase(name)) {
return CMP_ENTITY;
@@ -466,15 +482,15 @@
switch (getComponentType()) {
case STATEFUL:
- handler = new StatefulEjbHomeHandler((RpcContainer) container, null, getDeploymentID());
+ handler = new StatefulEjbHomeHandler((RpcContainer) container, null, getDeploymentID(), InterfaceType.EJB_HOME);
break;
case STATELESS:
- handler = new StatelessEjbHomeHandler((RpcContainer) container, null, getDeploymentID());
+ handler = new StatelessEjbHomeHandler((RpcContainer) container, null, getDeploymentID(), InterfaceType.EJB_HOME);
break;
case CMP_ENTITY:
case BMP_ENTITY:
- handler = new EntityEjbHomeHandler((RpcContainer) container, null, getDeploymentID());
+ handler = new EntityEjbHomeHandler((RpcContainer) container, null, getDeploymentID(), InterfaceType.EJB_HOME);
break;
}
@@ -497,15 +513,15 @@
switch (getComponentType()) {
case STATEFUL:
- handler = new StatefulEjbHomeHandler((RpcContainer) container, null, getDeploymentID());
+ handler = new StatefulEjbHomeHandler((RpcContainer) container, null, getDeploymentID(), InterfaceType.EJB_LOCAL_HOME);
break;
case STATELESS:
- handler = new StatelessEjbHomeHandler((RpcContainer) container, null, getDeploymentID());
+ handler = new StatelessEjbHomeHandler((RpcContainer) container, null, getDeploymentID(), InterfaceType.EJB_LOCAL_HOME);
break;
case CMP_ENTITY:
case BMP_ENTITY:
- handler = new EntityEjbHomeHandler((RpcContainer) container, null, getDeploymentID());
+ handler = new EntityEjbHomeHandler((RpcContainer) container, null, getDeploymentID(), InterfaceType.EJB_LOCAL_HOME);
break;
}
handler.setLocal(true);
@@ -527,11 +543,11 @@
switch (getComponentType()) {
case STATEFUL:
- handler = new StatefulEjbHomeHandler((RpcContainer) container, null, getDeploymentID());
+ handler = new StatefulEjbHomeHandler((RpcContainer) container, null, getDeploymentID(), InterfaceType.BUSINESS_LOCAL_HOME);
break;
case STATELESS:
- handler = new StatelessEjbHomeHandler((RpcContainer) container, null, getDeploymentID());
+ handler = new StatelessEjbHomeHandler((RpcContainer) container, null, getDeploymentID(), InterfaceType.BUSINESS_LOCAL_HOME);
break;
}
handler.setLocal(true);
@@ -550,11 +566,11 @@
switch (getComponentType()) {
case STATEFUL:
- handler = new StatefulEjbHomeHandler((RpcContainer) container, null, getDeploymentID());
+ handler = new StatefulEjbHomeHandler((RpcContainer) container, null, getDeploymentID(), InterfaceType.BUSINESS_REMOTE_HOME);
break;
case STATELESS:
- handler = new StatelessEjbHomeHandler((RpcContainer) container, null, getDeploymentID());
+ handler = new StatelessEjbHomeHandler((RpcContainer) container, null, getDeploymentID(), InterfaceType.BUSINESS_REMOTE_HOME);
break;
}
try {
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityContext.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityContext.java?view=diff&rev=465182&r1=465181&r2=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityContext.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityContext.java Wed Oct 18 02:16:32 2006
@@ -17,6 +17,7 @@
package org.apache.openejb.core.entity;
import org.apache.openejb.RpcContainer;
+import org.apache.openejb.InterfaceType;
import org.apache.openejb.spi.SecurityService;
import org.apache.openejb.core.Operations;
import org.apache.openejb.core.ThreadContext;
@@ -128,8 +129,8 @@
}
- protected EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID) {
- return new EntityEjbObjectHandler(container, pk, depID);
+ protected EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType) {
+ return new EntityEjbObjectHandler(container, pk, depID, interfaceType);
}
}
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=465182&r1=465181&r2=465182
==============================================================================
--- 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 Oct 18 02:16:32 2006
@@ -1,19 +1,19 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.apache.openejb.core.entity;
import java.lang.reflect.Method;
@@ -21,6 +21,7 @@
import org.apache.openejb.ProxyInfo;
import org.apache.openejb.RpcContainer;
+import org.apache.openejb.InterfaceType;
import org.apache.openejb.core.ivm.EjbHomeProxyHandler;
import org.apache.openejb.core.ivm.EjbObjectProxyHandler;
import org.apache.openejb.util.proxy.ProxyManager;
@@ -28,8 +29,8 @@
public class EntityEjbHomeHandler extends EjbHomeProxyHandler {
- public EntityEjbHomeHandler(RpcContainer container, Object pk, Object depID) {
- super(container, pk, depID);
+ public EntityEjbHomeHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType) {
+ super(container, pk, depID, interfaceType);
}
protected Object createProxy(ProxyInfo proxyInfo) {
@@ -93,8 +94,8 @@
return null;
}
- protected EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID) {
- return new EntityEjbObjectHandler(container, pk, depID);
+ protected EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType) {
+ return new EntityEjbObjectHandler(container, pk, depID, interfaceType);
}
}
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=465182&r1=465181&r2=465182
==============================================================================
--- 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 Oct 18 02:16:32 2006
@@ -20,6 +20,7 @@
import org.apache.openejb.Container;
import org.apache.openejb.RpcContainer;
+import org.apache.openejb.InterfaceType;
import org.apache.openejb.core.ivm.EjbObjectProxyHandler;
import org.apache.openejb.util.proxy.ProxyManager;
@@ -68,8 +69,8 @@
*/
private Object registryId;
- public EntityEjbObjectHandler(RpcContainer container, Object pk, Object depID) {
- super(container, pk, depID, null);
+ public EntityEjbObjectHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType) {
+ super(container, pk, depID, null, interfaceType);
}
/*
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=465182&r1=465181&r2=465182
==============================================================================
--- 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 Oct 18 02:16:32 2006
@@ -34,6 +34,7 @@
import javax.ejb.EJBException;
import org.apache.openejb.RpcContainer;
+import org.apache.openejb.InterfaceType;
import org.apache.openejb.spi.SecurityService;
import org.apache.openejb.spi.ContainerSystem;
import org.apache.openejb.loader.SystemInstance;
@@ -72,8 +73,10 @@
*/
protected boolean doIntraVmCopy;
private boolean isLocal;
+ protected final InterfaceType interfaceType;
- public BaseEjbProxyHandler(RpcContainer container, Object pk, Object depID) {
+ public BaseEjbProxyHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType) {
+ this.interfaceType = interfaceType;
this.container = container;
this.primaryKey = pk;
this.deploymentID = depID;
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=465182&r1=465181&r2=465182
==============================================================================
--- 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 Oct 18 02:16:32 2006
@@ -25,6 +25,7 @@
import org.apache.openejb.ProxyInfo;
import org.apache.openejb.RpcContainer;
+import org.apache.openejb.InterfaceType;
import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.spi.ApplicationServer;
import org.apache.openejb.core.ThreadContext;
@@ -43,8 +44,8 @@
dispatchTable.put("remove", new Integer(4));
}
- public EjbHomeProxyHandler(RpcContainer container, Object pk, Object depID) {
- super(container, pk, depID);
+ public EjbHomeProxyHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType) {
+ super(container, pk, depID, interfaceType);
}
public void invalidateReference() {
@@ -55,7 +56,15 @@
Object newProxy = null;
try {
- EjbObjectProxyHandler handler = newEjbObjectHandler(proxyInfo.getBeanContainer(), proxyInfo.getPrimaryKey(), proxyInfo.getDeploymentInfo().getDeploymentID());
+
+ InterfaceType interfaceType = InterfaceType.EJB_OBJECT;
+ switch(this.interfaceType){
+ case EJB_HOME: interfaceType = InterfaceType.EJB_OBJECT; break;
+ case EJB_LOCAL_HOME: interfaceType = InterfaceType.EJB_LOCAL; break;
+ case BUSINESS_REMOTE_HOME: interfaceType = InterfaceType.BUSINESS_REMOTE; break;
+ case BUSINESS_LOCAL_HOME: interfaceType = InterfaceType.BUSINESS_LOCAL; break;
+ }
+ EjbObjectProxyHandler handler = newEjbObjectHandler(proxyInfo.getBeanContainer(), proxyInfo.getPrimaryKey(), proxyInfo.getDeploymentInfo().getDeploymentID(), interfaceType);
handler.setLocal(isLocal());
handler.doIntraVmCopy = this.doIntraVmCopy;
Class[] interfaces = new Class[]{proxyInfo.getInterface(), IntraVmProxy.class};
@@ -68,7 +77,7 @@
return newProxy;
}
- protected abstract EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID);
+ protected abstract EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType);
protected Object _invoke(Object proxy, Method method, Object[] args) throws Throwable {
@@ -204,7 +213,7 @@
}
public org.apache.openejb.ProxyInfo getProxyInfo() {
- return new org.apache.openejb.ProxyInfo(deploymentInfo, null, deploymentInfo.getHomeInterface(), container);
+ return new org.apache.openejb.ProxyInfo(deploymentInfo, null, deploymentInfo.getHomeInterface(), container, interfaceType);
}
protected Object _writeReplace(Object proxy) throws ObjectStreamException {
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=465182&r1=465181&r2=465182
==============================================================================
--- 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 Oct 18 02:16:32 2006
@@ -21,6 +21,7 @@
import java.rmi.RemoteException;
import org.apache.openejb.RpcContainer;
+import org.apache.openejb.InterfaceType;
import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.spi.ApplicationServer;
@@ -38,8 +39,8 @@
dispatchTable.put("getEJBHome", new Integer(5));
}
- public EjbObjectProxyHandler(RpcContainer container, Object pk, Object depID, Class homeInterface) {
- super(container, pk, depID);
+ public EjbObjectProxyHandler(RpcContainer container, Object pk, Object depID, Class homeInterface, InterfaceType interfaceType) {
+ super(container, pk, depID, interfaceType);
}
public abstract Object getRegistryId();
@@ -137,7 +138,7 @@
}
public org.apache.openejb.ProxyInfo getProxyInfo() {
- return new org.apache.openejb.ProxyInfo(deploymentInfo, primaryKey, isLocal(), container);
+ return new org.apache.openejb.ProxyInfo(deploymentInfo, primaryKey, deploymentInfo.getInterface(interfaceType), container, interfaceType);
}
protected Object _writeReplace(Object proxy) throws ObjectStreamException {
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=465182&r1=465181&r2=465182
==============================================================================
--- 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 Oct 18 02:16:32 2006
@@ -23,6 +23,7 @@
import javax.ejb.HomeHandle;
import org.apache.openejb.ProxyInfo;
+import org.apache.openejb.InterfaceType;
import org.apache.openejb.core.entity.EntityEjbHomeHandler;
import org.apache.openejb.core.stateful.StatefulEjbHomeHandler;
import org.apache.openejb.core.stateless.StatelessEjbHomeHandler;
@@ -73,13 +74,13 @@
case org.apache.openejb.DeploymentInfo.BMP_ENTITY:
case org.apache.openejb.DeploymentInfo.CMP_ENTITY:
- return new EntityEjbHomeHandler(pi.getBeanContainer(), pi.getPrimaryKey(), pi.getDeploymentInfo().getDeploymentID());
+ return new EntityEjbHomeHandler(pi.getBeanContainer(), pi.getPrimaryKey(), pi.getDeploymentInfo().getDeploymentID(), InterfaceType.EJB_HOME);
case org.apache.openejb.DeploymentInfo.STATEFUL:
- return new StatefulEjbHomeHandler(pi.getBeanContainer(), pi.getPrimaryKey(), pi.getDeploymentInfo().getDeploymentID());
+ return new StatefulEjbHomeHandler(pi.getBeanContainer(), pi.getPrimaryKey(), pi.getDeploymentInfo().getDeploymentID(), InterfaceType.EJB_HOME);
case org.apache.openejb.DeploymentInfo.STATELESS:
- return new StatelessEjbHomeHandler(pi.getBeanContainer(), pi.getPrimaryKey(), pi.getDeploymentInfo().getDeploymentID());
+ return new StatelessEjbHomeHandler(pi.getBeanContainer(), pi.getPrimaryKey(), pi.getDeploymentInfo().getDeploymentID(), InterfaceType.EJB_HOME);
default:
throw new RuntimeException("Unknown EJB type: " + pi.getDeploymentInfo());
}
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContext.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContext.java?view=diff&rev=465182&r1=465181&r2=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContext.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContext.java Wed Oct 18 02:16:32 2006
@@ -17,6 +17,7 @@
package org.apache.openejb.core.stateful;
import org.apache.openejb.RpcContainer;
+import org.apache.openejb.InterfaceType;
import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.core.Operations;
import org.apache.openejb.core.ThreadContext;
@@ -112,8 +113,8 @@
}
- protected EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID) {
- return new StatefulEjbObjectHandler(container, pk, depID);
+ protected EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType) {
+ return new StatefulEjbObjectHandler(container, pk, depID, interfaceType);
}
public MessageContext getMessageContext() {
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=465182&r1=465181&r2=465182
==============================================================================
--- 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 Oct 18 02:16:32 2006
@@ -18,6 +18,7 @@
import org.apache.openejb.ProxyInfo;
import org.apache.openejb.RpcContainer;
+import org.apache.openejb.InterfaceType;
import org.apache.openejb.core.ivm.EjbHomeProxyHandler;
import org.apache.openejb.core.ivm.EjbObjectProxyHandler;
import org.apache.openejb.util.proxy.ProxyManager;
@@ -27,8 +28,8 @@
public class StatefulEjbHomeHandler extends EjbHomeProxyHandler {
- public StatefulEjbHomeHandler(RpcContainer container, Object pk, Object depID) {
- super(container, pk, depID);
+ public StatefulEjbHomeHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType) {
+ super(container, pk, depID, interfaceType);
}
protected Object createProxy(ProxyInfo proxyInfo) {
@@ -49,8 +50,8 @@
throw new RemoteException("Session objects are private resources and do not have primary keys");
}
- protected EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID) {
- return new StatefulEjbObjectHandler(container, pk, depID);
+ protected EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType) {
+ return new StatefulEjbObjectHandler(container, pk, depID, interfaceType);
}
}
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=465182&r1=465181&r2=465182
==============================================================================
--- 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 Oct 18 02:16:32 2006
@@ -17,6 +17,7 @@
package org.apache.openejb.core.stateful;
import org.apache.openejb.RpcContainer;
+import org.apache.openejb.InterfaceType;
import org.apache.openejb.core.ivm.EjbObjectProxyHandler;
import org.apache.openejb.util.proxy.ProxyManager;
@@ -25,8 +26,8 @@
public class StatefulEjbObjectHandler extends EjbObjectProxyHandler {
- public StatefulEjbObjectHandler(RpcContainer container, Object pk, Object depID) {
- super(container, pk, depID, null);
+ public StatefulEjbObjectHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType) {
+ super(container, pk, depID, null, interfaceType);
}
public Object getRegistryId() {
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessContext.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessContext.java?view=diff&rev=465182&r1=465181&r2=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessContext.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessContext.java Wed Oct 18 02:16:32 2006
@@ -17,6 +17,7 @@
package org.apache.openejb.core.stateless;
import org.apache.openejb.RpcContainer;
+import org.apache.openejb.InterfaceType;
import org.apache.openejb.core.CoreDeploymentInfo;
import org.apache.openejb.core.Operations;
import org.apache.openejb.core.ThreadContext;
@@ -102,8 +103,8 @@
}
- protected EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID) {
- return new StatelessEjbObjectHandler(container, pk, depID);
+ protected EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType) {
+ return new StatelessEjbObjectHandler(container, pk, depID, interfaceType);
}
public MessageContext getMessageContext() {
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=465182&r1=465181&r2=465182
==============================================================================
--- 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 Oct 18 02:16:32 2006
@@ -17,6 +17,7 @@
package org.apache.openejb.core.stateless;
import org.apache.openejb.RpcContainer;
+import org.apache.openejb.InterfaceType;
import org.apache.openejb.core.ThreadContext;
import org.apache.openejb.core.ivm.EjbHomeProxyHandler;
import org.apache.openejb.core.ivm.EjbObjectProxyHandler;
@@ -28,8 +29,8 @@
public class StatelessEjbHomeHandler extends EjbHomeProxyHandler {
- public StatelessEjbHomeHandler(RpcContainer container, Object pk, Object depID) {
- super(container, pk, depID);
+ public StatelessEjbHomeHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType) {
+ super(container, pk, depID, interfaceType);
}
protected Object findX(Method method, Object[] args, Object proxy) throws Throwable {
@@ -66,8 +67,8 @@
return null;
}
- protected EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID) {
- return new StatelessEjbObjectHandler(container, pk, depID);
+ protected EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType) {
+ return new StatelessEjbObjectHandler(container, pk, depID, interfaceType);
}
}
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=465182&r1=465181&r2=465182
==============================================================================
--- 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 Oct 18 02:16:32 2006
@@ -18,6 +18,7 @@
import org.apache.openejb.Container;
import org.apache.openejb.RpcContainer;
+import org.apache.openejb.InterfaceType;
import org.apache.openejb.core.ivm.EjbObjectProxyHandler;
import org.apache.openejb.util.proxy.ProxyManager;
@@ -27,8 +28,8 @@
public class StatelessEjbObjectHandler extends EjbObjectProxyHandler {
public Object registryId;
- public StatelessEjbObjectHandler(RpcContainer container, Object pk, Object depID) {
- super(container, pk, depID, null);
+ public StatelessEjbObjectHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType) {
+ super(container, pk, depID, null, interfaceType);
}
public static Object createRegistryId(Object primKey, Object deployId, Container contnr) {
Modified: incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java?view=diff&rev=465182&r1=465181&r2=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java (original)
+++ incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java Wed Oct 18 02:16:32 2006
@@ -93,51 +93,67 @@
String deploymentID = deployment.getDeploymentID().toString();
//DMB: HACK as proxyInfo.getInterface() reports the wrong interface, will fix that next.
- //Class interfce = proxyInfo.getInterface();
- Class interfce = getProxyInterface(object);
+ Class interfce = proxyInfo.getInterface();
+// Class interfce = getProxyInterface(object);
- if (handler instanceof EjbHomeProxyHandler && interfce.isAssignableFrom(deployment.getHomeInterface())){
- res.setResponseCode(JNDI_EJBHOME);
- EJBMetaDataImpl metaData = new EJBMetaDataImpl(deployment.getHomeInterface(),
- deployment.getRemoteInterface(),
- deployment.getPrimaryKeyClass(),
- deployment.getComponentType(),
- deploymentID,
- this.daemon.deploymentIndex.getDeploymentIndex(deploymentID));
- res.setResult(metaData);
- } else if (handler instanceof EjbHomeProxyHandler && interfce.isAssignableFrom(deployment.getLocalHomeInterface())){
- res.setResponseCode(JNDI_NAMING_EXCEPTION);
- res.setResult(new NamingException("Not remotable: '"+name+"'. EJBLocalHome interfaces are not remotable as per the EJB specification."));
- } else if (handler instanceof EjbObjectProxyHandler && interfce.isAssignableFrom(deployment.getBusinessRemoteInterface())){
- res.setResponseCode(JNDI_BUSINESS_OBJECT);
- EJBMetaDataImpl metaData = new EJBMetaDataImpl(null,
- deployment.getBusinessRemoteInterface(),
- deployment.getPrimaryKeyClass(),
- deployment.getComponentType(),
- deploymentID,
- this.daemon.deploymentIndex.getDeploymentIndex(deploymentID));
- Object[] data = {metaData, proxyInfo.getPrimaryKey()};
- res.setResult(data);
- } else if (handler instanceof EjbObjectProxyHandler && interfce.isAssignableFrom(deployment.getBusinessLocalInterface())){
- String property = SystemInstance.get().getProperty("openejb.businessLocal", "remotable");
- if (property.equalsIgnoreCase("remotable")) {
+ switch(proxyInfo.getInterfaceType()){
+ case EJB_HOME: {
+ res.setResponseCode(JNDI_EJBHOME);
+ EJBMetaDataImpl metaData = new EJBMetaDataImpl(deployment.getHomeInterface(),
+ deployment.getRemoteInterface(),
+ deployment.getPrimaryKeyClass(),
+ deployment.getComponentType(),
+ deploymentID,
+ this.daemon.deploymentIndex.getDeploymentIndex(deploymentID));
+ res.setResult(metaData);
+ break;
+ }
+ case EJB_LOCAL_HOME: {
+ res.setResponseCode(JNDI_NAMING_EXCEPTION);
+ res.setResult(new NamingException("Not remotable: '"+name+"'. EJBLocalHome interfaces are not remotable as per the EJB specification."));
+ break;
+ }
+ case BUSINESS_REMOTE: {
res.setResponseCode(JNDI_BUSINESS_OBJECT);
EJBMetaDataImpl metaData = new EJBMetaDataImpl(null,
- deployment.getBusinessLocalInterface(),
+ deployment.getBusinessRemoteInterface(),
deployment.getPrimaryKeyClass(),
deployment.getComponentType(),
deploymentID,
this.daemon.deploymentIndex.getDeploymentIndex(deploymentID));
Object[] data = {metaData, proxyInfo.getPrimaryKey()};
res.setResult(data);
- } else {
+ break;
+ }
+ case BUSINESS_LOCAL: {
+ String property = SystemInstance.get().getProperty("openejb.businessLocal", "remotable");
+ if (property.equalsIgnoreCase("remotable")) {
+ res.setResponseCode(JNDI_BUSINESS_OBJECT);
+ EJBMetaDataImpl metaData = new EJBMetaDataImpl(null,
+ deployment.getBusinessLocalInterface(),
+ deployment.getPrimaryKeyClass(),
+ deployment.getComponentType(),
+ deploymentID,
+ this.daemon.deploymentIndex.getDeploymentIndex(deploymentID));
+ Object[] data = {metaData, proxyInfo.getPrimaryKey()};
+ res.setResult(data);
+ } else {
+ res.setResponseCode(JNDI_NAMING_EXCEPTION);
+ res.setResult(new NamingException("Not remotable: '"+name+"'. Business Local interfaces are not remotable as per the EJB specification. To disable this restriction, set the system property 'openejb.businessLocal=remotable' in the server."));
+ }
+ break;
+ }
+ default: {
res.setResponseCode(JNDI_NAMING_EXCEPTION);
- res.setResult(new NamingException("Not remotable: '"+name+"'. Business Local interfaces are not remotable as per the EJB specification. To disable this restriction, set the system property 'openejb.businessLocal=remotable' in the server."));
+ res.setResult(new NamingException("Not remotable: '"+name+"'."));
}
- } else {
- res.setResponseCode(JNDI_NAMING_EXCEPTION);
- res.setResult(new NamingException("Not remotable: '"+name+"'."));
}
+// if (handler instanceof EjbHomeProxyHandler && interfce.isAssignableFrom(deployment.getHomeInterface())){
+// } else if (handler instanceof EjbHomeProxyHandler && interfce.isAssignableFrom(deployment.getLocalHomeInterface())){
+// } else if (handler instanceof EjbObjectProxyHandler && interfce.isAssignableFrom(deployment.getBusinessRemoteInterface())){
+// } else if (handler instanceof EjbObjectProxyHandler && interfce.isAssignableFrom(deployment.getBusinessLocalInterface())){
+// } else {
+// }
res.writeExternal(out);
}