org.jboss.deployment.scanner
Class URLDeploymentScanner

java.lang.Object
  extended by org.jboss.mx.util.JBossNotificationBroadcasterSupport
      extended by org.jboss.system.ServiceMBeanSupport
          extended by org.jboss.deployment.scanner.AbstractDeploymentScanner
              extended by org.jboss.deployment.scanner.URLDeploymentScanner
All Implemented Interfaces:
javax.management.MBeanRegistration, javax.management.NotificationBroadcaster, javax.management.NotificationEmitter, DeploymentScanner, DeploymentScannerMBean, URLDeploymentScannerMBean, Service, ServiceMBean
Direct Known Subclasses:
HttpURLDeploymentScanner

public class URLDeploymentScanner
extends AbstractDeploymentScanner
implements DeploymentScanner, URLDeploymentScannerMBean

A URL-based deployment scanner. Supports local directory scanning for file-based urls.

Version:
$Revision: 1.32.2.8 $
Author:
Jason Dillon, Dimitris Andreadis

Nested Class Summary
protected  class URLDeploymentScanner.DeployedURL
          A container and help class for a deployed URL.
 
Nested classes/interfaces inherited from class org.jboss.deployment.scanner.AbstractDeploymentScanner
AbstractDeploymentScanner.ScannerThread
 
Field Summary
protected  Set deployedSet
          A set of scanned urls which have been deployed.
protected  boolean doRecursiveSearch
          Whether to search inside directories whose names containing no dots
protected  org.jboss.net.protocol.URLLister.URLFilter filter
          Allow a filter for scanned directories
protected  IncompleteDeploymentException lastIncompleteDeploymentException
           
protected  org.jboss.net.protocol.URLListerFactory listerFactory
          Helper for listing local/remote directory URLs
protected  File serverHome
          The server's home directory, for relative paths.
protected  URL serverHomeURL
           
protected  Set skipSet
          A set of deployment URLs to skip
protected  Comparator sorter
          A sorter urls from a scaned directory to allow for coarse dependency ordering based on file type
protected  List urlList
          The list of URLs to scan.
 
Fields inherited from class org.jboss.deployment.scanner.AbstractDeploymentScanner
deployer, mainDeployer, scanEnabled, scannerThread, scanPeriod, stopTimeOut
 
Fields inherited from class org.jboss.system.ServiceMBeanSupport
log, server, SERVICE_CONTROLLER_SIG, serviceName
 
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
URLDeploymentScanner()
           
 
Method Summary
 void addURL(String urlspec)
           
 void addURL(URL url)
           
protected  void createService()
          Sub-classes should override this method to provide custum 'create' logic.
protected  void deploy(URLDeploymentScanner.DeployedURL du)
          A helper to deploy the given URL with the deployer.
 String getFilter()
           
 org.jboss.net.protocol.URLLister.URLFilter getFilterInstance()
           
 boolean getRecursiveSearch()
           
 String getURLComparator()
           
 List getURLList()
           
 boolean hasURL(String urlspec)
           
 boolean hasURL(URL url)
           
protected  boolean isDeployed(URL url)
          Checks if the url is in the deployed set.
 String listDeployedURLs()
          Lists all urls deployed by the scanner, each URL on a new line.
protected  URL makeURL(String urlspec)
          A helper to make a URL from a full url, or a filespec.
 javax.management.ObjectName preRegister(javax.management.MBeanServer server, javax.management.ObjectName name)
          Callback method of MBeanRegistration before the MBean is registered at the JMX Agent.
 void removeURL(String urlspec)
           
 void removeURL(URL url)
           
 void resumeDeployment(URL url, boolean markUpToDate)
          Re-enables scanning of a particular deployment URL, previously suspended using suspendDeployment(URL).
 void scan()
          This is here to work around a bug in the IBM vm that causes an AbstractMethodError to be thrown when the ScannerThread calls scan.
 void setFilter(String classname)
           
 void setFilterInstance(org.jboss.net.protocol.URLLister.URLFilter filter)
           
 void setRecursiveSearch(boolean recurse)
           
 void setURLComparator(String classname)
           
 void setURLList(List list)
           
 void setURLs(String listspec)
           
 void suspendDeployment(URL url)
          Temporarily ignore changes (addition, updates, removal) to a particular deployment, identified by its deployment URL.
protected  void undeploy(URLDeploymentScanner.DeployedURL du)
          A helper to undeploy the given URL from the deployer.
protected  boolean updateSorter()
           
 
Methods inherited from class org.jboss.deployment.scanner.AbstractDeploymentScanner
destroyService, getDeployer, getScanPeriod, getStopTimeOut, isScanEnabled, setDeployer, setScanEnabled, setScanPeriod, setStopTimeOut, startService, stopService
 
Methods inherited from class org.jboss.system.ServiceMBeanSupport
create, destroy, getDeploymentInfo, getLog, getName, getNextNotificationSequenceNumber, getObjectName, getServer, getServiceName, getState, getStateString, jbossInternalCreate, jbossInternalDescription, jbossInternalDestroy, jbossInternalLifecycle, jbossInternalStart, jbossInternalStop, postDeregister, postRegister, preDeregister, start, stop
 
Methods inherited from class org.jboss.mx.util.JBossNotificationBroadcasterSupport
addNotificationListener, getNotificationInfo, handleNotification, nextNotificationSequenceNumber, 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.scanner.DeploymentScanner
getDeployer, getScanPeriod, isScanEnabled, setDeployer, setScanEnabled, setScanPeriod
 
Methods inherited from interface org.jboss.deployment.scanner.DeploymentScannerMBean
getDeployer, getStopTimeOut, isScanEnabled, setDeployer, setScanEnabled, setScanPeriod, setStopTimeOut
 
Methods inherited from interface org.jboss.system.ServiceMBean
getName, getState, getStateString, jbossInternalLifecycle
 

Field Detail

skipSet

protected Set skipSet
A set of deployment URLs to skip


urlList

protected List urlList
The list of URLs to scan.


deployedSet

protected Set deployedSet
A set of scanned urls which have been deployed.


listerFactory

protected org.jboss.net.protocol.URLListerFactory listerFactory
Helper for listing local/remote directory URLs


serverHome

protected File serverHome
The server's home directory, for relative paths.


serverHomeURL

protected URL serverHomeURL

sorter

protected Comparator sorter
A sorter urls from a scaned directory to allow for coarse dependency ordering based on file type


filter

protected org.jboss.net.protocol.URLLister.URLFilter filter
Allow a filter for scanned directories


lastIncompleteDeploymentException

protected IncompleteDeploymentException lastIncompleteDeploymentException

doRecursiveSearch

protected boolean doRecursiveSearch
Whether to search inside directories whose names containing no dots

Constructor Detail

URLDeploymentScanner

public URLDeploymentScanner()
Method Detail

setRecursiveSearch

public void setRecursiveSearch(boolean recurse)
Specified by:
setRecursiveSearch in interface URLDeploymentScannerMBean

getRecursiveSearch

public boolean getRecursiveSearch()
Specified by:
getRecursiveSearch in interface URLDeploymentScannerMBean

setURLList

public void setURLList(List list)
Specified by:
setURLList in interface URLDeploymentScannerMBean

setURLComparator

public void setURLComparator(String classname)
                      throws ClassNotFoundException,
                             IllegalAccessException,
                             InstantiationException
Specified by:
setURLComparator in interface URLDeploymentScannerMBean
Parameters:
classname - The name of a Comparator class.
Throws:
ClassNotFoundException
IllegalAccessException
InstantiationException

getURLComparator

public String getURLComparator()
Specified by:
getURLComparator in interface URLDeploymentScannerMBean

setFilter

public void setFilter(String classname)
               throws ClassNotFoundException,
                      IllegalAccessException,
                      InstantiationException
Specified by:
setFilter in interface URLDeploymentScannerMBean
Parameters:
classname - The name of a FileFilter class.
Throws:
ClassNotFoundException
IllegalAccessException
InstantiationException

getFilter

public String getFilter()
Specified by:
getFilter in interface URLDeploymentScannerMBean

setFilterInstance

public void setFilterInstance(org.jboss.net.protocol.URLLister.URLFilter filter)
Specified by:
setFilterInstance in interface URLDeploymentScannerMBean
Parameters:
filter - The URLFilter instance

getFilterInstance

public org.jboss.net.protocol.URLLister.URLFilter getFilterInstance()
Specified by:
getFilterInstance in interface URLDeploymentScannerMBean

getURLList

public List getURLList()
Specified by:
getURLList in interface URLDeploymentScannerMBean

addURL

public void addURL(URL url)
Specified by:
addURL in interface URLDeploymentScannerMBean

removeURL

public void removeURL(URL url)
Specified by:
removeURL in interface URLDeploymentScannerMBean

hasURL

public boolean hasURL(URL url)
Specified by:
hasURL in interface URLDeploymentScannerMBean

suspendDeployment

public void suspendDeployment(URL url)
Temporarily ignore changes (addition, updates, removal) to a particular deployment, identified by its deployment URL. The deployment URL is different from the 'base' URLs that are scanned by the scanner (e.g. the full path to deploy/jmx-console.war vs. deploy/). This can be used to avoid an attempt by the scanner to deploy/redeploy/undeploy a URL that is being modified. To re-enable scanning of changes for a URL, use resumeDeployment(URL, boolean).

Specified by:
suspendDeployment in interface URLDeploymentScannerMBean

resumeDeployment

public void resumeDeployment(URL url,
                             boolean markUpToDate)
Re-enables scanning of a particular deployment URL, previously suspended using suspendDeployment(URL). If the markUpToDate flag is true then the deployment module will be considered up-to-date during the next scan. If the flag is false, at the next scan the scanner will check the modification date to decide if the module needs deploy/redeploy/undeploy.

Specified by:
resumeDeployment in interface URLDeploymentScannerMBean

listDeployedURLs

public String listDeployedURLs()
Lists all urls deployed by the scanner, each URL on a new line.

Specified by:
listDeployedURLs in interface URLDeploymentScannerMBean

setURLs

public void setURLs(String listspec)
             throws MalformedURLException
Specified by:
setURLs in interface URLDeploymentScannerMBean
Throws:
MalformedURLException

makeURL

protected URL makeURL(String urlspec)
               throws MalformedURLException
A helper to make a URL from a full url, or a filespec.

Throws:
MalformedURLException

addURL

public void addURL(String urlspec)
            throws MalformedURLException
Specified by:
addURL in interface URLDeploymentScannerMBean
Throws:
MalformedURLException

removeURL

public void removeURL(String urlspec)
               throws MalformedURLException
Specified by:
removeURL in interface URLDeploymentScannerMBean
Throws:
MalformedURLException

hasURL

public boolean hasURL(String urlspec)
               throws MalformedURLException
Specified by:
hasURL in interface URLDeploymentScannerMBean
Throws:
MalformedURLException

deploy

protected void deploy(URLDeploymentScanner.DeployedURL du)
A helper to deploy the given URL with the deployer.


undeploy

protected void undeploy(URLDeploymentScanner.DeployedURL du)
A helper to undeploy the given URL from the deployer.


isDeployed

protected boolean isDeployed(URL url)
Checks if the url is in the deployed set.


scan

public void scan()
          throws Exception
Description copied from class: AbstractDeploymentScanner
This is here to work around a bug in the IBM vm that causes an AbstractMethodError to be thrown when the ScannerThread calls scan.

Specified by:
scan in interface DeploymentScanner
Specified by:
scan in interface DeploymentScannerMBean
Specified by:
scan in class AbstractDeploymentScanner
Throws:
IllegalStateException - Not initialized.
Exception - Scan failed.

updateSorter

protected boolean updateSorter()

preRegister

public javax.management.ObjectName preRegister(javax.management.MBeanServer server,
                                               javax.management.ObjectName name)
                                        throws Exception
Description copied from class: ServiceMBeanSupport
Callback method of MBeanRegistration before the MBean is registered at the JMX Agent.

Attention: Always call this method when you overwrite it in a subclass because it saves the Object Name of the MBean.

Specified by:
preRegister in interface javax.management.MBeanRegistration
Overrides:
preRegister in class ServiceMBeanSupport
Parameters:
server - Reference to the JMX Agent this MBean is registered on
name - Name specified by the creator of the MBean. Note that you can overwrite it when the given ObjectName is null otherwise the change is discarded (maybe a bug in JMX-RI).
Throws:
Exception

createService

protected void createService()
                      throws Exception
Description copied from class: ServiceMBeanSupport
Sub-classes should override this method to provide custum 'create' logic.

This method is empty, and is provided for convenience when concrete service classes do not need to perform anything specific for this state change.

Overrides:
createService in class AbstractDeploymentScanner
Throws:
Exception


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