dain 2004/04/15 22:34:05
Modified: modules/core/src/java/org/openejb
AbstractContainerBuilder.java ContainerBuilder.java
EJBContainer.java GenericEJBContainer.java
InstanceContextFactory.java
Log:
Changed container id to a String
Simplified requirements to create an EJBProxyFactory
EJBProxyFactory is now constructed in the GenericEJBContainer constructor
Change ProxyRefAddress to store the class names instead of a proxy info
object; this allows the construction of an ejb-ref without knowing the
container type
Merged stateless and stateful object base classes into a single class,
which simplifies proxy construction
Revision Changes Path
1.10 +12 -10
openejb/modules/core/src/java/org/openejb/AbstractContainerBuilder.java
Index: AbstractContainerBuilder.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/AbstractContainerBuilder.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- AbstractContainerBuilder.java 14 Apr 2004 04:49:43 -0000 1.9
+++ AbstractContainerBuilder.java 16 Apr 2004 02:34:05 -0000 1.10
@@ -76,7 +76,7 @@
*/
public abstract class AbstractContainerBuilder implements ContainerBuilder {
private ClassLoader classLoader;
- private Object containerId;
+ private String containerId;
private String ejbName;
private String beanClassName;
private String homeInterfaceName;
@@ -102,11 +102,11 @@
this.classLoader = classLoader;
}
- public Object getContainerId() {
+ public String getContainerId() {
return containerId;
}
- public void setContainerId(Object containerId) {
+ public void setContainerId(String containerId) {
this.containerId = containerId;
}
@@ -266,7 +266,7 @@
return interceptorBuilder;
}
- protected EJBProxyFactory createProxyFactory(InterfaceMethodSignature[]
signatures) throws ClassNotFoundException {
+ protected ProxyInfo createProxyInfo() throws ClassNotFoundException {
ClassLoader classLoader = getClassLoader();
Class homeInterface = loadOptionalClass(homeInterfaceName, classLoader);
Class remoteInterface = loadOptionalClass(remoteInterfaceName, classLoader);
@@ -281,7 +281,7 @@
localHomeInterface,
localInterface,
primaryKeyClass);
- return new EJBProxyFactory(proxyInfo);
+ return proxyInfo;
}
protected SoftLimitedInstancePool createInstancePool(InstanceFactory
instanceFactory) {
@@ -296,16 +296,17 @@
}
protected EJBContainer createContainer(
- EJBProxyFactory proxyFactory,
InterfaceMethodSignature[] signatures,
+ InstanceContextFactory contextFactory,
InterceptorBuilder interceptorBuilder,
InstancePool pool) throws Exception {
return new GenericEJBContainer(
getContainerId(),
getEJBName(),
- proxyFactory,
+ createProxyInfo(),
signatures,
+ contextFactory,
interceptorBuilder,
pool,
getUserTransaction(),
@@ -316,16 +317,17 @@
}
protected GBeanMBean createConfiguration(
- EJBProxyFactory proxyFactory,
InterfaceMethodSignature[] signatures,
+ InstanceContextFactory contextFactory,
InterceptorBuilder interceptorBuilder,
InstancePool pool) throws Exception {
GBeanMBean gbean = new GBeanMBean(GenericEJBContainer.GBEAN_INFO);
gbean.setAttribute("ContainerID", getContainerId());
gbean.setAttribute("EJBName", getEJBName());
- gbean.setAttribute("ProxyFactory", proxyFactory);
+ gbean.setAttribute("ProxyInfo", createProxyInfo());
gbean.setAttribute("Signatures", signatures);
+ gbean.setAttribute("ContextFactory", contextFactory);
gbean.setAttribute("InterceptorBuilder", interceptorBuilder);
gbean.setAttribute("Pool", pool);
gbean.setAttribute("UserTransaction", getUserTransaction());
1.4 +3 -3 openejb/modules/core/src/java/org/openejb/ContainerBuilder.java
Index: ContainerBuilder.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/ContainerBuilder.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ContainerBuilder.java 9 Apr 2004 19:04:00 -0000 1.3
+++ ContainerBuilder.java 16 Apr 2004 02:34:05 -0000 1.4
@@ -37,9 +37,9 @@
void setClassLoader(ClassLoader classLoader);
- Object getContainerId();
+ String getContainerId();
- void setContainerId(Object containerId);
+ void setContainerId(String containerId);
String getEJBName();
1.6 +4 -1 openejb/modules/core/src/java/org/openejb/EJBContainer.java
Index: EJBContainer.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/EJBContainer.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- EJBContainer.java 13 Apr 2004 20:18:49 -0000 1.5
+++ EJBContainer.java 16 Apr 2004 02:34:05 -0000 1.6
@@ -56,6 +56,7 @@
import org.apache.geronimo.core.service.Interceptor;
import org.openejb.proxy.EJBProxyFactory;
+import org.openejb.proxy.ProxyInfo;
import org.openejb.dispatch.InterfaceMethodSignature;
/**
@@ -134,4 +135,6 @@
InterfaceMethodSignature[] getSignatures();
+ ProxyInfo getProxyInfo();
+
}
1.10 +20 -7
openejb/modules/core/src/java/org/openejb/GenericEJBContainer.java
Index: GenericEJBContainer.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/GenericEJBContainer.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- GenericEJBContainer.java 14 Apr 2004 03:27:22 -0000 1.9
+++ GenericEJBContainer.java 16 Apr 2004 02:34:05 -0000 1.10
@@ -69,6 +69,7 @@
import org.openejb.client.EJBObjectProxy;
import org.openejb.dispatch.InterfaceMethodSignature;
import org.openejb.proxy.EJBProxyFactory;
+import org.openejb.proxy.ProxyInfo;
/**
* @version $Revision$ $Date$
@@ -79,6 +80,7 @@
private final String ejbName;
private final Interceptor interceptor;
+ private final ProxyInfo proxyInfo;
private final EJBProxyFactory proxyFactory;
private final InterfaceMethodSignature[] signatures;
@@ -88,8 +90,9 @@
public GenericEJBContainer(
Object containerId,
String ejbName,
- EJBProxyFactory proxyFactory,
+ ProxyInfo proxyInfo,
InterfaceMethodSignature[] signatures,
+ InstanceContextFactory contextFactory,
InterceptorBuilder interceptorBuilder,
InstancePool pool,
UserTransactionImpl userTransaction,
@@ -116,8 +119,12 @@
this.signatures = signatures;
// initialize the proxy factory
- proxyFactory.setContainer(this);
- this.proxyFactory = proxyFactory;
+ this.proxyInfo = proxyInfo;
+ this.proxyFactory = new EJBProxyFactory(this);
+
+ // give the contextFactory a reference to the proxyFactory
+ // after this there is no reason to hold on to a reference to the
contextFactory
+ contextFactory.setProxyFactory(proxyFactory);
// build the interceptor chain
interceptorBuilder.setTransactionManager(transactionManager);
@@ -222,6 +229,10 @@
return proxyFactory.getEJBLocalObject(primaryKey);
}
+ public ProxyInfo getProxyInfo() {
+ return proxyInfo;
+ }
+
public EJBProxyFactory getProxyFactory() {
return proxyFactory;
}
@@ -263,13 +274,14 @@
GBeanInfoFactory infoFactory = new
GBeanInfoFactory(GenericEJBContainer.class);
infoFactory.setConstructor(
- new String[]{"ContainerID", "EJBName", "ProxyFactory",
"Signatures", "InterceptorBuilder", "Pool", "UserTransaction", "JndiNames",
"LocalJndiNames", "TransactionManager", "TrackedConnectionAssociator"},
- new Class[]{Object.class, String.class, EJBProxyFactory.class,
InterfaceMethodSignature[].class, InterceptorBuilder.class, InstancePool.class,
UserTransactionImpl.class, String[].class, String[].class, TransactionManager.class,
TrackedConnectionAssociator.class});
+ new String[]{"ContainerID", "EJBName", "ProxyInfo", "Signatures",
"ContextFactory", "InterceptorBuilder", "Pool", "UserTransaction", "JndiNames",
"LocalJndiNames", "TransactionManager", "TrackedConnectionAssociator"},
+ new Class[]{Object.class, String.class, ProxyInfo.class,
InterfaceMethodSignature[].class, InstanceContextFactory.class,
InterceptorBuilder.class, InstancePool.class, UserTransactionImpl.class,
String[].class, String[].class, TransactionManager.class,
TrackedConnectionAssociator.class});
infoFactory.addAttribute("ContainerID", true);
infoFactory.addAttribute("EJBName", true);
- infoFactory.addAttribute("ProxyFactory", true);
+ infoFactory.addAttribute("ProxyInfo", true);
infoFactory.addAttribute("Signatures", true);
+ infoFactory.addAttribute("ContextFactory", true);
infoFactory.addAttribute("InterceptorBuilder", true);
infoFactory.addAttribute("Pool", true);
infoFactory.addAttribute("UserTransaction", true);
@@ -278,6 +290,7 @@
infoFactory.addReference("TransactionManager", TransactionManager.class);
infoFactory.addReference("TrackedConnectionAssociator",
TrackedConnectionAssociator.class);
+ infoFactory.addAttribute("ProxyFactory", false);
infoFactory.addAttribute("EJBHome", false);
infoFactory.addAttribute("EJBLocalHome", false);
infoFactory.addAttribute("UnmanagedReference", false);
1.2 +5 -1
openejb/modules/core/src/java/org/openejb/InstanceContextFactory.java
Index: InstanceContextFactory.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/InstanceContextFactory.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- InstanceContextFactory.java 21 Mar 2004 21:26:34 -0000 1.1
+++ InstanceContextFactory.java 16 Apr 2004 02:34:05 -0000 1.2
@@ -49,6 +49,8 @@
import org.apache.geronimo.transaction.InstanceContext;
+import org.openejb.proxy.EJBProxyFactory;
+
/**
*
@@ -57,4 +59,6 @@
*/
public interface InstanceContextFactory {
InstanceContext newInstance() throws Exception;
+
+ void setProxyFactory(EJBProxyFactory proxyFactory);
}