/*
* jBoss, the OpenSource EJB server
*
* Distributable under GPL license.
* See terms of license at gnu.org.
*/
package org.jboss.ejb;

import org.jboss.ejb.plugins.*;
import org.jboss.metadata.*;

/**
 * MessageDrivenDeployer provides implementations of BeanDeployer methods
 * that are specific to Message Driven Beans.
 *
 * @see BeanDeployer
 * @author <a href="mailto:[EMAIL PROTECTED]">Jack Bolles</a>
 */
public class MessageDrivenDeployer extends BeanDeployer {

      protected MessageDrivenDeployer(BeanMetaData bmd, ClassLoader loader,
boolean enableMetrics){
         super(bmd, loader, enableMetrics);
         container = new MessageDrivenContainer();
      }

      protected void setInstancePool() throws DeploymentException {
         // Set instance pool
         InstancePool ip = null;
         try {
            ip = (InstancePool)cl.loadClass(conf.getInstancePool
()).newInstance();
            if(ip instanceof XmlLoadable) {
               ((XmlLoadable)ip).importXml(conf.getContainerPoolConf());
            }
         } catch(Exception e) {
            throw new DeploymentException("Missing or invalid Instance Pool
(in jboss.xml or standardjboss.xml)", e);
         }
         container.setInstancePool(ip);
      }

      /** Does nothing*/
      protected void setInstanceCache() throws DeploymentException {
         return;
      }

      /** Does nothing*/
      protected void setPersistenceManager() throws DeploymentException {
         return;
      }

      protected void setInterceptors() throws DeploymentException {
         super.setInterceptors();
         container.addInterceptor(new MessageDrivenInstanceInterceptor());

         if (((MessageDrivenMetaData)bean).isContainerManagedTx())
         {
            // CMT
            container.addInterceptor(new TxInterceptorCMT());
         }
         else
         {
            // BMT
            // FIXME. should we have a special BMT tx interceptor to place
ACK there???
            container.addInterceptor(new MessageDrivenTxInterceptorBMT());

         }
      }

   }



Reply via email to