You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by David Jencks <da...@yahoo.com> on 2007/03/13 03:27:03 UTC

Re: svn commit: r517486 - in /geronimo/server/trunk: configs/openejb/src/plan/ modules/geronimo-connector-builder/src/main/java/org/apache/geronimo/connector/deployment/ modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/ modules/geroni...

Is there some reason you didn't use the activationSpecInfo map which  
already had the info you put into messageListenerToActivationSpec map  
and a lot more besides?

I prefer to put this info in the ResourceAdapterModuleimpl which  
represents the rar file rather than the ResourceAdapterWrapper which  
represents an individual instance of a resource adapter specified by  
the rar file to avoid duplication, but it doesn't make a lot of  
difference.

At some point we should make it so only one copy of this data is  
stuffed into gbeans, whether it's the simplified data you have or the  
fuller representation I had, and take it out of whatever gbeans  
aren't being used.

thanks
david jencks

On Mar 12, 2007, at 9:30 PM, dain@apache.org wrote:

> Author: dain
> Date: Mon Mar 12 18:30:24 2007
> New Revision: 517486
>
> URL: http://svn.apache.org/viewvc?view=rev&rev=517486
> Log:
> Add support for MDB deployment
>
> Modified:
>     geronimo/server/trunk/configs/openejb/src/plan/plan.xml
>     geronimo/server/trunk/modules/geronimo-connector-builder/src/ 
> main/java/org/apache/geronimo/connector/deployment/ 
> ConnectorModuleBuilder.java
>     geronimo/server/trunk/modules/geronimo-connector/src/main/java/ 
> org/apache/geronimo/connector/ResourceAdapterWrapper.java
>     geronimo/server/trunk/modules/geronimo-connector/src/main/java/ 
> org/apache/geronimo/connector/ResourceAdapterWrapperGBean.java
>     geronimo/server/trunk/modules/geronimo-openejb-builder/geronimo- 
> openejb.xml
>     geronimo/server/trunk/modules/geronimo-openejb-builder/src/main/ 
> java/org/apache/geronimo/openejb/deployment/EjbModuleBuilder.java
>     geronimo/server/trunk/modules/geronimo-openejb/src/main/java/ 
> org/apache/geronimo/openejb/OpenEjbSystemGBean.java
>     geronimo/server/trunk/modules/geronimo-persistence-jpa10- 
> builder/src/main/java/org/apache/geronimo/persistence/builder/ 
> PersistenceContextRefBuilder.java
>
> Modified: geronimo/server/trunk/configs/openejb/src/plan/plan.xml
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/configs/ 
> openejb/src/plan/plan.xml?view=diff&rev=517486&r1=517485&r2=517486
> ====================================================================== 
> ========
> --- geronimo/server/trunk/configs/openejb/src/plan/plan.xml (original)
> +++ geronimo/server/trunk/configs/openejb/src/plan/plan.xml Mon Mar  
> 12 18:30:24 2007
> @@ -24,6 +24,7 @@
>          <reference name="TransactionManager">
>              <name>TransactionManager</name>
>          </reference>
> +        <reference name="ResourceAdapterWrappers"/>
>      </gbean>
>
>      <gbean name="DefaultStatelessContainer"  
> class="org.apache.geronimo.openejb.EjbContainer">
>
> Modified: geronimo/server/trunk/modules/geronimo-connector-builder/ 
> src/main/java/org/apache/geronimo/connector/deployment/ 
> ConnectorModuleBuilder.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/ 
> geronimo-connector-builder/src/main/java/org/apache/geronimo/ 
> connector/deployment/ConnectorModuleBuilder.java? 
> view=diff&rev=517486&r1=517485&r2=517486
> ====================================================================== 
> ========
> --- geronimo/server/trunk/modules/geronimo-connector-builder/src/ 
> main/java/org/apache/geronimo/connector/deployment/ 
> ConnectorModuleBuilder.java (original)
> +++ geronimo/server/trunk/modules/geronimo-connector-builder/src/ 
> main/java/org/apache/geronimo/connector/deployment/ 
> ConnectorModuleBuilder.java Mon Mar 12 18:30:24 2007
> @@ -33,6 +33,7 @@
>  import java.util.LinkedHashMap;
>  import java.util.Map;
>  import java.util.Set;
> +import java.util.TreeMap;
>  import java.util.jar.JarFile;
>  import java.util.zip.ZipEntry;
>
> @@ -99,7 +100,17 @@
>  import org.apache.geronimo.naming.deployment.ENCConfigBuilder;
>  import org.apache.geronimo.naming.reference.ResourceReference;
>  import org.apache.geronimo.schema.SchemaConversionUtils;
> -import org.apache.geronimo.xbeans.geronimo.*;
> +import  
> org.apache.geronimo.xbeans.geronimo.GerAdminobjectInstanceType;
> +import org.apache.geronimo.xbeans.geronimo.GerAdminobjectType;
> +import  
> org.apache.geronimo.xbeans.geronimo.GerConfigPropertySettingType;
> +import  
> org.apache.geronimo.xbeans.geronimo.GerConnectionDefinitionType;
> +import  
> org.apache.geronimo.xbeans.geronimo.GerConnectiondefinitionInstanceTyp 
> e;
> +import org.apache.geronimo.xbeans.geronimo.GerConnectionmanagerType;
> +import org.apache.geronimo.xbeans.geronimo.GerConnectorDocument;
> +import org.apache.geronimo.xbeans.geronimo.GerConnectorType;
> +import org.apache.geronimo.xbeans.geronimo.GerPartitionedpoolType;
> +import org.apache.geronimo.xbeans.geronimo.GerResourceadapterType;
> +import org.apache.geronimo.xbeans.geronimo.GerSinglepoolType;
>  import org.apache.geronimo.xbeans.j2ee.ActivationspecType;
>  import org.apache.geronimo.xbeans.j2ee.AdminobjectType;
>  import org.apache.geronimo.xbeans.j2ee.ConfigPropertyType;
> @@ -407,6 +418,17 @@
>              GBeanData resourceAdapterGBeanData = setUpDynamicGBean 
> (resourceAdapterInfoBuilder, resourceadapter.getConfigPropertyArray 
> (), cl);
>
>              resourceAdapterGBeanData.setAttribute 
> ("resourceAdapterClass", resourceadapter.getResourceadapterClass 
> ().getStringValue().trim());
> +
> +            // Add map from messageListenerInterface to  
> activationSpec class
> +            Map<String,String> messageListenerToActivationSpecMap  
> = new TreeMap<String,String>();
> +            for (MessagelistenerType messagelistenerType :  
> resourceadapter.getInboundResourceadapter().getMessageadapter 
> ().getMessagelistenerArray()) {
> +                String messageListenerInterface =  
> messagelistenerType.getMessagelistenerType().getStringValue().trim();
> +                ActivationspecType activationspec =  
> messagelistenerType.getActivationspec();
> +                String activationSpecClassName =  
> activationspec.getActivationspecClass().getStringValue().trim();
> +                messageListenerToActivationSpecMap.put 
> (messageListenerInterface, activationSpecClassName);
> +                resourceAdapterGBeanData.setAttribute 
> ("messageListenerToActivationSpecMap",  
> messageListenerToActivationSpecMap);
> +            }
> +
>              resourceAdapterModuleData.setAttribute 
> ("resourceAdapterGBeanData", resourceAdapterGBeanData);
>          }
>
> @@ -439,8 +461,8 @@
>
>          GBeanData jcaResourceData = new GBeanData 
> (jcaResourcejsr77Name, JCAResourceImplGBean.GBEAN_INFO);
>          Map thisModule = new LinkedHashMap(2);
> -        thisModule .put(NameFactory.J2EE_APPLICATION,  
> resourceAdapterModuleName.getNameProperty 
> (NameFactory.J2EE_APPLICATION));
> -        thisModule .put(NameFactory.RESOURCE_ADAPTER_MODULE,  
> resourceAdapterModuleName.getNameProperty(NameFactory.J2EE_NAME));
> +        thisModule.put(NameFactory.J2EE_APPLICATION,  
> resourceAdapterModuleName.getNameProperty 
> (NameFactory.J2EE_APPLICATION));
> +        thisModule.put(NameFactory.RESOURCE_ADAPTER_MODULE,  
> resourceAdapterModuleName.getNameProperty(NameFactory.J2EE_NAME));
>          jcaResourceData.setReferencePattern("ConnectionFactories",  
> new AbstractNameQuery(resourceAdapterModuleName.getArtifact(),  
> thisModule, JCAConnectionFactory.class.getName()));
>          jcaResourceData.setReferencePattern("ResourceAdapters",  
> new AbstractNameQuery(resourceAdapterModuleName.getArtifact(),  
> thisModule, JCAResourceAdapter.class.getName()));
>          jcaResourceData.setReferencePattern("AdminObjects", new  
> AbstractNameQuery(resourceAdapterModuleName.getArtifact(),  
> thisModule, JCAAdminObject.class.getName()));
> @@ -556,7 +578,6 @@
>              }
>          }
>      }
> -
>      private Map getActivationSpecInfoMap(MessagelistenerType[]  
> messagelistenerArray, ClassLoader cl) throws DeploymentException {
>          Map activationSpecInfos = new HashMap();
>          for (int i = 0; i < messagelistenerArray.length; i++) {
>
> Modified: geronimo/server/trunk/modules/geronimo-connector/src/main/ 
> java/org/apache/geronimo/connector/ResourceAdapterWrapper.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/ 
> geronimo-connector/src/main/java/org/apache/geronimo/connector/ 
> ResourceAdapterWrapper.java?view=diff&rev=517486&r1=517485&r2=517486
> ====================================================================== 
> ========
> --- geronimo/server/trunk/modules/geronimo-connector/src/main/java/ 
> org/apache/geronimo/connector/ResourceAdapterWrapper.java (original)
> +++ geronimo/server/trunk/modules/geronimo-connector/src/main/java/ 
> org/apache/geronimo/connector/ResourceAdapterWrapper.java Mon Mar  
> 12 18:30:24 2007
> @@ -25,6 +25,7 @@
>  import javax.resource.spi.ResourceAdapterInternalException;
>  import javax.resource.spi.endpoint.MessageEndpointFactory;
>  import javax.transaction.xa.XAResource;
> +import java.util.Map;
>
>  /**
>   * Dynamic GBean wrapper around a ResourceAdapter object, exposing  
> the config-properties as
> @@ -34,39 +35,63 @@
>   */
>  public class ResourceAdapterWrapper implements ResourceAdapter {
>
> +    private final String name;
> +
>      private final String resourceAdapterClass;
>
>      private final BootstrapContext bootstrapContext;
>
>      protected final ResourceAdapter resourceAdapter;
>
> +    private final Map<String,String>  
> messageListenerToActivationSpecMap;
> +
>
>      /**
>       *  default constructor for enhancement proxy endpoint
>       */
>      public ResourceAdapterWrapper() {
> +        this.name = null;
>          this.resourceAdapterClass = null;
>          this.bootstrapContext = null;
>          this.resourceAdapter = null;
> +        this.messageListenerToActivationSpecMap = null;
>      }
>
> -    public ResourceAdapterWrapper(String resourceAdapterClass,
> +    public ResourceAdapterWrapper(String name,
> +            String resourceAdapterClass,
> +            Map<String,String> messageListenerToActivationSpecMap,
>              BootstrapContext bootstrapContext,
>              ClassLoader cl) throws InstantiationException,  
> IllegalAccessException, ClassNotFoundException {
> +        this.name = name;
>          this.resourceAdapterClass = resourceAdapterClass;
>          this.bootstrapContext = bootstrapContext;
>          Class clazz = cl.loadClass(resourceAdapterClass);
>          resourceAdapter = (ResourceAdapter) clazz.newInstance();
> +        this.messageListenerToActivationSpecMap =  
> messageListenerToActivationSpecMap;
>      }
>
> -    public ResourceAdapterWrapper(ResourceAdapter resourceAdapter,  
> BootstrapContext bootstrapContext) {
> +    public ResourceAdapterWrapper(String name, ResourceAdapter  
> resourceAdapter, Map<String,String>  
> messageListenerToActivationSpecMap, BootstrapContext  
> bootstrapContext) {
> +        this.name = name;
>          this.resourceAdapterClass = resourceAdapter.getClass 
> ().getName();
>          this.bootstrapContext = bootstrapContext;
>          this.resourceAdapter = resourceAdapter;
> +        this.messageListenerToActivationSpecMap =  
> messageListenerToActivationSpecMap;
> +    }
> +
> +    public String getName() {
> +        return name;
>      }
>
>      public String getResourceAdapterClass() {
>          return resourceAdapterClass;
> +    }
> +
> +    public Map<String,String> getMessageListenerToActivationSpecMap 
> () {
> +        return messageListenerToActivationSpecMap;
> +    }
> +
> +    public ResourceAdapter getResourceAdapter() {
> +        return resourceAdapter;
>      }
>
>      public void registerResourceAdapterAssociation(final  
> ResourceAdapterAssociation resourceAdapterAssociation) throws  
> ResourceException {
>
> Modified: geronimo/server/trunk/modules/geronimo-connector/src/main/ 
> java/org/apache/geronimo/connector/ResourceAdapterWrapperGBean.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/ 
> geronimo-connector/src/main/java/org/apache/geronimo/connector/ 
> ResourceAdapterWrapperGBean.java? 
> view=diff&rev=517486&r1=517485&r2=517486
> ====================================================================== 
> ========
> --- geronimo/server/trunk/modules/geronimo-connector/src/main/java/ 
> org/apache/geronimo/connector/ResourceAdapterWrapperGBean.java  
> (original)
> +++ geronimo/server/trunk/modules/geronimo-connector/src/main/java/ 
> org/apache/geronimo/connector/ResourceAdapterWrapperGBean.java Mon  
> Mar 12 18:30:24 2007
> @@ -29,6 +29,7 @@
>  import javax.resource.spi.ResourceAdapterAssociation;
>  import javax.resource.spi.XATerminator;
>  import javax.resource.spi.work.WorkManager;
> +import java.util.Map;
>
>  /**
>   *
> @@ -44,8 +45,8 @@
>          objectName = null;
>      }
>
> -    public ResourceAdapterWrapperGBean(String  
> resourceAdapterClass, WorkManager workManager, XATerminator  
> xaTerminator, ClassLoader cl, String objectName) throws  
> InstantiationException, IllegalAccessException,  
> ClassNotFoundException {
> -        super(resourceAdapterClass, new GeronimoBootstrapContext  
> (workManager, xaTerminator), cl);
> +    public ResourceAdapterWrapperGBean(String  
> resourceAdapterClass, Map<String,String>  
> messageListenerToActivationSpecMap, WorkManager workManager,  
> XATerminator xaTerminator, ClassLoader cl, String objectName)  
> throws InstantiationException, IllegalAccessException,  
> ClassNotFoundException {
> +        super(objectName, resourceAdapterClass,  
> messageListenerToActivationSpecMap, new GeronimoBootstrapContext  
> (workManager, xaTerminator), cl);
>          delegate = new DynamicGBeanDelegate();
>          delegate.addAll(resourceAdapter);
>          this.objectName = objectName;
> @@ -73,7 +74,7 @@
>      }
>
>      public boolean isStatisticsProvider() {
> -        return false;
> +        return false;
>      }
>
>      public boolean isEventProvider() {
> @@ -87,6 +88,7 @@
>          infoBuilder.addAttribute("resourceAdapterClass",  
> String.class, true);
>          infoBuilder.addAttribute("classLoader", ClassLoader.class,  
> false);
>          infoBuilder.addAttribute("objectName", String.class, false);
> +        infoBuilder.addAttribute 
> ("messageListenerToActivationSpecMap", Map.class, true);
>
>          infoBuilder.addReference("WorkManager", WorkManager.class,  
> NameFactory.JCA_WORK_MANAGER);
>          infoBuilder.addReference("XATerminator",  
> XATerminator.class, NameFactory.JCA_WORK_MANAGER);
> @@ -96,7 +98,7 @@
>          infoBuilder.addInterface(ResourceAdapter.class);
>          infoBuilder.addInterface(JCAResourceAdapter.class);
>
> -        infoBuilder.setConstructor(new String[] 
> {"resourceAdapterClass", "WorkManager", "XATerminator",  
> "classLoader", "objectName"});
> +        infoBuilder.setConstructor(new String[] 
> {"resourceAdapterClass", "messageListenerToActivationSpecMap",  
> "WorkManager", "XATerminator", "classLoader", "objectName"});
>
>          GBEAN_INFO = infoBuilder.getBeanInfo();
>      }
>
> Modified: geronimo/server/trunk/modules/geronimo-openejb-builder/ 
> geronimo-openejb.xml
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/ 
> geronimo-openejb-builder/geronimo-openejb.xml? 
> view=diff&rev=517486&r1=517485&r2=517486
> ====================================================================== 
> ========
> --- geronimo/server/trunk/modules/geronimo-openejb-builder/geronimo- 
> openejb.xml (original)
> +++ geronimo/server/trunk/modules/geronimo-openejb-builder/geronimo- 
> openejb.xml Mon Mar 12 18:30:24 2007
> @@ -43,8 +43,287 @@
>                  <artifactId>system-database</artifactId>
>                  <type>car</type>
>              </dependency>
> +            <dependency>
> +                <groupId>org.apache.geronimo.configs</groupId>
> +                <artifactId>activemq</artifactId>
> +                <type>car</type>
> +            </dependency>
>          </dependencies>
>      </environment>
> +    <openejb-jar>
> +      <openejb-jar xmlns="http://www.openejb.org/openejb-jar/1.1">
> +        <ejb-deployment ejb-name="BasicCmpBean" deployment- 
> id="client/tests/entity/cmp/BasicCmpHome" container-id="Default CMP  
> Container">
> +          <query>
> +            <query-method>
> +              <method-name>findByLastName</method-name>
> +              <method-params>
> +                <method-param>java.lang.String</method-param>
> +              </method-params>
> +            </query-method>
> +            <object-ql>SELECT o FROM BasicCmpBeanX o WHERE  
> o.lastName = ?1</object-ql>
> +          </query>
> +          <query>
> +            <query-method>
> +              <method-name>findEmptyCollection</method-name>
> +              <method-params/>
> +            </query-method>
> +            <object-ql>SELECT o FROM BasicCmpBean o WHERE 'true' =  
> 'false'</object-ql>
> +          </query>
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="BasicCmp2Bean" deployment- 
> id="client/tests/entity/cmp2/BasicCmpHome" container-id="Default  
> CMP Container">
> +          <query>
> +            <query-method>
> +              <method-name>findByLastName</method-name>
> +              <method-params>
> +                <method-param>java.lang.String</method-param>
> +              </method-params>
> +            </query-method>
> +            <object-ql>SELECT o FROM BasicCmp2Bean o WHERE  
> o.lastName = ?1</object-ql>
> +          </query>
> +          <query>
> +            <query-method>
> +              <method-name>findEmptyCollection</method-name>
> +              <method-params/>
> +            </query-method>
> +            <object-ql>SELECT o FROM BasicCmp2Bean o WHERE 'true'  
> = 'false'</object-ql>
> +          </query>
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="AOBasicCmpBean" deployment- 
> id="client/tests/entity/cmp/allowed_operations/EntityHome"  
> container-id="Default CMP Container">
> +          <query>
> +            <query-method>
> +              <method-name>findByLastName</method-name>
> +              <method-params>
> +                <method-param>java.lang.String</method-param>
> +              </method-params>
> +            </query-method>
> +            <object-ql>SELECT o FROM AllowedOperationsCmpBean o  
> WHERE o.lastName = ?1</object-ql>
> +          </query>
> +          <query>
> +            <query-method>
> +              <method-name>findEmptyCollection</method-name>
> +              <method-params/>
> +            </query-method>
> +            <object-ql>SELECT o FROM AllowedOperationsCmpBean o  
> WHERE 'true' = 'false'</object-ql>
> +          </query>
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="AOBasicCmp2Bean" deployment- 
> id="client/tests/entity/cmp2/allowed_operations/EntityHome"  
> container-id="Default CMP Container">
> +          <query>
> +            <query-method>
> +              <method-name>findByLastName</method-name>
> +              <method-params>
> +                <method-param>java.lang.String</method-param>
> +              </method-params>
> +            </query-method>
> +            <object-ql>SELECT o FROM AllowedOperationsCmp2Bean o  
> WHERE o.lastName = ?1</object-ql>
> +          </query>
> +          <query>
> +            <query-method>
> +              <method-name>findEmptyCollection</method-name>
> +              <method-params/>
> +            </query-method>
> +            <object-ql>SELECT o FROM AllowedOperationsCmp2Bean o  
> WHERE 'true' = 'false'</object-ql>
> +          </query>
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="EncCmpBean" deployment- 
> id="client/tests/entity/cmp/EncBean" container-id="Default CMP  
> Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="EncCmp2Bean" deployment- 
> id="client/tests/entity/cmp2/EncBean" container-id="Default CMP  
> Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="ContextLookupCmpBean" deployment- 
> id="client/tests/entity/cmp/ContextLookupCmpBean" container- 
> id="Default CMP Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="Cmp RMI-IIOP Bean" deployment- 
> id="client/tests/entity/cmp/RMI-over-IIOP/EJBHome" container- 
> id="Default CMP Container"/>
> +        <ejb-deployment ejb-name="Cmp2 RMI-IIOP Bean" deployment- 
> id="client/tests/entity/cmp2/RMI-over-IIOP/EJBHome" container- 
> id="Default CMP Container"/>
> +        <ejb-deployment ejb-name="OneToOneA" deployment-id="client/ 
> tests/entity/cmr/oneToOne/AHome" container-id="Default CMP  
> Container"/>
> +        <ejb-deployment ejb-name="OneToOneB" deployment-id="client/ 
> tests/entity/cmr/oneToOne/BHome" container-id="Default CMP  
> Container"/>
> +        <ejb-deployment ejb-name="OneToManyA" deployment- 
> id="client/tests/entity/cmr/oneToMany/AHome" container-id="Default  
> CMP Container"/>
> +        <ejb-deployment ejb-name="OneToManyB" deployment- 
> id="client/tests/entity/cmr/oneToMany/BHome" container-id="Default  
> CMP Container"/>
> +        <ejb-deployment ejb-name="OneOwningSideBean" deployment- 
> id="client/tests/entity/cmp2/OneOwningSideBean/EJBHome" container- 
> id="Default CMP Container"/>
> +        <ejb-deployment ejb-name="OneInverseSideBean" deployment- 
> id="client/tests/entity/cmp2/OneInverseSideBean/EJBHome" container- 
> id="Default CMP Container"/>
> +        <ejb-deployment ejb-name="ManyOwningSideBean" deployment- 
> id="client/tests/entity/cmp2/ManyOwningSideBean/EJBHome" container- 
> id="Default CMP Container"/>
> +        <ejb-deployment ejb-name="BasicStatefulBean" deployment- 
> id="client/tests/stateful/BasicStatefulHome" container-id="Default  
> Stateful Container"/>
> +        <ejb-deployment ejb-name="BasicStatefulPojoBean"  
> deployment-id="client/tests/stateful/BasicStatefulPojoHome"  
> container-id="Default Stateful Container"/>
> +        <ejb-deployment ejb-name="Basic BMT StatefulBean"  
> deployment-id="client/tests/stateful/BeanManagedBasicStatefulHome"  
> container-id="Default Stateful Container"/>
> +        <ejb-deployment ejb-name="BMT StatefulBean" deployment- 
> id="client/tests/stateful/BeanManagedTransactionTests/EJBHome"  
> container-id="Default Stateful Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="EncStatefulBean" deployment- 
> id="client/tests/stateful/EncBean" container-id="Default Stateful  
> Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="FieldInjectionStatefulBean"  
> deployment-id="client/tests/stateful/FieldInjectionStatefulBean"  
> container-id="Default Stateful Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="SetterInjectionStatefulBean"  
> deployment-id="client/tests/stateful/SetterInjectionStatefulBean"  
> container-id="Default Stateful Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="PersistenceContextStatefulBean"  
> deployment-id="client/tests/stateful/ 
> PersistenceContextStatefulBean" container-id="Default Stateful  
> Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="ContextLookupStatefulBean"  
> deployment-id="client/tests/stateful/ContextLookupStatefulBean"  
> container-id="Default Stateful Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="ContextLookupStatefulPojoBean"  
> deployment-id="client/tests/stateful/ContextLookupStatefulPojoBean"  
> container-id="Default Stateful Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="Stateful RMI-IIOP Bean"  
> deployment-id="client/tests/stateful/RMI-over-IIOP/EJBHome"  
> container-id="Default Stateful Container"/>
> +        <ejb-deployment ejb-name="BasicStatelessBean" deployment- 
> id="client/tests/stateless/BasicStatelessHome" container- 
> id="Default Stateless Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="BasicStatelessPojoBean"  
> deployment-id="client/tests/stateless/BasicStatelessPojoHome"  
> container-id="Default Stateless Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="Basic BMT StatelessBean"  
> deployment-id="client/tests/stateless/ 
> BeanManagedBasicStatelessHome" container-id="Default Stateless  
> Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="DatabaseBean" deployment- 
> id="client/tools/DatabaseHome" container-id="Default Stateless  
> Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="BMT StatelessBean" deployment- 
> id="client/tests/stateless/BeanManagedTransactionTests/EJBHome"  
> container-id="Default Stateless Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="EncStatelessBean" deployment- 
> id="client/tests/stateless/EncBean" container-id="Default Stateless  
> Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="FieldInjectionStatelessBean"  
> deployment-id="client/tests/stateless/FieldInjectionStatelessBean"  
> container-id="Default Stateless Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="SetterInjectionStatelessBean"  
> deployment-id="client/tests/stateless/SetterInjectionStatelessBean"  
> container-id="Default Stateless Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="ContextLookupStatelessBean"  
> deployment-id="client/tests/stateless/ContextLookupStatelessBean"  
> container-id="Default Stateless Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="ContextLookupStatelessPojoBean"  
> deployment-id="client/tests/stateless/ 
> ContextLookupStatelessPojoBean" container-id="Default Stateless  
> Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="Stateless RMI-IIOP Bean"  
> deployment-id="client/tests/stateless/RMI-over-IIOP/EJBHome"  
> container-id="Default Stateless Container"/>
> +        <ejb-deployment ejb-name="BasicBmpBean" deployment- 
> id="client/tests/entity/bmp/BasicBmpHome" container-id="Default BMP  
> Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="AOBasicBmpBean" deployment- 
> id="client/tests/entity/bmp/allowed_operations/EntityHome"  
> container-id="Default BMP Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="EncBmpBean" deployment- 
> id="client/tests/entity/bmp/EncBean" container-id="Default BMP  
> Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="ContextLookupBmpBean" deployment- 
> id="client/tests/entity/bmp/ContextLookupBmpBean" container- 
> id="Default BMP Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="Bmp RMI-IIOP Bean" deployment- 
> id="client/tests/entity/bmp/RMI-over-IIOP/EJBHome" container- 
> id="Default BMP Container"/>
> +        <ejb-deployment ejb-name="BasicMdbBean" deployment- 
> id="client/tests/messagedriven/mdb/BasicMdb">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="Basic BMT Mdb Bean" deployment- 
> id="Basic BMT Mdb Bean">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="EncMdbBean" deployment- 
> id="EncMdbBean">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="ContextLookupMdbBean" deployment- 
> id="ContextLookupMdbBean">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="ContextLookupMdbPojoBean"  
> deployment-id="ContextLookupMdbPojoBean">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="FieldInjectionMdbBean"  
> deployment-id="FieldInjectionMdbBean">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="SetterInjectionMdbBean"  
> deployment-id="SetterInjectionMdbBean">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="TimerSyncBean" deployment- 
> id="TimerSyncBean" container-id="Default Stateless Container"/>
> +      </openejb-jar>
> +    </openejb-jar>
> +    <n:resource-ref>
> +        <n:ref-name>jms</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>activemq</n:artifactId>
> +            <n:name>DefaultActiveMQConnectionFactory</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
> +    <n:resource-ref>
> +        <n:ref-name>QueueCF</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>activemq</n:artifactId>
> +            <n:name>DefaultActiveMQConnectionFactory</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
> +    <n:resource-ref>
> +        <n:ref-name>TopicCF</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>activemq</n:artifactId>
> +            <n:name>DefaultActiveMQConnectionFactory</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
> +    <n:resource-ref>
> +        <n:ref-name>connectionFactory</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>activemq</n:artifactId>
> +            <n:name>DefaultActiveMQConnectionFactory</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
> +    <n:resource-ref>
> +        <n:ref-name>queueConnectionFactory</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>activemq</n:artifactId>
> +            <n:name>DefaultActiveMQConnectionFactory</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
> +    <n:resource-ref>
> +        <n:ref-name>topicConnectionFactory</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>activemq</n:artifactId>
> +            <n:name>DefaultActiveMQConnectionFactory</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
> +    <n:resource-ref>
> +        <n:ref- 
> name>org.apache.openejb.test.stateful.AnnotatedFieldInjectionStatefulB 
> ean/coonnectionFactory</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>activemq</n:artifactId>
> +            <n:name>DefaultActiveMQConnectionFactory</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
> +    <n:resource-ref>
> +        <n:ref- 
> name>org.apache.openejb.test.stateful.AnnotatedFieldInjectionStatefulB 
> ean/queueCoonnectionFactory</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>activemq</n:artifactId>
> +            <n:name>DefaultActiveMQConnectionFactory</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
> +    <n:resource-ref>
> +        <n:ref- 
> name>org.apache.openejb.test.stateful.AnnotatedFieldInjectionStatefulB 
> ean/topicCoonnectionFactory</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>activemq</n:artifactId>
> +            <n:name>DefaultActiveMQConnectionFactory</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
> +    <n:resource-ref>
> +        <n:ref- 
> name>org.apache.openejb.test.stateless.AnnotatedFieldInjectionStateles 
> sBean/coonnectionFactory</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>activemq</n:artifactId>
> +            <n:name>DefaultActiveMQConnectionFactory</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
> +    <n:resource-ref>
> +        <n:ref- 
> name>org.apache.openejb.test.stateless.AnnotatedFieldInjectionStateles 
> sBean/queueCoonnectionFactory</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>activemq</n:artifactId>
> +            <n:name>DefaultActiveMQConnectionFactory</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
> +    <n:resource-ref>
> +        <n:ref- 
> name>org.apache.openejb.test.stateless.AnnotatedFieldInjectionStateles 
> sBean/topicCoonnectionFactory</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>activemq</n:artifactId>
> +            <n:name>DefaultActiveMQConnectionFactory</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
> +    <n:resource-ref>
> +        <n:ref- 
> name>org.apache.openejb.test.mdb.AnnotatedFieldInjectionMdbBean/ 
> coonnectionFactory</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>activemq</n:artifactId>
> +            <n:name>DefaultActiveMQConnectionFactory</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
> +    <n:resource-ref>
> +        <n:ref- 
> name>org.apache.openejb.test.mdb.AnnotatedFieldInjectionMdbBean/ 
> queueCoonnectionFactory</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>activemq</n:artifactId>
> +            <n:name>DefaultActiveMQConnectionFactory</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
> +    <n:resource-ref>
> +        <n:ref- 
> name>org.apache.openejb.test.mdb.AnnotatedFieldInjectionMdbBean/ 
> topicCoonnectionFactory</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>activemq</n:artifactId>
> +            <n:name>DefaultActiveMQConnectionFactory</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
>      <n:resource-ref>
>          <n:ref-name>database</n:ref-name>
>          <n:pattern>
> @@ -93,6 +372,14 @@
>              <n:name>SystemDatasource</n:name>
>          </n:pattern>
>      </n:resource-ref>
> +    <n:resource-ref>
> +        <n:ref- 
> name>org.apache.openejb.test.mdb.AnnotatedFieldInjectionMdbBean/ 
> daataSource</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>system-database</n:artifactId>
> +            <n:name>SystemDatasource</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
>      <n:persistence-context-ref>
>          <n:persistence-context-ref-name>persistence/TestContext</ 
> n:persistence-context-ref-name>
>          <n:persistence-unit-name>openjpa-test-unit</n:persistence- 
> unit-name>
> @@ -103,30 +390,9 @@
>          <n:persistence-unit-name>openjpa-test-unit</n:persistence- 
> unit-name>
>          <n:persistence-context-type>Extended</n:persistence- 
> context-type>
>      </n:persistence-context-ref>
> -    <n:persistence-context-ref>
> -        <n:persistence-context-ref-name>openejb/cmp</n:persistence- 
> context-ref-name>
> -        <n:persistence-unit-name>cmp</n:persistence-unit-name>
> -        <n:persistence-context-type>Transactional</n:persistence- 
> context-type>
> -    </n:persistence-context-ref>
>      <n:persistence-unit-ref>
>          <n:persistence-unit-ref-name>persistence/TestUnit</ 
> n:persistence-unit-ref-name>
>          <n:persistence-unit-name>openjpa-test-unit</n:persistence- 
> unit-name>
>      </n:persistence-unit-ref>
>
> -    <persistence xmlns="http://java.sun.com/xml/ns/persistence"  
> version="1.0">
> -        <persistence-unit transaction-type="JTA" name="cmp">
> -             
> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</ 
> provider>
> -            <jta-data-source>?name=SystemDatasource</jta-data-source>
> -            <non-jta-data-source>?name=NoTxDatasource</non-jta- 
> data-source>
> -            <mapping-file>META-INF/jpa.mapping.xml</mapping-file>
> -             
> <class>org.apache.openejb.test.entity.cmp.BasicCmpBean</class>
> -            <exclude-unlisted-classes>false</exclude-unlisted- 
> classes>
> -        </persistence-unit>
> -        <persistence-unit transaction-type="JTA" name="openjpa- 
> test-unit">
> -             
> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</ 
> provider>
> -            <jta-data-source>?name=SystemDatasource</jta-data-source>
> -            <non-jta-data-source>?name=NoTxDatasource</non-jta- 
> data-source>
> -            <class>org.apache.openejb.test.entity.Customer</class>
> -        </persistence-unit>
> -    </persistence>
>  </ejb-jar>
>
> Modified: geronimo/server/trunk/modules/geronimo-openejb-builder/ 
> src/main/java/org/apache/geronimo/openejb/deployment/ 
> EjbModuleBuilder.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/ 
> geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/ 
> deployment/EjbModuleBuilder.java? 
> view=diff&rev=517486&r1=517485&r2=517486
> ====================================================================== 
> ========
> --- geronimo/server/trunk/modules/geronimo-openejb-builder/src/main/ 
> java/org/apache/geronimo/openejb/deployment/EjbModuleBuilder.java  
> (original)
> +++ geronimo/server/trunk/modules/geronimo-openejb-builder/src/main/ 
> java/org/apache/geronimo/openejb/deployment/EjbModuleBuilder.java  
> Mon Mar 12 18:30:24 2007
> @@ -31,6 +31,7 @@
>
>  import javax.ejb.EntityContext;
>  import javax.ejb.SessionContext;
> +import javax.ejb.MessageDrivenContext;
>  import javax.xml.namespace.QName;
>
>  import org.apache.commons.logging.Log;
> @@ -296,6 +297,8 @@
>                  if (ref.getType().equals 
> (SessionContext.class.getName())) {
>                      iterator.remove();
>                  } else if (ref.getType().equals 
> (EntityContext.class.getName())) {
> +                    iterator.remove();
> +                } else if (ref.getType().equals 
> (MessageDrivenContext.class.getName())) {
>                      iterator.remove();
>                  } else {
>                      ref.setMappedName(null);
>
> Modified: geronimo/server/trunk/modules/geronimo-openejb/src/main/ 
> java/org/apache/geronimo/openejb/OpenEjbSystemGBean.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/ 
> geronimo-openejb/src/main/java/org/apache/geronimo/openejb/ 
> OpenEjbSystemGBean.java?view=diff&rev=517486&r1=517485&r2=517486
> ====================================================================== 
> ========
> --- geronimo/server/trunk/modules/geronimo-openejb/src/main/java/ 
> org/apache/geronimo/openejb/OpenEjbSystemGBean.java (original)
> +++ geronimo/server/trunk/modules/geronimo-openejb/src/main/java/ 
> org/apache/geronimo/openejb/OpenEjbSystemGBean.java Mon Mar 12  
> 18:30:24 2007
> @@ -16,51 +16,69 @@
>   */
>  package org.apache.geronimo.openejb;
>
> -import java.io.IOException;
> -import java.util.Properties;
> -import javax.naming.NamingException;
> -import javax.transaction.TransactionManager;
> -
> +import org.apache.commons.logging.Log;
> +import org.apache.commons.logging.LogFactory;
> +import org.apache.geronimo.connector.ResourceAdapterWrapper;
> +import org.apache.geronimo.gbean.AbstractName;
>  import org.apache.geronimo.gbean.GBeanInfo;
>  import org.apache.geronimo.gbean.GBeanInfoBuilder;
> -import org.apache.geronimo.gbean.AbstractName;
> -import org.apache.geronimo.kernel.Kernel;
> +import org.apache.geronimo.gbean.ReferenceCollection;
> +import org.apache.geronimo.gbean.ReferenceCollectionListener;
> +import org.apache.geronimo.gbean.ReferenceCollectionEvent;
>  import org.apache.geronimo.kernel.GBeanNotFoundException;
> +import org.apache.geronimo.kernel.Kernel;
>  import org.apache.openejb.Container;
>  import org.apache.openejb.DeploymentInfo;
> +import org.apache.openejb.NoSuchApplicationException;
>  import org.apache.openejb.OpenEJBException;
>  import org.apache.openejb.UndeployException;
> -import org.apache.openejb.NoSuchApplicationException;
> -import org.apache.openejb.loader.SystemInstance;
> -import org.apache.openejb.core.ServerFederation;
> -import org.apache.openejb.util.proxy.Jdk13ProxyFactory;
> -import org.apache.openejb.config.ClientModule;
> -import org.apache.openejb.config.ConfigurationFactory;
> -import org.apache.openejb.config.EjbModule;
> -import org.apache.openejb.config.AppModule;
> +import org.apache.openejb.assembler.classic.AppInfo;
>  import org.apache.openejb.assembler.classic.Assembler;
>  import org.apache.openejb.assembler.classic.ClientInfo;
>  import org.apache.openejb.assembler.classic.ContainerInfo;
>  import org.apache.openejb.assembler.classic.EjbJarInfo;
> -import org.apache.openejb.assembler.classic.TransactionServiceInfo;
> +import org.apache.openejb.assembler.classic.MdbContainerInfo;
>  import org.apache.openejb.assembler.classic.ProxyFactoryInfo;
>  import org.apache.openejb.assembler.classic.SecurityServiceInfo;
> -import org.apache.openejb.assembler.classic.AppInfo;
> +import org.apache.openejb.assembler.classic.TransactionServiceInfo;
>  import org.apache.openejb.assembler.dynamic.PassthroughFactory;
> -import org.apache.openejb.spi.ContainerSystem;
> +import org.apache.openejb.config.AppModule;
> +import org.apache.openejb.config.ClientModule;
> +import org.apache.openejb.config.ConfigurationFactory;
> +import org.apache.openejb.config.EjbModule;
> +import org.apache.openejb.core.ServerFederation;
> +import org.apache.openejb.loader.SystemInstance;
>  import org.apache.openejb.spi.ApplicationServer;
> +import org.apache.openejb.spi.ContainerSystem;
> +import org.apache.openejb.util.proxy.Jdk13ProxyFactory;
> +
> +import javax.naming.NamingException;
> +import javax.resource.spi.ResourceAdapter;
> +import javax.transaction.TransactionManager;
> +import javax.management.ObjectName;
> +import javax.management.MalformedObjectNameException;
> +import java.io.IOException;
> +import java.util.Collection;
> +import java.util.Map;
> +import java.util.Properties;
> +import java.util.concurrent.ConcurrentHashMap;
> +import java.util.concurrent.ConcurrentMap;
>
>  /**
>   * @version $Rev$ $Date$
>   */
>  public class OpenEjbSystemGBean implements OpenEjbSystem {
> +    private static final Log log = LogFactory.getLog 
> (OpenEjbSystemGBean.class);
>      private final ConfigurationFactory configurationFactory;
>      private final Assembler assembler;
> +    private final ConcurrentMap<String,ResourceAdapterWrapper>  
> processedResourceAdapterWrappers =  new  
> ConcurrentHashMap<String,ResourceAdapterWrapper>() ;
> +    private final ClassLoader classLoader;
>
>      public OpenEjbSystemGBean(TransactionManager  
> transactionManager) throws Exception {
> -        this(transactionManager, null);
> +        this(transactionManager, null, null,  
> OpenEjbSystemGBean.class.getClassLoader());
>      }
> -    public OpenEjbSystemGBean(TransactionManager  
> transactionManager, Kernel kernel) throws Exception {
> +    public OpenEjbSystemGBean(TransactionManager  
> transactionManager, Collection<ResourceAdapterWrapper>  
> resourceAdapters, Kernel kernel, ClassLoader classLoader) throws  
> Exception {
> +        this.classLoader = classLoader;
>          System.setProperty("duct tape","");
>          SystemInstance systemInstance = SystemInstance.get();
>
> @@ -108,6 +126,9 @@
>
>          // add our thread context listener
>          GeronimoThreadContextListener.init();
> +
> +        // process all resource adapters
> +        processResourceAdapterWrappers(resourceAdapters);
>      }
>
>      @SuppressWarnings({"unchecked"})
> @@ -126,6 +147,97 @@
>          return proxy;
>      }
>
> +    private void processResourceAdapterWrappers 
> (Collection<ResourceAdapterWrapper> resourceAdapterWrappers) {
> +        if (resourceAdapterWrappers == null) {
> +            return;
> +        }
> +
> +        if (resourceAdapterWrappers instanceof ReferenceCollection) {
> +            ReferenceCollection referenceCollection =  
> (ReferenceCollection) resourceAdapterWrappers;
> +            referenceCollection.addReferenceCollectionListener(new  
> ReferenceCollectionListener() {
> +                public void memberAdded(ReferenceCollectionEvent  
> event) {
> +                    addResourceAdapter((ResourceAdapterWrapper)  
> event.getMember());
> +                }
> +
> +                public void memberRemoved(ReferenceCollectionEvent  
> event) {
> +                    removeResourceAdapter((ResourceAdapterWrapper)  
> event.getMember());
> +                }
> +            });
> +        }
> +        for (ResourceAdapterWrapper resourceAdapterWrapper :  
> resourceAdapterWrappers) {
> +            addResourceAdapter(resourceAdapterWrapper);
> +        }
> +
> +    }
> +
> +    private void addResourceAdapter(ResourceAdapterWrapper  
> resourceAdapterWrapper) {
> +        ResourceAdapter resourceAdapter =  
> resourceAdapterWrapper.getResourceAdapter();
> +        if (resourceAdapter == null) {
> +            return;
> +        }
> +
> +        Map<String, String> listenerToActivationSpecMap =  
> resourceAdapterWrapper.getMessageListenerToActivationSpecMap();
> +        if (listenerToActivationSpecMap == null) {
> +            return;
> +        }
> +
> +        ClassLoader oldClassLoader = Thread.currentThread 
> ().getContextClassLoader();
> +        Thread.currentThread().setContextClassLoader(classLoader);
> +        try {
> +            for (Map.Entry<String, String> entry :  
> listenerToActivationSpecMap.entrySet()) {
> +                String messageListenerInterface = entry.getKey();
> +                String activationSpecClass = entry.getValue();
> +
> +                // only process RA if not previously processed
> +                String containerName = getResourceAdapterId 
> (resourceAdapterWrapper) + "-" + messageListenerInterface;
> +                if (processedResourceAdapterWrappers.putIfAbsent 
> (containerName,  resourceAdapterWrapper) == null) {
> +                    try {
> +                        // get default mdb config
> +                        ContainerInfo containerInfo =  
> configurationFactory.configureService(MdbContainerInfo.class);
> +                        containerInfo.id = containerName;
> +                        containerInfo.displayName = containerName;
> +
> +                        // set ra specific properties
> +                        containerInfo.properties.setProperty 
> ("MessageListenerInterface", messageListenerInterface);
> +                        containerInfo.properties.setProperty 
> ("ActivationSpecClass", activationSpecClass);
> +                        containerInfo.properties.put 
> ("ResourceAdapter", resourceAdapter);
> +
> +                        // create the container
> +                        assembler.createContainer(containerInfo);
> +                    } catch (OpenEJBException e) {
> +                        log.error("Unable to deploy mdb container  
> " + containerName, e);
> +                    }
> +                }
> +            }
> +        } finally {
> +            Thread.currentThread().setContextClassLoader 
> (oldClassLoader);
> +        }
> +    }
> +
> +
> +    private void removeResourceAdapter(ResourceAdapterWrapper  
> resourceAdapterWrapper) {
> +        for (String messageListenerInterface :  
> resourceAdapterWrapper.getMessageListenerToActivationSpecMap 
> ().keySet()) {
> +            String containerName = getResourceAdapterId 
> (resourceAdapterWrapper) + "-" + messageListenerInterface;
> +            processedResourceAdapterWrappers.remove(containerName);
> +            assembler.removeContainer(containerName);
> +        }
> +    }
> +
> +    private String getResourceAdapterId(ResourceAdapterWrapper  
> resourceAdapterWrapper) {
> +        String name = resourceAdapterWrapper.getName();
> +        try {
> +            ObjectName objectName = new ObjectName(name);
> +            Map properties = objectName.getKeyPropertyList();
> +            String shortName = (String) properties.get("name");
> +            String moduleName = (String) properties.get 
> ("ResourceAdapterModule");
> +            if (shortName != null && moduleName != null) {
> +                return moduleName + "." + shortName;
> +            }
> +        } catch (Exception ignored) {
> +        }
> +        return name;
> +    }
> +
>      public ContainerSystem getContainerSystem() {
>          return assembler.getContainerSystem();
>      }
> @@ -200,10 +312,14 @@
>      static {
>          GBeanInfoBuilder infoBuilder =  
> GBeanInfoBuilder.createStatic(OpenEjbSystemGBean.class);
>          infoBuilder.addReference("TransactionManager",  
> TransactionManager.class);
> +        infoBuilder.addReference("ResourceAdapterWrappers",  
> ResourceAdapterWrapper.class);
>          infoBuilder.addAttribute("kernel", Kernel.class, false);
> +        infoBuilder.addAttribute("classLoader", ClassLoader.class,  
> false);
>          infoBuilder.setConstructor(new String[] {
>                  "TransactionManager",
> +                "ResourceAdapterWrappers",
>                  "kernel",
> +                "classLoader",
>          });
>          GBEAN_INFO = infoBuilder.getBeanInfo();
>      }
>
> Modified: geronimo/server/trunk/modules/geronimo-persistence-jpa10- 
> builder/src/main/java/org/apache/geronimo/persistence/builder/ 
> PersistenceContextRefBuilder.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/ 
> geronimo-persistence-jpa10-builder/src/main/java/org/apache/ 
> geronimo/persistence/builder/PersistenceContextRefBuilder.java? 
> view=diff&rev=517486&r1=517485&r2=517486
> ====================================================================== 
> ========
> --- geronimo/server/trunk/modules/geronimo-persistence-jpa10- 
> builder/src/main/java/org/apache/geronimo/persistence/builder/ 
> PersistenceContextRefBuilder.java (original)
> +++ geronimo/server/trunk/modules/geronimo-persistence-jpa10- 
> builder/src/main/java/org/apache/geronimo/persistence/builder/ 
> PersistenceContextRefBuilder.java Mon Mar 12 18:30:24 2007
> @@ -109,7 +109,10 @@
>              try {
>                  localConfiguration.findGBeanData 
> (persistenceUnitNameQuery);
>              } catch (GBeanNotFoundException e) {
> -                throw new DeploymentException("Could not resolve  
> reference at deploy time for query " + persistenceUnitNameQuery, e);
> +                // something is broken with cmp references that  
> stops deployment... this is just a patch around the real problem
> +                // throw new DeploymentException("Could not  
> resolve reference at deploy time for query " +  
> persistenceUnitNameQuery, e);
> +                new DeploymentException("Could not resolve  
> reference at deploy time for query " + persistenceUnitNameQuery,  
> e).printStackTrace();
> +                continue;
>              }
>
>              PersistenceContextReference reference = new  
> PersistenceContextReference(localConfiguration.getId(),  
> persistenceUnitNameQuery, transactionScoped, properties);
>
>


Re: svn commit: r517486 - in /geronimo/server/trunk: configs/openejb/src/plan/ modules/geronimo-connector-builder/src/main/java/org/apache/geronimo/connector/deployment/ modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/ modules/geroni...

Posted by Dain Sundstrom <da...@iq80.com>.
Sorry... completely missed this message...

On Mar 12, 2007, at 7:27 PM, David Jencks wrote:

> Is there some reason you didn't use the activationSpecInfo map  
> which already had the info you put into  
> messageListenerToActivationSpec map and a lot more besides?

Well, I can't say I'm totally happy with my solution but it does  
work.  The reason I put that data into the ResourceAdapterWrapper was  
because I couldn't figure out how to reliably pick all the data I  
needed out of the GBean objects.  There are quite a few objects and  
not everything is linked or had a dependency.  This means I have to  
listen for multiple GBeans and keep everything in sync.  It was  
simply easier to copy the data into the RA.

> I prefer to put this info in the ResourceAdapterModuleimpl which  
> represents the rar file rather than the ResourceAdapterWrapper  
> which represents an individual instance of a resource adapter  
> specified by the rar file to avoid duplication, but it doesn't make  
> a lot of difference.

That would be fine with me as long as I can call ra.getModule 
().getMessageListenerToActivationSpecMap() (or a shorter name) and  
have it work every time.

> At some point we should make it so only one copy of this data is  
> stuffed into gbeans, whether it's the simplified data you have or  
> the fuller representation I had, and take it out of whatever gbeans  
> aren't being used.

I'm cool with any changes... I just want to get it working and then  
we can refactor later.

-dain