User: salborini
Date: 00/08/11 17:40:45
Modified: src/main/org/jboss/ejb Application.java Container.java
ContainerFactory.java
Log:
Modifications to use the new metadata package
Revision Changes Path
1.6 +3 -3 jboss/src/main/org/jboss/ejb/Application.java
Index: Application.java
===================================================================
RCS file: /products/cvs/ejboss/jboss/src/main/org/jboss/ejb/Application.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- Application.java 2000/07/06 20:36:44 1.5
+++ Application.java 2000/08/12 00:40:44 1.6
@@ -20,7 +20,7 @@
* @see Container
* @see ContainerFactory
* @author Rickard �berg ([EMAIL PROTECTED])
- * @version $Revision: 1.5 $
+ * @version $Revision: 1.6 $
*/
public class Application
implements Service
@@ -50,7 +50,7 @@
*/
public void addContainer(Container con)
{
- containers.put(con.getMetaData().getEjbName(), con);
+ containers.put(con.getBeanMetaData().getEjbName(), con);
con.setApplication(this);
}
@@ -62,7 +62,7 @@
*/
public void removeContainer(Container con)
{
- containers.remove(con.getMetaData().getEjbName());
+ containers.remove(con.getBeanMetaData().getEjbName());
}
1.22 +48 -207 jboss/src/main/org/jboss/ejb/Container.java
Index: Container.java
===================================================================
RCS file: /products/cvs/ejboss/jboss/src/main/org/jboss/ejb/Container.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- Container.java 2000/08/07 18:42:25 1.21
+++ Container.java 2000/08/12 00:40:44 1.22
@@ -39,31 +39,20 @@
import javax.transaction.TransactionManager;
import javax.sql.DataSource;
-import javax.swing.tree.TreeModel;
-import javax.swing.tree.DefaultMutableTreeNode;
-import javax.swing.JCheckBox;
-
-import org.jboss.ejb.deployment.jBossEnterpriseBean;
-import com.dreambean.ejx.ejb.EnvironmentEntry;
-import org.jboss.ejb.deployment.jBossEjbJar;
-import org.jboss.ejb.deployment.jBossEjbReference;
-import org.jboss.ejb.deployment.jBossResourceReference;
-import org.jboss.ejb.deployment.ResourceManagers;
-import org.jboss.ejb.deployment.ResourceManager;
-import org.jboss.ejb.deployment.JDBCResource;
-import org.jboss.ejb.deployment.URLResource;
import org.jboss.logging.Logger;
-import org.jboss.metadata.BeanMetaData;
import org.jboss.system.EJBSecurityManager;
import org.jboss.system.RealmMapping;
+import org.jboss.metadata.BeanMetaData;
+import org.jboss.metadata.EnvEntryMetaData;
+import org.jboss.metadata.EjbRefMetaData;
+import org.jboss.metadata.ResourceRefMetaData;
+import org.jboss.metadata.ApplicationMetaData;
+
import org.jnp.interfaces.Naming;
import org.jnp.interfaces.java.javaURLContextFactory;
import org.jnp.server.NamingServer;
-import com.dreambean.ejx.ejb.AssemblyDescriptor;
-import com.dreambean.ejx.ejb.MethodPermission;
-
/**
* This is the base class for all EJB-containers in jBoss. A Container
* functions as the central hub of all metadata and plugins. Through this
@@ -78,7 +67,7 @@
* @see ContainerFactory
* @author Rickard �berg ([EMAIL PROTECTED])
* @author <a href="[EMAIL PROTECTED]">Marc Fleury</a>
- * @version $Revision: 1.21 $
+ * @version $Revision: 1.22 $
*/
public abstract class Container
{
@@ -92,12 +81,10 @@
// This is the classloader of this container. All classes and resources that
// the bean uses will be loaded from here. By doing this we make the bean
re-deployable
protected ClassLoader classLoader;
-
- // This is the jBoss-specific metadata. Note that it extends the generic EJB
1.1 class from EJX
- protected jBossEnterpriseBean metaData;
- // This is the assembly descriptor information
- protected AssemblyDescriptor assemblyDescriptor;
+ // This is the new metadata. it includes information from both ejb-jar and
jboss.xml
+ // the metadata for the application can be accessed trough
metaData.getApplicationMetaData()
+ protected BeanMetaData metaData;
// This is the Home interface class
protected Class homeInterface;
@@ -117,9 +104,6 @@
// This is the realm mapping
protected RealmMapping rm;
- // This is the new MetaData construct
- protected BeanMetaData newMetaData;
-
// This is a cache for method permissions
private HashMap methodPermissionsCache = new HashMap();
@@ -219,7 +203,7 @@
*
* @param metaData
*/
- public void setMetaData(jBossEnterpriseBean metaData)
+ public void setBeanMetaData(BeanMetaData metaData)
{
this.metaData = metaData;
}
@@ -229,151 +213,25 @@
*
* @return metaData;
*/
- public jBossEnterpriseBean getMetaData()
+ public BeanMetaData getBeanMetaData()
{
return metaData;
}
- /**
- * Sets the assembly descriptor for this container. The meta data consists of
the
- * properties found in the XML descriptors.
- *
- * @param assemblyDescriptor
- */
- public void setAssemblyDescriptor(AssemblyDescriptor assemblyDescriptor)
- {
- this.assemblyDescriptor = assemblyDescriptor;
- }
-
- /**
- * Returns the assembly descriptor of this container.
- *
- * @return assemblyDescriptor;
- */
- public AssemblyDescriptor getAssemblyDescriptor()
- {
- return assemblyDescriptor;
- }
-
- private void addRoles( Collection roles, Set permissions )
- {
- Iterator iter = roles.iterator();
- while (iter.hasNext())
- {
- JCheckBox checkBox = (JCheckBox) iter.next();
- if (checkBox.isSelected())
- permissions.add( checkBox.getLabel() );
- }
- }
-
/**
- * Returns the permissions for a method.
+ * Returns the permissions for a method. (a set of roles)
*
* @return assemblyDescriptor;
*/
public Set getMethodPermissions( Method m, boolean home )
{
Set permissions = (Set) methodPermissionsCache.get( m );
- if (permissions != null)
- return permissions;
- permissions = new HashSet();
-
- Iterator iterPermissions = assemblyDescriptor.getMethodPermissions();
- // go fishing in ejx's tree to build method permissions
- while (iterPermissions.hasNext())
- {
- MethodPermission methodPermission =
- (MethodPermission) iterPermissions.next();
- Collection roles = methodPermission.getRoles();
- TreeModel model = methodPermission.getMethods();
- int count = model.getChildCount( model.getRoot() );
- // look at the specific grants in a method permission
- boolean rolesAdded_shouldBreak = false; // if we're in an inner loop
- for (int iter=0; iter<count; iter++)
- {
- DefaultMutableTreeNode beannode =
- (DefaultMutableTreeNode) model.getChild( model.getRoot(), iter );
- com.dreambean.ejx.ejb.Method bean =
- (com.dreambean.ejx.ejb.Method)beannode.getUserObject();
-
- // check if this is the bean under consideration
- if (!bean.getEjbName().equals( metaData.getEjbName() ))
- continue;
-
- // see if everything in the bean is selected regardless of interface
- if (bean.isSelected())
- {
- addRoles( roles, permissions );
- break;
- }
-
- // depends on ejb ordering home then remote (could check name)
- DefaultMutableTreeNode interfaceNode = (DefaultMutableTreeNode)
- beannode.getChildAt( home ? 0 : 1 );
- com.dreambean.ejx.ejb.Method beaninterface =
- (com.dreambean.ejx.ejb.Method) interfaceNode.getUserObject();
- // see if everything in the interface is selected regardless of method
- if (beaninterface.isSelected())
- {
- addRoles( roles, permissions );
- break;
- }
-
- // check the method
- Enumeration enumMethods = interfaceNode.children();
- while (enumMethods.hasMoreElements())
- {
- DefaultMutableTreeNode methodNode =
- (DefaultMutableTreeNode) enumMethods.nextElement();
- com.dreambean.ejx.ejb.Method beanmethod =
- (com.dreambean.ejx.ejb.Method) methodNode.getUserObject();
-
- // name doesn't match
- if (!beanmethod.getMethodName().equals( m.getName() ))
- continue;
-
- String[] descriptorParams = beanmethod.getParams();
- Class[] declaredParams = m.getParameterTypes();
-
- // different number of parameters
- if (descriptorParams.length != declaredParams.length)
- continue;
-
- boolean paramDoesntMatch = false;
- for (int iterParams=0; iterParams<descriptorParams.length; iterParams++)
- {
- if (!descriptorParams[iterParams].equals(
declaredParams[iterParams].getName() ))
- {
- paramDoesntMatch = true;
- break;
- }
- }
- if (paramDoesntMatch)
- continue;
-
- if (beanmethod.isSelected())
- {
- addRoles( roles, permissions );
- rolesAdded_shouldBreak = true; // outer loop
- // (could also use label)
- }
- break; // we've already found the method
- }
- if (rolesAdded_shouldBreak)
- break;
- }
- }
- methodPermissionsCache.put( m, permissions );
- return permissions;
- }
-
- // the following two methods use the new metadata structures from
- // package org.jboss.metadata
- public void setBeanMetaData(BeanMetaData metaData) {
- newMetaData = metaData;
- }
- public BeanMetaData getBeanMetaData() {
- return newMetaData;
+ if (permissions == null) {
+ permissions =
getBeanMetaData().getMethodPermissions(m.getName(), m.getParameterTypes(), !home);
+ methodPermissionsCache.put(m, permissions);
+ }
+ return permissions;
+
}
/**
@@ -497,10 +355,10 @@
// Bind environment properties
{
- Iterator enum = getMetaData().getEnvironmentEntries();
+ Iterator enum = getBeanMetaData().getEnvironmentEntries();
while(enum.hasNext())
{
- EnvironmentEntry entry = (EnvironmentEntry)enum.next();
+ EnvEntryMetaData entry = (EnvEntryMetaData)enum.next();
if (entry.getType().equals("java.lang.Integer"))
{
bind(ctx, entry.getName(), new Integer(entry.getValue()));
@@ -533,62 +391,48 @@
// Bind EJB references
{
- Iterator enum = getMetaData().getEjbReferences();
+ Iterator enum = getBeanMetaData().getEjbReferences();
while(enum.hasNext())
{
-
- jBossEjbReference ref = (jBossEjbReference)enum.next();
- System.out.println("Binding an EJBReference "+ref);
- Name n = ctx.getNameParser("").parse(ref.getLink());
+ EjbRefMetaData ref = (EjbRefMetaData)enum.next();
+ System.out.println("Binding an EJBReference "+ref.getName());
- if (!ref.getJndiName().equals(""))
+ if (ref.getLink() != null)
{
// External link
- Logger.debug("Binding "+ref.getName()+" to external JNDI source:
"+ref.getJndiName());
- bind(ctx, ref.getName(), new LinkRef(ref.getJndiName()));
+ Logger.debug("Binding "+ref.getName()+" to external JNDI source:
"+ref.getLink());
+ bind(ctx, ref.getName(), new LinkRef(ref.getLink()));
}
else
{
// Internal link
- Logger.debug("Bind "+ref.getName() +" to "+ref.getLink());
-
- final Container con =
getApplication().getContainer(ref.getLink());
-
- // Use Reference to link to ensure lazyloading.
- // Otherwise we might try to get EJBHome from not yet
initialized container
- // will would result in nullpointer exception
- RefAddr refAddr = new RefAddr("EJB")
- {
- public Object getContent()
- {
- return con;
- }
- };
- Reference reference = new
Reference("javax.ejb.EJBObject",refAddr, new
EjbReferenceFactory().getClass().getName(), null);
-
- bind(ctx, ref.getName(), reference);
+ String link =
getBeanMetaData().getApplicationMetaData().getJndiFromHome(ref.getHome());
+ Logger.debug("Binding "+ref.getName()+" to internal
JNDI source: "+link);
+ bind(ctx, ref.getName(), new LinkRef(link));
}
}
}
// Bind resource references
{
- Iterator enum = getMetaData().getResourceReferences();
+ Iterator enum = getBeanMetaData().getResourceReferences();
// let's play guess the cast game ;) New metadata should fix this.
- ResourceManagers rms =
((jBossEjbJar)getMetaData().getBeanContext().getBeanContext()).getResourceManagers();
+ ApplicationMetaData application =
getBeanMetaData().getApplicationMetaData();
+
while(enum.hasNext())
{
- jBossResourceReference ref = (jBossResourceReference)enum.next();
+ ResourceRefMetaData ref = (ResourceRefMetaData)enum.next();
- ResourceManager rm = rms.getResourceManager(ref.getResourceName());
-
- if (rm == null)
- {
- // Try to locate defaults
- if (ref.getType().equals("javax.sql.DataSource"))
- {
+ String resourceName = ref.getResourceName();
+ String finalName =
application.getResourceByName(resourceName);
+
+ if (finalName == null) {
+ // the application assembler did not provide a
resource manager
+ // if the type is javax.sql.Datasoure we try
to find default
+
+ if
(ref.getType().equals("javax.sql.DataSource")) {
// Go through JNDI and look for DataSource - use the
first one
Context dsCtx = new InitialContext();
NamingEnumeration list = dsCtx.list("");
@@ -602,8 +446,7 @@
{
// Found it!!
Logger.log("Using default
DataSource:"+pair.getName());
- rm = new JDBCResource();
-
((JDBCResource)rm).setJndiName(pair.getName());
+ finalName = pair.getName();
list.close();
break;
}
@@ -617,25 +460,23 @@
// Default failed? Warn user and move on
// POTENTIALLY DANGEROUS: should this be a critical error?
- if (rm == null)
+ if (finalName == null)
{
Logger.warning("No resource manager found for
"+ref.getResourceName());
continue;
}
}
- if (rm.getType().equals("javax.sql.DataSource"))
+ if (ref.getType().equals("javax.sql.DataSource"))
{
// Datasource bindings
- JDBCResource res = (JDBCResource)rm;
- bind(ctx, ref.getName(), new LinkRef(res.getJndiName()));
- } else if (rm.getType().equals("java.net.URL"))
+ bind(ctx, ref.getRefName(), new LinkRef(finalName));
+ } else if (ref.getType().equals("java.net.URL"))
{
// URL bindings
try
{
- URLResource res = (URLResource)rm;
- bind(ctx, ref.getName(), new URL(res.getUrl()));
+ bind(ctx, ref.getRefName(), new URL(finalName));
} catch (MalformedURLException e)
{
throw new NamingException("Malformed URL:"+e.getMessage());
1.28 +99 -126 jboss/src/main/org/jboss/ejb/ContainerFactory.java
Index: ContainerFactory.java
===================================================================
RCS file: /products/cvs/ejboss/jboss/src/main/org/jboss/ejb/ContainerFactory.java,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -r1.27 -r1.28
--- ContainerFactory.java 2000/08/06 21:35:59 1.27
+++ ContainerFactory.java 2000/08/12 00:40:44 1.28
@@ -32,16 +32,6 @@
import javax.management.ObjectName;
import javax.transaction.TransactionManager;
-import org.jboss.ejb.deployment.jBossEjbJar;
-import org.jboss.ejb.deployment.jBossFileManager;
-import org.jboss.ejb.deployment.jBossFileManagerFactory;
-import org.jboss.ejb.deployment.jBossEnterpriseBean;
-import org.jboss.ejb.deployment.jBossEnterpriseBeans;
-import org.jboss.ejb.deployment.jBossSession;
-import org.jboss.ejb.deployment.jBossEntity;
-import org.jboss.ejb.deployment.ContainerConfiguration;
-import org.jboss.ejb.deployment.ContainerConfigurations;
-
import org.jboss.logging.Log;
import org.jboss.logging.ConsoleLogging;
import org.jboss.logging.ConsoleLoggingMBean;
@@ -58,6 +48,15 @@
import org.jboss.system.EJBSecurityManager;
import org.jboss.system.RealmMapping;
+import org.jboss.metadata.ApplicationMetaData;
+import org.jboss.metadata.BeanMetaData;
+import org.jboss.metadata.SessionMetaData;
+import org.jboss.metadata.EntityMetaData;
+import org.jboss.metadata.ConfigurationMetaData;
+import org.jboss.metadata.XmlLoadable;
+import org.jboss.metadata.XmlFileLoader;
+
+
/**
* A ContainerFactory is used to deploy EJB applications. It can be given a URL to
* an EJB-jar or EJB-JAR XML file, which will be used to instantiate containers and
make
@@ -68,7 +67,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Marc Fleury</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Juha Lindfors</a>
*
-* @version $Revision: 1.27 $
+* @version $Revision: 1.28 $
*/
public class ContainerFactory
extends org.jboss.util.ServiceMBeanSupport
@@ -225,8 +224,27 @@
// Check if already deployed -> undeploy first, this is
re-deploy
if (deployments.containsKey(url))
undeploy(url);
+
+
+ app.setURL(url);
- // Check validity
+ log.log("Deploying:"+url);
+
+ // Create the ClassLoader for this application
+ // TODO : the ClassLoader should come from the JMX manager if
we want to be able to share it (tomcat)
+ ClassLoader cl = new URLClassLoader(new URL[] { url },
Thread.currentThread().getContextClassLoader());
+
+ // Create a file loader with which to load the files
+ XmlFileLoader efm = new XmlFileLoader();
+
+ // the file manager gets its file from the classloader
+ efm.setClassLoader(cl);
+
+ // Load XML
+ ApplicationMetaData metaData = efm.load();
+
+
+ // Check validity
Log.setLog(new Log("Verifier"));
// wrapping this into a try - catch block to prevent errors in
@@ -248,7 +266,7 @@
Log.getLog().log("Verifying " + url);
- verifier.verify(url);
+ verifier.verify(url, metaData);
}
}
catch (Throwable t) {
@@ -258,51 +276,21 @@
// unset verifier log
Log.unsetLog();
-
- app.setURL(url);
-
- log.log("Deploying:"+url);
-
- // Create a file manager with which to load the files
- jBossFileManagerFactory fact = new jBossFileManagerFactory();
- jBossFileManager efm =
(jBossFileManager)fact.createFileManager();
-
- // Setup beancontext
- BeanContextServicesSupport beanCtx = new
BeanContextServicesSupport();
- beanCtx.add(Beans.instantiate(getClass().getClassLoader(),
"com.dreambean.ejx.xml.ProjectX"));
- beanCtx.add(efm);
-
- // Load XML
- jBossEjbJar jar;
- if (url.getProtocol().startsWith("file"))
- {
- // This will copy the jar first so it isn't locked by
the CL
- efm.load(new File(url.getFile()));
- jar = efm.getEjbJar();
- }
- else
- {
- jar = efm.load(url);
- }
- // Create classloader for this application
-// ClassLoader cl = new EJBClassLoader(new URL[] {url}, null,
jar.isSecure());
- ClassLoader cl = efm.getClassLoader();
-
// Get list of beans for which we will create containers
- Iterator beans = jar.getEnterpriseBeans().iterator();
+ Iterator beans = metaData.getEnterpriseBeans();
// Deploy beans
Context ctx = new InitialContext();
while(beans.hasNext())
{
- jBossEnterpriseBean bean =
(jBossEnterpriseBean)beans.next();
+ BeanMetaData bean = (BeanMetaData)beans.next();
log.log("Deploying "+bean.getEjbName());
- if (bean instanceof jBossSession) // Is session?
+ if (bean.isSession()) // Is session?
{
- if
(((jBossSession)bean).getSessionType().equals("Stateless")) // Is stateless?
+ if (((SessionMetaData)bean).isStateless()) //
Is stateless?
{
// Create container
StatelessSessionContainer container =
new StatelessSessionContainer();
@@ -311,43 +299,35 @@
container.setClassLoader(new
BeanClassLoader(cl));
// Set metadata
- container.setMetaData(bean);
-
- // use the new metadata classes in org.jboss.metadata
-
container.setBeanMetaData(efm.getMetaData().getBean(bean.getEjbName()));
+ container.setBeanMetaData(bean);
- // set assembly descriptor info
- container.setAssemblyDescriptor(jar.getAssemblyDescriptor() );
-
+ // get the container configuration for
this bean
+ // a default configuration is now
always provided
+ ConfigurationMetaData conf =
bean.getContainerConfiguration();
+
// Set transaction manager
-
container.setTransactionManager((TransactionManager)new
InitialContext().lookup("TransactionManager"));
-
+
container.setTransactionManager((TransactionManager)cl.loadClass(conf.getTransactionManager()).newInstance());
+
// Set security manager (should be
chosen based on container config)
container.setSecurityManager((EJBSecurityManager)new
InitialContext().lookup("EJBSecurityManager"));
-
- // Set realm mapping (should be chosen based on container config)
- container.setRealmMapping( (RealmMapping)new
InitialContext().lookup("SimpleRealmMapping"));
- // Get container configuration
- ContainerConfiguration conf =
bean.getContainerConfiguration();
-
- // Make sure we have a default
configuration
- if (conf == null)
- {
- log.warning("No configuration
chosen. Using default configuration");
-
- // Get the container default
configuration
- conf =
jar.getContainerConfigurations().getContainerConfiguration(DEFAULT_STATELESS_CONFIGURATION);
-
- // Make sure this bean knows
the configuration he is using
-
bean.setConfigurationName(DEFAULT_STATELESS_CONFIGURATION);
- }
+ // Set realm mapping (should be chosen based on
container config)
+ container.setRealmMapping( (RealmMapping)new
InitialContext().lookup("SimpleRealmMapping"));
// Set container invoker
-
container.setContainerInvoker((ContainerInvoker)cl.loadClass(conf.getContainerInvoker()).newInstance());
+ ContainerInvoker ci =
(ContainerInvoker)cl.loadClass(conf.getContainerInvoker()).newInstance();
+ if (ci instanceof XmlLoadable) {
+ // the container invoker can
load its configuration from the jboss.xml element
+
((XmlLoadable)ci).importXml(conf.getContainerInvokerConf());
+ }
+ container.setContainerInvoker(ci);
// Set instance pool
-
container.setInstancePool((InstancePool)cl.loadClass(conf.getInstancePool()).newInstance());
+ InstancePool ip =
(InstancePool)cl.loadClass(conf.getInstancePool()).newInstance();
+ if (ip instanceof XmlLoadable) {
+
((XmlLoadable)ip).importXml(conf.getContainerPoolConf());
+ }
+ container.setInstancePool(ip);
// Create interceptors
@@ -363,10 +343,6 @@
app.addContainer(container);
} else // Stateful
{
- boolean implemented = false;
-
- //if (!implemented) throw new
Error("Stateful Container not implemented yet");
-
// Create container
StatefulSessionContainer container =
new StatefulSessionContainer();
@@ -374,34 +350,37 @@
container.setClassLoader(new
BeanClassLoader(cl));
// Set metadata
- container.setMetaData(bean);
-
container.setBeanMetaData(efm.getMetaData().getBean(bean.getEjbName()));
+ container.setBeanMetaData(bean);
// Set transaction manager
container.setTransactionManager((TransactionManager)new
InitialContext().lookup("TransactionManager"));
-
- // Get container configuration
- ContainerConfiguration conf =
bean.getContainerConfiguration();
- // Make sure we have a default
configuration
- if (conf == null)
- {
- log.warning("No configuration
chosen. Using default configuration");
+ // Set security manager (should be
chosen based on container config)
+
container.setSecurityManager((EJBSecurityManager)new
InitialContext().lookup("EJBSecurityManager"));
- conf =
jar.getContainerConfigurations().getContainerConfiguration(DEFAULT_STATEFUL_CONFIGURATION);
+ // Set realm mapping (should be chosen based on
container config)
+ container.setRealmMapping( (RealmMapping)new
InitialContext().lookup("SimpleRealmMapping"));
- // Make sure this bean knows
the configuration he is using
-
bean.setConfigurationName(DEFAULT_STATEFUL_CONFIGURATION);
- }
+ // Get container configuration
+ ConfigurationMetaData conf =
bean.getContainerConfiguration();
// Set container invoker
-
container.setContainerInvoker((ContainerInvoker)cl.loadClass(conf.getContainerInvoker()).newInstance());
+ ContainerInvoker ci =
(ContainerInvoker)cl.loadClass(conf.getContainerInvoker()).newInstance();
+ if (ci instanceof XmlLoadable) {
+ // the container invoker can
load its configuration from the jboss.xml element
+
((XmlLoadable)ci).importXml(conf.getContainerInvokerConf());
+ }
+ container.setContainerInvoker(ci);
// Set instance cache
-
container.setInstanceCache((InstanceCache)cl.loadClass(conf.getInstanceCache()).newInstance());
+ InstanceCache ic =
(InstanceCache)cl.loadClass(conf.getInstanceCache()).newInstance();
+ if (ic instanceof XmlLoadable) {
+
((XmlLoadable)ic).importXml(conf.getContainerCacheConf());
+ }
+ container.setInstanceCache(ic);
- // Set instance pool
-
container.setInstancePool((InstancePool)cl.loadClass(conf.getInstancePool()).newInstance());
+ // No real instance pool, use the
shadow class
+ container.setInstancePool(new
StatefulSessionInstancePool());
// Set persistence manager
container.setPersistenceManager((StatefulSessionPersistenceManager)cl.loadClass(conf.getPersistenceManager()).newInstance());
@@ -426,50 +405,44 @@
container.setClassLoader(new
BeanClassLoader(cl));
// Set metadata
- container.setMetaData(bean);
-
container.setBeanMetaData(efm.getMetaData().getBean(bean.getEjbName()));
+ container.setBeanMetaData(bean);
// Set transaction manager
container.setTransactionManager((TransactionManager)new
InitialContext().lookup("TransactionManager"));
-
- // Get container configuration
- ContainerConfiguration conf =
bean.getContainerConfiguration();
-
- // Make sure we have a default configuration
- if (conf == null)
- {
- log.warning("No configuration chosen.
Using default configuration");
- if (((jBossEntity)
bean).getPersistenceType().equals("Bean"))
- {
- // BMP case
- conf =
jar.getContainerConfigurations().getContainerConfiguration(DEFAULT_ENTITY_BMP_CONFIGURATION);
- // Make sure this bean knows
the configuration he is using
-
bean.setConfigurationName(DEFAULT_ENTITY_BMP_CONFIGURATION);
+ // Set security manager (should be chosen
based on container config)
+
container.setSecurityManager((EJBSecurityManager)new
InitialContext().lookup("EJBSecurityManager"));
- }
- else
- {
- // CMP case
- conf =
jar.getContainerConfigurations().getContainerConfiguration(DEFAULT_ENTITY_CMP_CONFIGURATION);
+ // Set realm mapping (should be chosen based
on container config)
+ container.setRealmMapping( (RealmMapping)new
InitialContext().lookup("SimpleRealmMapping"));
- // Make sure this bean knows
the configuration he is using
-
bean.setConfigurationName(DEFAULT_ENTITY_CMP_CONFIGURATION);
-
- }
- }
+ // Get container configuration
+ ConfigurationMetaData conf =
bean.getContainerConfiguration();
// Set container invoker
-
container.setContainerInvoker((ContainerInvoker)cl.loadClass(conf.getContainerInvoker()).newInstance());
+ ContainerInvoker ci =
(ContainerInvoker)cl.loadClass(conf.getContainerInvoker()).newInstance();
+ if (ci instanceof XmlLoadable) {
+ // the container invoker can load its
configuration from the jboss.xml element
+
((XmlLoadable)ci).importXml(conf.getContainerInvokerConf());
+ }
+ container.setContainerInvoker(ci);
// Set instance cache
-
container.setInstanceCache((InstanceCache)cl.loadClass(conf.getInstanceCache()).newInstance());
+ InstanceCache ic =
(InstanceCache)cl.loadClass(conf.getInstanceCache()).newInstance();
+ if (ic instanceof XmlLoadable) {
+
((XmlLoadable)ic).importXml(conf.getContainerCacheConf());
+ }
+ container.setInstanceCache(ic);
// Set instance pool
-
container.setInstancePool((InstancePool)cl.loadClass(conf.getInstancePool()).newInstance());
+ InstancePool ip =
(InstancePool)cl.loadClass(conf.getInstancePool()).newInstance();
+ if (ip instanceof XmlLoadable) {
+
((XmlLoadable)ip).importXml(conf.getContainerPoolConf());
+ }
+ container.setInstancePool(ip);
// Set persistence manager
- if (((jBossEntity)
bean).getPersistenceType().equals("Bean")) {
+ if (((EntityMetaData) bean).isBMP()) {
//Should be BMPPersistenceManager
container.setPersistenceManager((EntityPersistenceManager)cl.loadClass(conf.getPersistenceManager()).newInstance());