[jboss-cvs] JBossAS SVN: r87997 - in projects/ejb3/trunk/embedded/src/main: java/org/jboss/ejb3/embedded/deployers and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Apr 29 10:01:15 EDT 2009


Author: wolfc
Date: 2009-04-29 10:01:15 -0400 (Wed, 29 Apr 2009)
New Revision: 87997

Added:
   projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/registrar/
   projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/registrar/Ejb3RegistrarService.java
Modified:
   projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployers/EjbComponentDeployer.java
   projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployers/EjbModuleDeployer.java
   projects/ejb3/trunk/embedded/src/main/resources/deploy/ejb-container-beans.xml
   projects/ejb3/trunk/embedded/src/main/resources/deploy/ejb-deployers-beans.xml
Log:
EJBTHREE-1816: installing Ejb3Registrar as a MC bean

Modified: projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployers/EjbComponentDeployer.java
===================================================================
--- projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployers/EjbComponentDeployer.java	2009-04-29 13:43:29 UTC (rev 87996)
+++ projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployers/EjbComponentDeployer.java	2009-04-29 14:01:15 UTC (rev 87997)
@@ -21,6 +21,9 @@
  */
 package org.jboss.ejb3.embedded.deployers;
 
+import java.util.Collections;
+import java.util.Set;
+
 import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.beans.metadata.spi.DemandMetaData;
 import org.jboss.beans.metadata.spi.DependencyMetaData;
@@ -44,6 +47,8 @@
  */
 public class EjbComponentDeployer extends AbstractSimpleRealDeployer<JBossEnterpriseBeanMetaData>
 {
+   private Set<String> additionalContainerDependencies;
+   
    public EjbComponentDeployer()
    {
       super(JBossEnterpriseBeanMetaData.class);
@@ -55,6 +60,11 @@
 
    protected void addDependencies(BeanMetaDataBuilder builder, DeploymentUnit unit, EJBContainer component)
    {
+      for(String dependency : additionalContainerDependencies)
+      {
+         builder.addDependency(dependency);
+      }
+      
       // TODO: ask something else for that name
       builder.addDependency("org.jboss.ejb3.deployment:" + unit.getParent().getSimpleName());
       
@@ -101,8 +111,38 @@
       DeploymentUnit parent = unit.getParent();
       assert parent != null : "parent should not be null of component " + unit;
       
+      BeanMetaData bmd = builder.getBeanMetaData();
+      
+      log.debug("deploying bean: " + bmd.getName());
+      log.debug("  with dependencies:");
+      for (DependencyMetaData dependency : in(bmd.getDepends()))
+      {
+         log.debug("\t" + dependency.getDependency());
+      }
+      log.debug("  and demands:");
+      for(DemandMetaData dmd : in(bmd.getDemands()))
+      {
+         log.debug("\t" + dmd.getDemand());
+      }
+      log.debug("  and supplies:");
+      for(SupplyMetaData smd : in(bmd.getSupplies()))
+      {
+         log.debug("\t" + smd.getSupply());
+      }
+      
       // add the bean meta data to the parent, because else scope merging won't occur (whatever that is)
       // (e.g. the bean won't get injected)
-      parent.addAttachment(BeanMetaData.class + ":" + componentName, builder.getBeanMetaData());
+      parent.addAttachment(BeanMetaData.class + ":" + componentName, bmd);
    }
+   
+   private static <T> Set<T> in(Set<T> c)
+   {
+      if(c != null) return c;
+      return Collections.emptySet();
+   }
+   
+   public void setAdditionalContainerDependencies(Set<String> s)
+   {
+      this.additionalContainerDependencies = s;
+   }
 }

Modified: projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployers/EjbModuleDeployer.java
===================================================================
--- projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployers/EjbModuleDeployer.java	2009-04-29 13:43:29 UTC (rev 87996)
+++ projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployers/EjbModuleDeployer.java	2009-04-29 14:01:15 UTC (rev 87997)
@@ -22,8 +22,6 @@
 package org.jboss.ejb3.embedded.deployers;
 
 import org.jboss.beans.metadata.api.annotations.Inject;
-import org.jboss.beans.metadata.api.annotations.Start;
-import org.jboss.beans.metadata.api.annotations.Stop;
 import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
 import org.jboss.deployers.spi.DeploymentException;
@@ -32,9 +30,6 @@
 import org.jboss.deployers.structure.spi.DeploymentUnit;
 import org.jboss.ejb3.DeploymentScope;
 import org.jboss.ejb3.Ejb3Deployment;
-import org.jboss.ejb3.common.registrar.plugin.mc.Ejb3McRegistrar;
-import org.jboss.ejb3.common.registrar.spi.Ejb3Registrar;
-import org.jboss.ejb3.common.registrar.spi.Ejb3RegistrarLocator;
 import org.jboss.ejb3.embedded.deployment.EjbDeployment;
 import org.jboss.ejb3.embedded.deployment.EmbeddedEjb3DeploymentUnit;
 import org.jboss.jpa.resolvers.PersistenceUnitDependencyResolver;
@@ -141,45 +136,4 @@
    {
       this.persistenceUnitDependencyResolver = resolver;
    }
-   
-   /**
-    * LifeCycle Start
-    * 
-    * Responsible for Binding an MC-based EJB3 Registrar Object Store
-    * 
-    * @author ALR
-    * @throws Throwable
-    */
-   @Start
-   public void start() throws Throwable
-   {
-      // FIXME: do all this stuff in beans.xml
-      
-      // Bind an EJB3 Registrar Implementation if not already bound
-      if (!Ejb3RegistrarLocator.isRegistrarBound())
-      {
-         // Obtain the Kernel
-         Kernel sanders = this.kernel;
-         assert sanders != null : Kernel.class.getSimpleName() + " must be provided in order to bind "
-               + Ejb3Registrar.class.getSimpleName();
-
-         // Create an EJB3 Registrar
-         Ejb3Registrar registrar = new Ejb3McRegistrar(sanders);
-
-         // Bind Registrar to the Locator
-         Ejb3RegistrarLocator.bindRegistrar(registrar);
-         
-         // Log
-         log.debug("Bound " + Ejb3Registrar.class.getSimpleName() + " to static "
-               + Ejb3RegistrarLocator.class.getSimpleName());
-      }
-   }
-   
-   @Stop
-   public void stop()
-   {
-      // FIXME: see start
-      if(Ejb3RegistrarLocator.isRegistrarBound())
-         Ejb3RegistrarLocator.unbindRegistrar();
-   }
 }

Added: projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/registrar/Ejb3RegistrarService.java
===================================================================
--- projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/registrar/Ejb3RegistrarService.java	                        (rev 0)
+++ projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/registrar/Ejb3RegistrarService.java	2009-04-29 14:01:15 UTC (rev 87997)
@@ -0,0 +1,76 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.embedded.registrar;
+
+import org.jboss.beans.metadata.api.annotations.Inject;
+import org.jboss.ejb3.common.registrar.plugin.mc.Ejb3McRegistrar;
+import org.jboss.ejb3.common.registrar.spi.DuplicateBindException;
+import org.jboss.ejb3.common.registrar.spi.Ejb3Registrar;
+import org.jboss.ejb3.common.registrar.spi.Ejb3RegistrarLocator;
+import org.jboss.kernel.Kernel;
+import org.jboss.logging.Logger;
+
+/**
+ * Boot up the Ejb3Registrar.
+ * 
+ * Don't use the Ejb3Registrar. Instead obtain reference to MC beans via injection, so
+ * that dependencies are properly setup.
+ * 
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+ at Deprecated
+public class Ejb3RegistrarService
+{
+   private static final Logger log = Logger.getLogger(Ejb3RegistrarService.class);
+   
+   private Kernel kernel;
+   
+   private Ejb3Registrar registrar;
+   
+   public Ejb3Registrar getRegistrar()
+   {
+      return registrar;
+   }
+   
+   @Inject(bean="jboss.kernel:service=Kernel")
+   public void setKernel(Kernel kernel)
+   {
+      this.kernel = kernel;
+   }
+   
+   public void start() throws DuplicateBindException
+   {
+      log.info("Starting (deprecated) Ejb3RegistrarService");
+      
+      registrar = new Ejb3McRegistrar(kernel);
+      
+      Ejb3RegistrarLocator.bindRegistrar(registrar);
+   }
+   
+   public void stop()
+   {
+      log.info("Stopping (deprecated) Ejb3RegistrarService");
+      
+      Ejb3RegistrarLocator.unbindRegistrar();
+   }
+}

Modified: projects/ejb3/trunk/embedded/src/main/resources/deploy/ejb-container-beans.xml
===================================================================
--- projects/ejb3/trunk/embedded/src/main/resources/deploy/ejb-container-beans.xml	2009-04-29 13:43:29 UTC (rev 87996)
+++ projects/ejb3/trunk/embedded/src/main/resources/deploy/ejb-container-beans.xml	2009-04-29 14:01:15 UTC (rev 87997)
@@ -8,4 +8,14 @@
    <bean name="EmbeddedCachedConnectionManagerBridge" class="org.jboss.ejb3.embedded.connectionmanager.EmbeddedCachedConnectionManager"/>
    
    <bean name="EmbeddedXPCResolver" class="org.jboss.ejb3.stateful.EJB3XPCResolver"/>
+   
+   <!-- The Ejb3Registrar provides static access to the kernel -->
+   <!-- It should actually not be used. -->
+   <bean name="Ejb3RegistrarService" class="org.jboss.ejb3.embedded.registrar.Ejb3RegistrarService"/>
+   
+   <bean name="Ejb3Registrar">
+      <constructor factoryMethod="getRegistrar">
+         <factory bean="Ejb3RegistrarService"/>
+      </constructor>
+   </bean>
 </deployment>

Modified: projects/ejb3/trunk/embedded/src/main/resources/deploy/ejb-deployers-beans.xml
===================================================================
--- projects/ejb3/trunk/embedded/src/main/resources/deploy/ejb-deployers-beans.xml	2009-04-29 13:43:29 UTC (rev 87996)
+++ projects/ejb3/trunk/embedded/src/main/resources/deploy/ejb-deployers-beans.xml	2009-04-29 14:01:15 UTC (rev 87997)
@@ -61,6 +61,12 @@
    <bean name="EjbModuleDeployer" class="org.jboss.ejb3.embedded.deployers.EjbModuleDeployer"/>
    <bean name="EjbComponentDeployer" class="org.jboss.ejb3.embedded.deployers.EjbComponentDeployer">
       <depends>org.jboss.ejb3.RemotingConnector</depends>
+      <property name="additionalContainerDependencies">
+         <set elementClass="java.lang.String">
+            <!-- We need the registrar so proxy can bind/unbind -->
+            <value>Ejb3Registrar</value>
+         </set>
+      </property>
    </bean>
 
    <bean name="MessageDestinationReferenceResolver" class="org.jboss.ejb3.embedded.resolvers.EmbeddedMessageDestinationReferenceResolver"/>




More information about the jboss-cvs-commits mailing list