org.jboss.deployment
Class SubDeployerSupport

java.lang.Object
  extended byorg.jboss.mx.util.JBossNotificationBroadcasterSupport
      extended byorg.jboss.system.ServiceMBeanSupport
          extended byorg.jboss.deployment.SubDeployerSupport
All Implemented Interfaces:
javax.management.MBeanRegistration, javax.management.NotificationBroadcaster, javax.management.NotificationEmitter, Service, ServiceMBean, SubDeployer, SubDeployerMBean
Direct Known Subclasses:
JARDeployer, SARDeployer, XSLSubDeployer

public abstract class SubDeployerSupport
extends ServiceMBeanSupport
implements SubDeployer, SubDeployerMBean

An abstract SubDeployer. Provides registration with MainDeployer as well as implementations of init, create, start, stop and destroy that generate JMX notifications on completion of the method.

Version:
$Revision: 1.8.2.13 $
Author:
Jason Dillon, Scott.Stark@jboss.org

Nested Class Summary
protected static class SubDeployerSupport.ClassConfiguration
          Static configuration properties for this class.
 
Field Summary
protected static SubDeployerSupport.ClassConfiguration CONFIGURATION
          The singleton class configuration object for this class.
protected  MainDeployerMBean mainDeployer
          A proxy to the MainDeployer.
protected static String nativePrefix
          Holds the native library prefix for this system.
protected static String nativeSuffix
          Holds the native library suffix for this system.
protected  File tempDeployDir
          The temporary directory into which deployments are unpacked
 
Fields inherited from class org.jboss.system.ServiceMBeanSupport
log, server, SERVICE_CONTROLLER_SIG, serviceName
 
Fields inherited from interface org.jboss.deployment.SubDeployer
CREATE_NOTIFICATION, DESTROY_NOTIFICATION, INIT_NOTIFICATION, START_NOTIFICATION, STOP_NOTIFICATION
 
Fields inherited from interface org.jboss.system.ServiceMBean
CREATE_EVENT, CREATED, DESTROY_EVENT, DESTROYED, FAILED, REGISTERED, START_EVENT, STARTED, STARTING, states, STOP_EVENT, STOPPED, STOPPING, UNREGISTERED
 
Constructor Summary
SubDeployerSupport()
           
 
Method Summary
protected  void addDeployableFiles(DeploymentInfo di, File dir)
          This method recursively searches the directory structure for any files that are deployable (@see isDeployable).
protected  void addDeployableJar(DeploymentInfo di, JarFile jarFile)
          This method searches the entire jar file for any deployable files (@see isDeployable).
 void create(DeploymentInfo di)
          Sub-classes should override this method to provide custom 'create' logic.
protected  void createService()
          The createService method is one of the ServiceMBean lifecyle operations.
protected  void deployUrl(DeploymentInfo di, URL url, String name)
           
 void destroy(DeploymentInfo di)
          Sub-classes should override this method to provide custom 'destroy' logic.
protected  void destroyService()
          Clean up.
 void init(DeploymentInfo di)
          Sub-classes should override this method to provide custom 'init' logic.
protected  boolean isDeployable(String name, URL url)
          This method returns true if the name is a recognized archive file.
protected  void processNestedDeployments(DeploymentInfo di)
          The processNestedDeployments method searches for any nested and deployable elements.
 void start(DeploymentInfo di)
          Sub-classes should override this method to provide custom 'start' logic.
protected  void startService()
          Performs SubDeployer registration.
 void stop(DeploymentInfo di)
          Sub-classes should override this method to provide custom 'stop' logic.
protected  void stopService()
          Performs SubDeployer deregistration.
 
Methods inherited from class org.jboss.system.ServiceMBeanSupport
create, destroy, getLog, getName, getNextNotificationSequenceNumber, getObjectName, getServer, getServiceName, getState, getStateString, jbossInternalCreate, jbossInternalDescription, jbossInternalDestroy, jbossInternalLifecycle, jbossInternalStart, jbossInternalStop, postDeregister, postRegister, preDeregister, preRegister, start, stop
 
Methods inherited from class org.jboss.mx.util.JBossNotificationBroadcasterSupport
addNotificationListener, getNotificationInfo, handleNotification, removeNotificationListener, removeNotificationListener, sendNotification
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.jboss.deployment.SubDeployer
accepts, getServiceName
 
Methods inherited from interface org.jboss.deployment.SubDeployerMBean
accepts
 
Methods inherited from interface org.jboss.system.ServiceMBean
getName, getState, getStateString, jbossInternalLifecycle
 
Methods inherited from interface org.jboss.system.Service
create, destroy, start, stop
 

Field Detail

nativeSuffix

protected static final String nativeSuffix
Holds the native library suffix for this system.

Determined by examining the result of System.mapLibraryName(specialToken). The special token defaults to "XxX", but can be changed by setting the system property: org.jboss.deployment.SubDeployerSupport.nativeLibToken.


nativePrefix

protected static final String nativePrefix
Holds the native library prefix for this system.

See Also:
nativeSuffix

mainDeployer

protected MainDeployerMBean mainDeployer
A proxy to the MainDeployer.


tempDeployDir

protected File tempDeployDir
The temporary directory into which deployments are unpacked


CONFIGURATION

protected static final SubDeployerSupport.ClassConfiguration CONFIGURATION
The singleton class configuration object for this class.

Constructor Detail

SubDeployerSupport

public SubDeployerSupport()
Method Detail

createService

protected void createService()
                      throws Exception
The createService method is one of the ServiceMBean lifecyle operations. (no jmx tag needed from superinterface)

Overrides:
createService in class ServiceMBeanSupport
Throws:
Exception - if an error occurs

startService

protected void startService()
                     throws Exception
Performs SubDeployer registration.

Overrides:
startService in class ServiceMBeanSupport
Throws:
Exception

stopService

protected void stopService()
                    throws Exception
Performs SubDeployer deregistration.

Overrides:
stopService in class ServiceMBeanSupport
Throws:
Exception

destroyService

protected void destroyService()
                       throws Exception
Clean up.

Overrides:
destroyService in class ServiceMBeanSupport
Throws:
Exception

init

public void init(DeploymentInfo di)
          throws DeploymentException
Sub-classes should override this method to provide custom 'init' logic.

This method calls the processNestedDeployments(di) method and then issues a JMX notification of type SubDeployer.INIT_NOTIFICATION. This behaviour can overridden by concrete sub-classes. If further initialization needs to be done, and you wish to preserve the functionality, be sure to call super.init(di) at the end of your implementation.

Specified by:
init in interface SubDeployer
Parameters:
di - a DeploymentInfo value
Throws:
DeploymentException - if an error occurs

create

public void create(DeploymentInfo di)
            throws DeploymentException
Sub-classes should override this method to provide custom 'create' logic. This method issues a JMX notification of type SubDeployer.CREATE_NOTIFICATION.

Specified by:
create in interface SubDeployer
Parameters:
di - a DeploymentInfo value
Throws:
DeploymentException - Failed to deploy

start

public void start(DeploymentInfo di)
           throws DeploymentException
Sub-classes should override this method to provide custom 'start' logic. This method issues a JMX notification of type SubDeployer.START_NOTIFICATION.

Specified by:
start in interface SubDeployer
Parameters:
di - a DeploymentInfo value
Throws:
DeploymentException - if an error occurs

stop

public void stop(DeploymentInfo di)
          throws DeploymentException
Sub-classes should override this method to provide custom 'stop' logic. This method issues a JMX notification of type SubDeployer.START_NOTIFICATION.

Specified by:
stop in interface SubDeployer
Parameters:
di - a DeploymentInfo value
Throws:
DeploymentException - if an error occurs

destroy

public void destroy(DeploymentInfo di)
             throws DeploymentException
Sub-classes should override this method to provide custom 'destroy' logic. This method issues a JMX notification of type SubDeployer.DESTROY_NOTIFICATION.

Specified by:
destroy in interface SubDeployer
Parameters:
di - a DeploymentInfo value
Throws:
DeploymentException - if an error occurs

processNestedDeployments

protected void processNestedDeployments(DeploymentInfo di)
                                 throws DeploymentException
The processNestedDeployments method searches for any nested and deployable elements. Only Directories and Zipped archives are processed, and those are delegated to the addDeployableFiles and addDeployableJar methods respectively. This method can be overridden for alternate behaviour.

Throws:
DeploymentException

isDeployable

protected boolean isDeployable(String name,
                               URL url)
This method returns true if the name is a recognized archive file. This can be overridden for alternate behaviour. (David Jencks) This method should never have been written or used. It makes the deployment scheme non-extensible.

Parameters:
name - The "short-name" of the URL. It will have any trailing '/' characters removed, and any directory structure has been removed.
url - The full url.
Returns:
true iff the name ends in a known archive extension: jar, sar, ear, rar, zip, wsr, war, or if the name matches the native library conventions.

addDeployableFiles

protected void addDeployableFiles(DeploymentInfo di,
                                  File dir)
                           throws DeploymentException
This method recursively searches the directory structure for any files that are deployable (@see isDeployable). If a directory is found to be deployable, then its subfiles and subdirectories are not searched.

Parameters:
di - the DeploymentInfo
dir - The root directory to start searching.
Throws:
DeploymentException

addDeployableJar

protected void addDeployableJar(DeploymentInfo di,
                                JarFile jarFile)
                         throws DeploymentException
This method searches the entire jar file for any deployable files (@see isDeployable).

Parameters:
di - the DeploymentInfo
jarFile - the jar file to process.
Throws:
DeploymentException

deployUrl

protected void deployUrl(DeploymentInfo di,
                         URL url,
                         String name)
                  throws DeploymentException
Throws:
DeploymentException


Copyright © 2002 JBoss Group, LLC. All Rights Reserved.