[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