public class StandardRoot extends LifecycleMBeanBase implements WebResourceRoot
Provides the resources implementation for a web application. The
Lifecycle
of this class should be aligned with
that of the associated Context
.
This implementation assumes that the base attribute supplied to createWebResourceSet(
org.apache.catalina.WebResourceRoot.ResourceSetType, String, String, String,
String)
represents the absolute path to a file.
WebResourceRoot.ResourceSetType
Lifecycle.SingleUse
Modifier and Type | Field and Description |
---|---|
protected static StringManager |
sm |
mserver
AFTER_DESTROY_EVENT, AFTER_INIT_EVENT, AFTER_START_EVENT, AFTER_STOP_EVENT, BEFORE_DESTROY_EVENT, BEFORE_INIT_EVENT, BEFORE_START_EVENT, BEFORE_STOP_EVENT, CONFIGURE_START_EVENT, CONFIGURE_STOP_EVENT, PERIODIC_EVENT, START_EVENT, STOP_EVENT
Constructor and Description |
---|
StandardRoot()
Creates a new standard implementation of
WebResourceRoot . |
StandardRoot(Context context) |
Modifier and Type | Method and Description |
---|---|
protected void |
addClassResources(WebResourceSet webResourceSet) |
void |
addJarResources(WebResourceSet webResourceSet)
Adds the provided WebResourceSet to this web application as a 'Jar'
resource.
|
void |
addPostResources(WebResourceSet webResourceSet)
Adds the provided WebResourceSet to this web application as a 'Post'
resource.
|
void |
addPreResources(WebResourceSet webResourceSet)
Adds the provided WebResourceSet to this web application as a 'Pre'
resource.
|
void |
backgroundProcess()
This method will be invoked by the context on a periodic basis and allows
the implementation a method that executes periodic tasks, such as purging
expired cache entries.
|
protected WebResourceSet |
createMainResourceSet() |
void |
createWebResourceSet(WebResourceRoot.ResourceSetType type,
String webAppMount,
String base,
String archivePath,
String internalPath)
Creates a new
WebResourceSet for this WebResourceRoot
based on the provided parameters. |
void |
createWebResourceSet(WebResourceRoot.ResourceSetType type,
String webAppMount,
URL url,
String internalPath)
Creates a new
WebResourceSet for this WebResourceRoot
based on the provided parameters. |
void |
deregisterTrackedResource(TrackedWebResource trackedResource)
Stop tracking specified resource, once it no longer needs to free resources.
|
protected void |
destroyInternal()
Sub-classes wishing to perform additional clean-up should override this
method, ensuring that super.destroyInternal() is the last call in the
overriding method.
|
void |
gc()
Implementations may cache some information to improve performance.
|
boolean |
getAllowLinking()
Determine if this resources allow the use of symbolic links.
|
List<URL> |
getBaseUrls() |
long |
getCacheMaxSize()
Get the maximum permitted size for the cache.
|
int |
getCacheObjectMaxSize()
Get the maximum permitted size for a single object in the cache.
|
long |
getCacheTtl()
Get the Time-To-Live (TTL) for cache entries.
|
WebResource |
getClassLoaderResource(String path)
Obtain the object that represents the class loader resource at the given
path.
|
WebResource[] |
getClassLoaderResources(String path)
Obtain the objects that represent the class loader resource at the given
path.
|
protected WebResourceSet[] |
getClassResources() |
Context |
getContext() |
protected String |
getDomainInternal()
Method implemented by sub-classes to identify the domain in which MBeans
should be registered.
|
WebResourceSet[] |
getJarResources() |
protected String |
getObjectNameKeyProperties()
Allow sub-classes to specify the key properties component of the
ObjectName that will be used to register this component. |
WebResourceSet[] |
getPostResources() |
WebResourceSet[] |
getPreResources() |
WebResource |
getResource(String path)
Obtain the object that represents the resource at the given path.
|
protected WebResource |
getResourceInternal(String path,
boolean useClassLoaderResources) |
WebResource[] |
getResources(String path)
Obtain the objects that represent the resource at the given path.
|
protected WebResource[] |
getResourcesInternal(String path,
boolean useClassLoaderResources) |
List<String> |
getTrackedResources() |
boolean |
getTrackLockedFiles()
Has the track locked files feature been enabled?
|
protected void |
initInternal()
Sub-classes wishing to perform additional initialization should override
this method, ensuring that super.initInternal() is the first call in the
overriding method.
|
boolean |
isCachingAllowed() |
String[] |
list(String path)
Obtain the list of the names of all of the files and directories located
in the specified directory.
|
WebResource[] |
listResources(String path)
Obtain the list of all of the WebResources in the specified directory.
|
Set<String> |
listWebAppPaths(String path)
Obtain the Set of the web applications pathnames of all of the files and
directories located in the specified directory.
|
boolean |
mkdir(String path)
Create a new directory at the given path.
|
void |
registerTrackedResource(TrackedWebResource trackedResource)
Add a specified resource to track to be able to later release
resources on stop.
|
protected void |
registerURLStreamHandlerFactory() |
void |
setAllowLinking(boolean allowLinking)
Configure if this resources allow the use of symbolic links.
|
void |
setCacheMaxSize(long cacheMaxSize)
Set the maximum permitted size for the cache.
|
void |
setCacheObjectMaxSize(int cacheObjectMaxSize)
Set the maximum permitted size for a single object in the cache.
|
void |
setCacheTtl(long cacheTtl)
Set the Time-To-Live (TTL) for cache entries.
|
void |
setCachingAllowed(boolean cachingAllowed)
Set whether or not caching is permitted for this web application.
|
void |
setContext(Context context)
Set the web application this WebResourceRoot is associated with.
|
protected void |
setMainResources(WebResourceSet main)
For unit testing.
|
void |
setTrackLockedFiles(boolean trackLockedFiles)
Controls whether the track locked files feature is enabled.
|
protected void |
startInternal()
Sub-classes must ensure that the state is changed to
LifecycleState.STARTING during the execution of this method. |
protected void |
stopInternal()
Sub-classes must ensure that the state is changed to
LifecycleState.STOPPING during the execution of this method. |
boolean |
write(String path,
InputStream is,
boolean overwrite)
Create a new resource at the requested path using the provided
InputStream.
|
getDomain, getObjectName, postDeregister, postRegister, preDeregister, preRegister, register, setDomain, unregister
addLifecycleListener, destroy, findLifecycleListeners, fireLifecycleEvent, getState, getStateName, init, removeLifecycleListener, setState, setState, start, stop
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
addLifecycleListener, destroy, findLifecycleListeners, getState, getStateName, init, removeLifecycleListener, start, stop
protected static final StringManager sm
public StandardRoot()
WebResourceRoot
. A no
argument constructor is required for this to work with the digester.
setContext(Context)
must be called before this component is
initialized.public StandardRoot(Context context)
public String[] list(String path)
WebResourceRoot
list
in interface WebResourceRoot
path
- The path for the resource of interest relative to the root
of the web application. It must start with '/'.public Set<String> listWebAppPaths(String path)
WebResourceRoot
listWebAppPaths
in interface WebResourceRoot
path
- The path for the resource of interest relative to the root
of the web application. It must start with '/'.public boolean mkdir(String path)
WebResourceRoot
mkdir
in interface WebResourceRoot
path
- The path for the new resource to create relative to the root
of the web application. It must start with '/'.true
if the directory was created, otherwise
false
public boolean write(String path, InputStream is, boolean overwrite)
WebResourceRoot
write
in interface WebResourceRoot
path
- The path to be used for the new Resource. It is relative
to the root of the web application and must start with
'/'.is
- The InputStream that will provide the content for the
new Resource.overwrite
- If true
and the resource already exists it
will be overwritten. If false
and the
resource already exists the write will fail.true
if and only if the new Resource is writtenpublic WebResource getResource(String path)
WebResourceRoot
getResource
in interface WebResourceRoot
path
- The path for the resource of interest relative to the root
of the web application. It must start with '/'.public WebResource getClassLoaderResource(String path)
WebResourceRoot
getClassLoaderResource
in interface WebResourceRoot
path
- The path of the class loader resource of interest relative
to the the root of class loader resources for this web
application.public WebResource[] getClassLoaderResources(String path)
WebResourceRoot
getClassLoaderResources
in interface WebResourceRoot
path
- The path for the class loader resource of interest relative
to the root of the class loader resources for the web
application. It must start with '/'.protected final WebResource getResourceInternal(String path, boolean useClassLoaderResources)
public WebResource[] getResources(String path)
WebResourceRoot
getResources
in interface WebResourceRoot
path
- The path for the resource of interest relative to the root
of the web application. It must start with '/'.protected WebResource[] getResourcesInternal(String path, boolean useClassLoaderResources)
public WebResource[] listResources(String path)
WebResourceRoot
listResources
in interface WebResourceRoot
path
- The path for the resource of interest relative to the root
of the web application. It must start with '/'.public void createWebResourceSet(WebResourceRoot.ResourceSetType type, String webAppMount, URL url, String internalPath)
WebResourceRoot
WebResourceSet
for this WebResourceRoot
based on the provided parameters.createWebResourceSet
in interface WebResourceRoot
type
- The type of WebResourceSet
to createwebAppMount
- The path within the web application that the
resources should be published at. It must start
with '/'.url
- The URL of the resource (must locate a JAR, file or
directory)internalPath
- The path within the resource where the content is to
be found. It must start with '/'.public void createWebResourceSet(WebResourceRoot.ResourceSetType type, String webAppMount, String base, String archivePath, String internalPath)
WebResourceRoot
WebResourceSet
for this WebResourceRoot
based on the provided parameters.createWebResourceSet
in interface WebResourceRoot
type
- The type of WebResourceSet
to createwebAppMount
- The path within the web application that the
resources should be published at. It must start
with '/'.base
- The location of the resourcesarchivePath
- The path within the resource to the archive where
the content is to be found. If there is no
archive then this should be null
.internalPath
- The path within the archive (or the resource if the
archivePath is null
where the
content is to be found. It must start with '/'.public void addPreResources(WebResourceSet webResourceSet)
WebResourceRoot
addPreResources
in interface WebResourceRoot
webResourceSet
- the resource set to usepublic WebResourceSet[] getPreResources()
getPreResources
in interface WebResourceRoot
public void addJarResources(WebResourceSet webResourceSet)
WebResourceRoot
addJarResources
in interface WebResourceRoot
webResourceSet
- the resource set to usepublic WebResourceSet[] getJarResources()
getJarResources
in interface WebResourceRoot
public void addPostResources(WebResourceSet webResourceSet)
WebResourceRoot
addPostResources
in interface WebResourceRoot
webResourceSet
- the resource set to usepublic WebResourceSet[] getPostResources()
getPostResources
in interface WebResourceRoot
protected WebResourceSet[] getClassResources()
protected void addClassResources(WebResourceSet webResourceSet)
public void setAllowLinking(boolean allowLinking)
WebResourceRoot
setAllowLinking
in interface WebResourceRoot
allowLinking
- true
if symbolic links are allowed.public boolean getAllowLinking()
WebResourceRoot
getAllowLinking
in interface WebResourceRoot
true
if symbolic links are allowedpublic void setCachingAllowed(boolean cachingAllowed)
WebResourceRoot
setCachingAllowed
in interface WebResourceRoot
cachingAllowed
- true
to enable caching, else
false
public boolean isCachingAllowed()
isCachingAllowed
in interface WebResourceRoot
true
if caching is permitted for this web application.public long getCacheTtl()
WebResourceRoot
getCacheTtl
in interface WebResourceRoot
public void setCacheTtl(long cacheTtl)
WebResourceRoot
setCacheTtl
in interface WebResourceRoot
cacheTtl
- TTL in millisecondspublic long getCacheMaxSize()
WebResourceRoot
getCacheMaxSize
in interface WebResourceRoot
public void setCacheMaxSize(long cacheMaxSize)
WebResourceRoot
setCacheMaxSize
in interface WebResourceRoot
cacheMaxSize
- Maximum cache size in kilobytespublic void setCacheObjectMaxSize(int cacheObjectMaxSize)
WebResourceRoot
Integer.MAX_VALUE
.setCacheObjectMaxSize
in interface WebResourceRoot
cacheObjectMaxSize
- Maximum size for a single cached object in
kilobytespublic int getCacheObjectMaxSize()
WebResourceRoot
Integer.MAX_VALUE
.getCacheObjectMaxSize
in interface WebResourceRoot
public void setTrackLockedFiles(boolean trackLockedFiles)
WebResourceRoot
WebResource.getInputStream()
will perform a number of additional tasks.
setTrackLockedFiles
in interface WebResourceRoot
trackLockedFiles
- true
to enable it, false
to
disable itpublic boolean getTrackLockedFiles()
WebResourceRoot
getTrackLockedFiles
in interface WebResourceRoot
true
if it has been enabled, otherwise false
public Context getContext()
getContext
in interface WebResourceRoot
public void setContext(Context context)
WebResourceRoot
setContext
in interface WebResourceRoot
context
- the associated contextprotected final void setMainResources(WebResourceSet main)
main
- The main resourcespublic void backgroundProcess()
WebResourceRoot
backgroundProcess
in interface WebResourceRoot
public void gc()
WebResourceRoot
gc
in interface WebResourceRoot
public void registerTrackedResource(TrackedWebResource trackedResource)
WebResourceRoot
registerTrackedResource
in interface WebResourceRoot
trackedResource
- the resource that will be trackedpublic void deregisterTrackedResource(TrackedWebResource trackedResource)
WebResourceRoot
deregisterTrackedResource
in interface WebResourceRoot
trackedResource
- the resource that was trackedpublic List<URL> getBaseUrls()
getBaseUrls
in interface WebResourceRoot
WebResourceSet.getBaseUrl()
for all
WebResourceSet
s used by this root.protected String getDomainInternal()
LifecycleMBeanBase
getDomainInternal
in class LifecycleMBeanBase
protected String getObjectNameKeyProperties()
LifecycleMBeanBase
ObjectName
that will be used to register this component.getObjectNameKeyProperties
in class LifecycleMBeanBase
ObjectName
protected void initInternal() throws LifecycleException
LifecycleMBeanBase
initInternal
in class LifecycleMBeanBase
LifecycleException
protected void registerURLStreamHandlerFactory()
protected void startInternal() throws LifecycleException
LifecycleBase
LifecycleState.STARTING
during the execution of this method.
Changing state will trigger the Lifecycle.START_EVENT
event.
If a component fails to start it may either throw a
LifecycleException
which will cause it's parent to fail to start
or it can place itself in the error state in which case LifecycleBase.stop()
will be called on the failed component but the parent component will
continue to start normally.startInternal
in class LifecycleBase
LifecycleException
- Start error occurredprotected WebResourceSet createMainResourceSet()
protected void stopInternal() throws LifecycleException
LifecycleBase
LifecycleState.STOPPING
during the execution of this method.
Changing state will trigger the Lifecycle.STOP_EVENT
event.stopInternal
in class LifecycleBase
LifecycleException
- Stop error occurredprotected void destroyInternal() throws LifecycleException
LifecycleMBeanBase
destroyInternal
in class LifecycleMBeanBase
LifecycleException
Copyright © 2000-2016 Apache Software Foundation. All Rights Reserved.