Author: thomas.heute(a)jboss.com
Date: 2008-10-08 06:53:50 -0400 (Wed, 08 Oct 2008)
New Revision: 12048
Modified:
modules/common/trunk/mc/src/main/java/org/jboss/portal/common/mc/bootstrap/WebBootstrap.java
Log:
Reworked web bootstrap and added a prefix to services in ServletContext
Modified:
modules/common/trunk/mc/src/main/java/org/jboss/portal/common/mc/bootstrap/WebBootstrap.java
===================================================================
---
modules/common/trunk/mc/src/main/java/org/jboss/portal/common/mc/bootstrap/WebBootstrap.java 2008-10-08
08:35:45 UTC (rev 12047)
+++
modules/common/trunk/mc/src/main/java/org/jboss/portal/common/mc/bootstrap/WebBootstrap.java 2008-10-08
10:53:50 UTC (rev 12048)
@@ -32,6 +32,7 @@
import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
import org.jboss.beans.metadata.plugins.AbstractValueMetaData;
import org.jboss.beans.metadata.plugins.AbstractConstructorMetaData;
+import org.jboss.beans.metadata.spi.BeanMetaData;
import org.apache.log4j.Logger;
import javax.servlet.ServletContext;
@@ -39,6 +40,7 @@
import javax.servlet.ServletContextEvent;
import java.net.URL;
import java.net.MalformedURLException;
+import java.util.List;
/**
* <p>A kernel bootstrap with a life cycle triggered by the
<code>ServletContextListener</code> interface.
@@ -54,9 +56,10 @@
* @todo implement kernel validate ?
*
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @author <a href="mailto:theute@jboss.org">Thomas Heute</a>
* @version $Revision: 1.1 $
*/
-public class WebBootstrap implements ServletContextListener, KernelEventListener
+public class WebBootstrap implements ServletContextListener
{
/**
@@ -84,6 +87,9 @@
/** Classloader resource type. */
public static final String CLASSLOADER_RESOURCE_TYPE = "classloader";
+ /** Prefix to bean service names in the servlet context */
+ public static final String BEAN_PREFIX = "jboss.portal:service=";
+
/** . */
private final static Logger log = Logger.getLogger(WebBootstrap.class);
@@ -97,7 +103,7 @@
private KernelDeployment deployment;
/** . */
- private boolean registered;
+// private boolean registered;
/** . */
private ActualBootstrap bootstrap;
@@ -105,6 +111,7 @@
/** . */
private KernelControllerContext servletContextControllerContext;
+
public void contextInitialized(ServletContextEvent event)
{
servletContext = event.getServletContext();
@@ -143,61 +150,28 @@
}
//
- if (registered)
- {
- registered = false;
- try
- {
- KernelRegistry registry = bootstrap.getKernel().getRegistry();
- registry.unregisterListener(this, null, "ABC");
- }
- catch (Throwable throwable)
- {
- log.error("Cannot unregister kernel registry listener",
throwable);
- }
- }
-
- //
servletContext = null;
//
log.info("Web kernel stopped");
}
- public void onEvent(KernelEvent event, Object object)
+ /**
+ * Register a MC Bean in the servlet context prefixed with WebBoostrap.BEAN_PREFIX
+ */
+ private void registerBean(BeanMetaData bean)
{
- Object context = event.getContext();
- if (context instanceof String)
- {
- String key = (String)context;
-
- // We add/remove every bean except the servlet context itself...
- if (!"ServletContext".equals(key))
- {
- String type = event.getType();
- if ("KERNEL_REGISTRY_REGISTERED".equals(type))
- {
- KernelRegistryEntry entry =
bootstrap.getKernel().getRegistry().getEntry(context);
- Object target = entry.getTarget();
-
- servletContext.setAttribute(key, target);
- }
- else if ("KERNEL_REGISTRY_UNREGISTERED".equals(type))
- {
- servletContext.removeAttribute(key);
- }
- }
- }
+ KernelRegistryEntry entry =
bootstrap.getKernel().getRegistry().getEntry(bean.getName());
+ Object target = entry.getTarget();
+
+ servletContext.setAttribute(BEAN_PREFIX + bean.getName(), target);
}
void boostrap() throws Throwable
{
- bootstrap.getKernel().getRegistry().registerListener(WebBootstrap.this, null,
"ABC");
- registered = true;
-
//
deployer = new BeanXMLDeployer(bootstrap.getKernel());
-
+/*
//
AbstractBeanMetaData beanMD = new AbstractBeanMetaData("ServletContext",
ServletContext.class.getName());
AbstractConstructorMetaData ctorMD = new AbstractConstructorMetaData();
@@ -205,7 +179,7 @@
ctorMD.setFactoryMethod("getInstance");
beanMD.setConstructor(ctorMD);
servletContextControllerContext =
bootstrap.getKernel().getController().install(beanMD);
-
+*/
//
URL url = getBeansURL();
@@ -215,6 +189,12 @@
log.debug("About to deploy beans url=" + url);
deployment = deployer.deploy(url);
deployer.validate(deployment);
+
+ List<BeanMetaData> beans = deployment.getBeans();
+ for (BeanMetaData bean: beans)
+ {
+ registerBean(bean);
+ }
}
else
{
Show replies by date