Package org.apache.catalina.webresources
Class JarWarResourceSet
- java.lang.Object
-
- org.apache.catalina.util.LifecycleBase
-
- org.apache.catalina.webresources.AbstractResourceSet
-
- org.apache.catalina.webresources.AbstractArchiveResourceSet
-
- org.apache.catalina.webresources.JarWarResourceSet
-
- All Implemented Interfaces:
Lifecycle
,WebResourceSet
public class JarWarResourceSet extends AbstractArchiveResourceSet
Represents aWebResourceSet
based on a JAR file that is nested inside a packed WAR file. This is only intended for internal use within Tomcat and therefore cannot be created via configuration.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.apache.catalina.Lifecycle
Lifecycle.SingleUse
-
-
Field Summary
-
Fields inherited from class org.apache.catalina.webresources.AbstractArchiveResourceSet
archiveEntries, archiveLock
-
Fields inherited from class org.apache.catalina.webresources.AbstractResourceSet
sm
-
Fields inherited from interface org.apache.catalina.Lifecycle
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 Summary
Constructors Constructor Description JarWarResourceSet(WebResourceRoot root, java.lang.String webAppMount, java.lang.String base, java.lang.String archivePath, java.lang.String internalPath)
Creates a newWebResourceSet
based on a JAR file that is nested inside a WAR.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected WebResource
createArchiveResource(java.util.jar.JarEntry jarEntry, java.lang.String webAppPath, java.util.jar.Manifest manifest)
protected java.util.Map<java.lang.String,java.util.jar.JarEntry>
getArchiveEntries(boolean single)
Obtain the map of entries in the archive.protected java.util.jar.JarEntry
getArchiveEntry(java.lang.String pathInArchive)
Obtain a single entry from the archive.protected void
initInternal()
Sub-classes implement this method to perform any instance initialisation required.protected boolean
isMultiRelease()
protected void
processArchivesEntriesForMultiRelease()
-
Methods inherited from class org.apache.catalina.webresources.AbstractArchiveResourceSet
closeJarFile, gc, getBaseUrl, getBaseUrlString, getResource, isReadOnly, list, listWebAppPaths, mkdir, openJarFile, setBaseUrl, setReadOnly, write
-
Methods inherited from class org.apache.catalina.webresources.AbstractResourceSet
checkPath, destroyInternal, getBase, getClassLoaderOnly, getInternalPath, getManifest, getRoot, getStaticOnly, getWebAppMount, setBase, setClassLoaderOnly, setInternalPath, setManifest, setRoot, setStaticOnly, setWebAppMount, startInternal, stopInternal
-
Methods inherited from class org.apache.catalina.util.LifecycleBase
addLifecycleListener, destroy, findLifecycleListeners, fireLifecycleEvent, getState, getStateName, getThrowOnFailure, init, removeLifecycleListener, setState, setState, setThrowOnFailure, start, stop
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.catalina.Lifecycle
addLifecycleListener, destroy, findLifecycleListeners, getState, getStateName, init, removeLifecycleListener, start, stop
-
-
-
-
Constructor Detail
-
JarWarResourceSet
public JarWarResourceSet(WebResourceRoot root, java.lang.String webAppMount, java.lang.String base, java.lang.String archivePath, java.lang.String internalPath) throws java.lang.IllegalArgumentException
Creates a newWebResourceSet
based on a JAR file that is nested inside a WAR.- Parameters:
root
- TheWebResourceRoot
this newWebResourceSet
will be added to.webAppMount
- The path within the web application at which thisWebResourceSet
will be mounted.base
- The absolute path to the WAR file on the file system in which the JAR is located.archivePath
- The path within the WAR file where the JAR file is located.internalPath
- The path within this newWebResourceSet
where resources will be served from. E.g. for a resource JAR, this would be "META-INF/resources"- Throws:
java.lang.IllegalArgumentException
- if the webAppMount or internalPath is not valid (valid paths must start with '/')
-
-
Method Detail
-
createArchiveResource
protected WebResource createArchiveResource(java.util.jar.JarEntry jarEntry, java.lang.String webAppPath, java.util.jar.Manifest manifest)
- Specified by:
createArchiveResource
in classAbstractArchiveResourceSet
-
getArchiveEntries
protected java.util.Map<java.lang.String,java.util.jar.JarEntry> getArchiveEntries(boolean single)
Obtain the map of entries in the archive. May return null in which caseAbstractArchiveResourceSet.getArchiveEntry(String)
should be used.JarWar can't optimise for a single resource so the Map is always returned.
- Specified by:
getArchiveEntries
in classAbstractArchiveResourceSet
- Parameters:
single
- Is this request being make to support a single lookup? If false, a map will always be returned. If true, implementations may use this as a hint in determining the optimum way to respond.- Returns:
- The archives entries mapped to their names or null if
AbstractArchiveResourceSet.getArchiveEntry(String)
should be used.
-
processArchivesEntriesForMultiRelease
protected void processArchivesEntriesForMultiRelease()
-
getArchiveEntry
protected java.util.jar.JarEntry getArchiveEntry(java.lang.String pathInArchive)
Obtain a single entry from the archive. For performance reasons,AbstractArchiveResourceSet.getArchiveEntries(boolean)
should always be called first and the archive entry looked up in the map if one is returned. Only if that call returns null should this method be used.Should never be called since
getArchiveEntries(boolean)
always returns a Map.- Specified by:
getArchiveEntry
in classAbstractArchiveResourceSet
- Parameters:
pathInArchive
- The path in the archive of the entry required- Returns:
- The specified archive entry or null if it does not exist
-
isMultiRelease
protected boolean isMultiRelease()
- Specified by:
isMultiRelease
in classAbstractArchiveResourceSet
-
initInternal
protected void initInternal() throws LifecycleException
Description copied from class:LifecycleBase
Sub-classes implement this method to perform any instance initialisation required.- Specified by:
initInternal
in classLifecycleBase
- Throws:
LifecycleException
- If the initialisation fails
-
-