org.jboss.deployment
Class SubDeployerSupport

java.lang.Object
  extended byorg.jboss.mx.util.JBossNotificationBroadcasterSupport (src) 
      extended byorg.jboss.system.ServiceMBeanSupport (src) 
          extended byorg.jboss.deployment.SubDeployerSupport
All Implemented Interfaces:
MBeanRegistration (src) , NotificationBroadcaster (src) , NotificationEmitter (src) , Service (src) , ServiceMBean (src) , SubDeployer (src)
Direct Known Subclasses:
AbstractWebContainer (src) , AxisService (src) , BeanShellSubDeployer (src) , ClientDeployer (src) , EARDeployer (src) , EJBDeployer (src) , FoeDeployer (src) , HARDeployer (src) , JARDeployer (src) , MediaEngineDeployer (src) , SARDeployer (src) , SimpleSubDeployerSupport (src) , XSLSubDeployer (src)

public abstract class SubDeployerSupport
extends ServiceMBeanSupport (src)
implements SubDeployer (src)

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


Nested Class Summary
protected static class SubDeployerSupport.ClassConfiguration (src)
          Static configuration properties for this class.
 
Field Summary
protected static SubDeployerSupport.ClassConfiguration (src) CONFIGURATION
          The singleton class configuration object for this class.
protected  MainDeployerMBean mainDeployer
          A proxy to the MainDeployer.
protected static java.lang.String nativePrefix
          Holds the native library prefix for this system.
protected static java.lang.String nativeSuffix
          Holds the native library suffix for this system.
protected  int relativeOrder
          The relative order of the suffixes
protected  java.lang.String[] suffixes
          The suffixes of interest to this subdeployer
protected  java.io.File tempDeployDir
          The temporary directory into which deployments are unpacked
 
Fields inherited from class org.jboss.system.ServiceMBeanSupport (src)
log, server, SERVICE_CONTROLLER_SIG, serviceName
 
Fields inherited from interface org.jboss.deployment.SubDeployer (src)
CREATE_NOTIFICATION, DESTROY_NOTIFICATION, INIT_NOTIFICATION, RELATIVE_ORDER_100, RELATIVE_ORDER_200, RELATIVE_ORDER_300, RELATIVE_ORDER_400, RELATIVE_ORDER_500, RELATIVE_ORDER_600, RELATIVE_ORDER_700, RELATIVE_ORDER_800, RELATIVE_ORDER_900, START_NOTIFICATION, STOP_NOTIFICATION
 
Fields inherited from interface org.jboss.system.ServiceMBean (src)
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 (src)  di, java.io.File dir)
          This method recursively searches the directory structure for any files that are deployable (@see isDeployable).
protected  void addDeployableJar(DeploymentInfo (src)  di, java.util.jar.JarFile jarFile)
          This method searches the entire jar file for any deployable files (@see isDeployable).
 void create(DeploymentInfo (src)  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 (src)  di, java.net.URL url, java.lang.String name)
           
 void destroy(DeploymentInfo (src)  di)
          Sub-classes should override this method to provide custom 'destroy' logic.
protected  void destroyService()
          Clean up.
protected  void emitNotification(java.lang.String type, DeploymentInfo (src)  di)
          Simple helper to emit a subdeployer notification containing DeploymentInfo
 int getRelativeOrder()
          Get the relative order of the specified suffixes
 java.lang.String[] getSuffixes()
          Get an array of suffixes of interest to this subdeployer
 void init(DeploymentInfo (src)  di)
          Sub-classes should override this method to provide custom 'init' logic.
protected  boolean isDeployable(java.lang.String name, java.net.URL url)
          This method returns true if the name is a recognized archive file.
protected  void processNestedDeployments(DeploymentInfo (src)  di)
          The processNestedDeployments method searches for any nested and deployable elements.
 void setRelativeOrder(int relativeOrder)
          Set the relative order of the specified suffixes
 void setSuffixes(java.lang.String[] suffixes)
          Set an array of suffixes of interest to this subdeployer
 void start(DeploymentInfo (src)  di)
          Sub-classes should override this method to provide custom 'start' logic.
protected  void startService()
          Performs SubDeployer registration.
 void stop(DeploymentInfo (src)  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 (src)
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 (src)
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 (src)
accepts, getServiceName
 

Field Detail

nativeSuffix

protected static final java.lang.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 java.lang.String nativePrefix
Holds the native library prefix for this system.

See Also:
nativeSuffix

mainDeployer

protected MainDeployerMBean mainDeployer
A proxy to the MainDeployer.


tempDeployDir

protected java.io.File tempDeployDir
The temporary directory into which deployments are unpacked


suffixes

protected java.lang.String[] suffixes
The suffixes of interest to this subdeployer


relativeOrder

protected int relativeOrder
The relative order of the suffixes


CONFIGURATION

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

Constructor Detail

SubDeployerSupport

public SubDeployerSupport()
Method Detail

createService

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

Overrides:
createService in class ServiceMBeanSupport (src)
Throws:
java.lang.Exception - if an error occurs

startService

protected void startService()
                     throws java.lang.Exception
Performs SubDeployer registration.

Overrides:
startService in class ServiceMBeanSupport (src)
Throws:
java.lang.Exception

stopService

protected void stopService()
                    throws java.lang.Exception
Performs SubDeployer deregistration.

Overrides:
stopService in class ServiceMBeanSupport (src)
Throws:
java.lang.Exception

destroyService

protected void destroyService()
                       throws java.lang.Exception
Clean up.

Overrides:
destroyService in class ServiceMBeanSupport (src)
Throws:
java.lang.Exception

getSuffixes

public java.lang.String[] getSuffixes()
Get an array of suffixes of interest to this subdeployer

Specified by:
getSuffixes in interface SubDeployer (src)
Returns:
array of suffix strings

setSuffixes

public void setSuffixes(java.lang.String[] suffixes)
Set an array of suffixes of interest to this subdeployer

Specified by:
setSuffixes in interface SubDeployer (src)
Parameters:
suffixes - array of suffix strings

getRelativeOrder

public int getRelativeOrder()
Get the relative order of the specified suffixes

Specified by:
getRelativeOrder in interface SubDeployer (src)
Returns:
the relative order of the specified suffixes

setRelativeOrder

public void setRelativeOrder(int relativeOrder)
Set the relative order of the specified suffixes

Specified by:
setRelativeOrder in interface SubDeployer (src)
Parameters:
relativeOrder - the relative order of the specified suffixes

init

public void init(DeploymentInfo (src)  di)
          throws DeploymentException (src) 
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 (src)
Parameters:
di - a DeploymentInfo value
Throws:
DeploymentException (src) - if an error occurs

create

public void create(DeploymentInfo (src)  di)
            throws DeploymentException (src) 
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 (src)
Parameters:
di - a DeploymentInfo value
Throws:
DeploymentException (src) - Failed to deploy

start

public void start(DeploymentInfo (src)  di)
           throws DeploymentException (src) 
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 (src)
Parameters:
di - a DeploymentInfo value
Throws:
DeploymentException (src) - if an error occurs

stop

public void stop(DeploymentInfo (src)  di)
          throws DeploymentException (src) 
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 (src)
Parameters:
di - a DeploymentInfo value
Throws:
DeploymentException (src) - if an error occurs

destroy

public void destroy(DeploymentInfo (src)  di)
             throws DeploymentException (src) 
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 (src)
Parameters:
di - a DeploymentInfo value
Throws:
DeploymentException (src) - if an error occurs

emitNotification

protected void emitNotification(java.lang.String type,
                                DeploymentInfo (src)  di)
Simple helper to emit a subdeployer notification containing DeploymentInfo


processNestedDeployments

protected void processNestedDeployments(DeploymentInfo (src)  di)
                                 throws DeploymentException (src) 
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 (src)

isDeployable

protected boolean isDeployable(java.lang.String name,
                               java.net.URL url)
This method returns true if the name is a recognized archive file. It will query the MainDeployer that keeps a dynamically updated list of known archive extensions.

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 (src)  di,
                                  java.io.File dir)
                           throws DeploymentException (src) 
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 (src)

addDeployableJar

protected void addDeployableJar(DeploymentInfo (src)  di,
                                java.util.jar.JarFile jarFile)
                         throws DeploymentException (src) 
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 (src)

deployUrl

protected void deployUrl(DeploymentInfo (src)  di,
                         java.net.URL url,
                         java.lang.String name)
                  throws DeploymentException (src) 
Throws:
DeploymentException (src)