Package org.apache.catalina.startup
Class HostConfig
- java.lang.Object
-
- org.apache.catalina.startup.HostConfig
-
- All Implemented Interfaces:
LifecycleListener
public class HostConfig extends java.lang.Object implements LifecycleListener
Startup event listener for a Host that configures the properties of that Host, and the associated defined contexts.- Author:
- Craig R. McClanahan, Remy Maucherat
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
HostConfig.DeployedApplication
This class represents the state of a deployed application, as well as the monitored resources.
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.String
contextClass
The Java class name of the Context implementation we should use.protected boolean
copyXML
Should XML files be copied to $CATALINA_BASE/conf/<engine>/<host> by default when a web application is deployed?protected java.util.Map<java.lang.String,HostConfig.DeployedApplication>
deployed
Map of deployed applications.protected boolean
deployXML
Should we deploy XML Context config files packaged with WAR files and directories?protected Digester
digester
TheDigester
instance used to parse context descriptors.protected static long
FILE_MODIFICATION_RESOLUTION_MS
The resolution, in milliseconds, of file modification times.protected Host
host
The Host we are associated with.protected java.util.Set<java.lang.String>
invalidWars
The list of Wars in the appBase to be ignored because they are invalid (e.g. contain /../ sequences).protected javax.management.ObjectName
oname
The JMX ObjectName of this component.protected java.util.ArrayList<java.lang.String>
serviced
Deprecated.Unused.protected static StringManager
sm
The string resources for this package.protected boolean
unpackWARs
Should we unpack WAR files when auto-deploying applications in theappBase
directory?
-
Constructor Summary
Constructors Constructor Description HostConfig()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected void
addGlobalRedeployResources(HostConfig.DeployedApplication app)
void
addServiced(java.lang.String name)
Deprecated.Unused.protected void
addWatchedResources(HostConfig.DeployedApplication app, java.lang.String docBase, Context context)
Add watched resources to the specified Context.void
beforeStart()
protected void
check()
Check status of all webapps.void
check(java.lang.String name)
Check status of a specific web application and reload, redeploy or deploy it as necessary.protected void
checkResources(HostConfig.DeployedApplication app, boolean skipFileModificationResolutionCheck)
Check resources for redeployment and reloading.void
checkUndeploy()
Check for old versions of applications using parallel deployment that are now unused (have no active sessions) and undeploy any that are found.protected static Digester
createDigester(java.lang.String contextClassName)
Create the digester which will be used to parse context config files.protected void
deployApps()
Deploy applications for any directories or WAR files that are found in our "application root" directory.protected void
deployApps(java.lang.String name)
Deploy applications for any directories or WAR files that are found in our "application root" directory.protected void
deployDescriptor(ContextName cn, java.io.File contextXml)
Deploy specified context descriptor.protected void
deployDescriptors(java.io.File configBase, java.lang.String[] files)
Deploy XML context descriptors.protected void
deployDirectories(java.io.File appBase, java.lang.String[] files)
Deploy exploded webapps.protected void
deployDirectory(ContextName cn, java.io.File dir)
Deploy exploded webapp.protected boolean
deploymentExists(java.lang.String contextName)
Check if a webapp is already deployed in this host.protected void
deployWAR(ContextName cn, java.io.File war)
Deploy packed WAR.protected void
deployWARs(java.io.File appBase, java.lang.String[] files)
Deploy WAR files.protected java.lang.String[]
filterAppPaths(java.lang.String[] unfilteredAppPaths)
Filter the list of application file paths to remove those that match the regular expression defined byHost.getDeployIgnore()
.java.lang.String
getConfigBaseName()
Get the name of the configBase.java.lang.String
getContextClass()
long
getDeploymentTime(java.lang.String name)
Get the instant where an application was deployed.boolean
isCopyXML()
boolean
isDeployed(java.lang.String name)
Has the specified application been deployed?boolean
isDeployXML()
boolean
isServiced(java.lang.String name)
Deprecated.Unused.boolean
isUnpackWARs()
void
lifecycleEvent(LifecycleEvent event)
Process the START event for an associated Host.void
manageApp(Context context)
Add a new Context to be managed by us.protected void
migrateLegacyApp(java.io.File source, java.io.File destination)
protected void
migrateLegacyApps()
void
removeServiced(java.lang.String name)
Removed a serviced application from the list.protected java.io.File
returnCanonicalPath(java.lang.String path)
void
setContextClass(java.lang.String contextClass)
Set the Context implementation class name.void
setCopyXML(boolean copyXML)
Set the copy XML config file flag for this component.void
setDeployXML(boolean deployXML)
Set the deploy XML config file flag for this component.void
setUnpackWARs(boolean unpackWARs)
Set the unpack WARs flag.void
start()
Process a "start" event for this Host.void
stop()
Process a "stop" event for this Host.boolean
tryAddServiced(java.lang.String name)
Add a serviced application to the list and indicates if the application was already present in the list.void
unmanageApp(java.lang.String contextName)
Remove a webapp from our control.
-
-
-
Field Detail
-
sm
protected static final StringManager sm
The string resources for this package.
-
FILE_MODIFICATION_RESOLUTION_MS
protected static final long FILE_MODIFICATION_RESOLUTION_MS
The resolution, in milliseconds, of file modification times.- See Also:
- Constant Field Values
-
contextClass
protected java.lang.String contextClass
The Java class name of the Context implementation we should use.
-
host
protected Host host
The Host we are associated with.
-
oname
protected javax.management.ObjectName oname
The JMX ObjectName of this component.
-
deployXML
protected boolean deployXML
Should we deploy XML Context config files packaged with WAR files and directories?
-
copyXML
protected boolean copyXML
Should XML files be copied to $CATALINA_BASE/conf/<engine>/<host> by default when a web application is deployed?
-
unpackWARs
protected boolean unpackWARs
Should we unpack WAR files when auto-deploying applications in theappBase
directory?
-
deployed
protected final java.util.Map<java.lang.String,HostConfig.DeployedApplication> deployed
Map of deployed applications.
-
serviced
@Deprecated protected final java.util.ArrayList<java.lang.String> serviced
Deprecated.Unused. Will be removed in Tomcat 10.1.x onwards. Replaced by the privateservicedSet
field.List of applications which are being serviced, and shouldn't be deployed/undeployed/redeployed at the moment.
-
digester
protected Digester digester
TheDigester
instance used to parse context descriptors.
-
invalidWars
protected final java.util.Set<java.lang.String> invalidWars
The list of Wars in the appBase to be ignored because they are invalid (e.g. contain /../ sequences).
-
-
Method Detail
-
getContextClass
public java.lang.String getContextClass()
- Returns:
- the Context implementation class name.
-
setContextClass
public void setContextClass(java.lang.String contextClass)
Set the Context implementation class name.- Parameters:
contextClass
- The new Context implementation class name.
-
isDeployXML
public boolean isDeployXML()
- Returns:
- the deploy XML config file flag for this component.
-
setDeployXML
public void setDeployXML(boolean deployXML)
Set the deploy XML config file flag for this component.- Parameters:
deployXML
- The new deploy XML flag
-
isCopyXML
public boolean isCopyXML()
- Returns:
- the copy XML config file flag for this component.
-
setCopyXML
public void setCopyXML(boolean copyXML)
Set the copy XML config file flag for this component.- Parameters:
copyXML
- The new copy XML flag
-
isUnpackWARs
public boolean isUnpackWARs()
- Returns:
- the unpack WARs flag.
-
setUnpackWARs
public void setUnpackWARs(boolean unpackWARs)
Set the unpack WARs flag.- Parameters:
unpackWARs
- The new unpack WARs flag
-
lifecycleEvent
public void lifecycleEvent(LifecycleEvent event)
Process the START event for an associated Host.- Specified by:
lifecycleEvent
in interfaceLifecycleListener
- Parameters:
event
- The lifecycle event that has occurred
-
tryAddServiced
public boolean tryAddServiced(java.lang.String name)
Add a serviced application to the list and indicates if the application was already present in the list.- Parameters:
name
- the context name- Returns:
true
if the application was not already in the list
-
addServiced
@Deprecated public void addServiced(java.lang.String name)
Deprecated.Unused. This method will be removed in Tomcat 10.1.x onwards. UsetryAddServiced(java.lang.String)
instead.Add a serviced application to the list if it is not already present. If the application is already in the list of serviced applications this method is a NO-OP.- Parameters:
name
- the context name
-
isServiced
@Deprecated public boolean isServiced(java.lang.String name)
Deprecated.Unused. This method will be removed in Tomcat 10.1.x onwards. UsetryAddServiced(java.lang.String)
instead.Is application serviced ?- Parameters:
name
- the context name- Returns:
- state of the application
-
removeServiced
public void removeServiced(java.lang.String name)
Removed a serviced application from the list.- Parameters:
name
- the context name
-
getDeploymentTime
public long getDeploymentTime(java.lang.String name)
Get the instant where an application was deployed.- Parameters:
name
- the context name- Returns:
- 0L if no application with that name is deployed, or the instant on which the application was deployed
-
isDeployed
public boolean isDeployed(java.lang.String name)
Has the specified application been deployed? Note applications defined in server.xml will not have been deployed.- Parameters:
name
- the context name- Returns:
true
if the application has been deployed andfalse
if the application has not been deployed or does not exist
-
createDigester
protected static Digester createDigester(java.lang.String contextClassName)
Create the digester which will be used to parse context config files.- Parameters:
contextClassName
- The class which will be used to create the context instance- Returns:
- the digester
-
returnCanonicalPath
protected java.io.File returnCanonicalPath(java.lang.String path)
-
getConfigBaseName
public java.lang.String getConfigBaseName()
Get the name of the configBase. For use with JMX management.- Returns:
- the config base
-
deployApps
protected void deployApps()
Deploy applications for any directories or WAR files that are found in our "application root" directory.
-
filterAppPaths
protected java.lang.String[] filterAppPaths(java.lang.String[] unfilteredAppPaths)
Filter the list of application file paths to remove those that match the regular expression defined byHost.getDeployIgnore()
.- Parameters:
unfilteredAppPaths
- The list of application paths to filter- Returns:
- The filtered list of application paths
-
deployApps
protected void deployApps(java.lang.String name)
Deploy applications for any directories or WAR files that are found in our "application root" directory.Note: It is expected that the caller has successfully added the app to servicedSet before calling this method.
- Parameters:
name
- The context name which should be deployed
-
deployDescriptors
protected void deployDescriptors(java.io.File configBase, java.lang.String[] files)
Deploy XML context descriptors.- Parameters:
configBase
- The config basefiles
- The XML descriptors which should be deployed
-
deployDescriptor
protected void deployDescriptor(ContextName cn, java.io.File contextXml)
Deploy specified context descriptor.Note: It is expected that the caller has successfully added the app to servicedSet before calling this method.
- Parameters:
cn
- The context namecontextXml
- The descriptor
-
deployWARs
protected void deployWARs(java.io.File appBase, java.lang.String[] files)
Deploy WAR files.- Parameters:
appBase
- The base path for applicationsfiles
- The WARs to deploy
-
deployWAR
protected void deployWAR(ContextName cn, java.io.File war)
Deploy packed WAR.Note: It is expected that the caller has successfully added the app to servicedSet before calling this method.
- Parameters:
cn
- The context namewar
- The WAR file
-
deployDirectories
protected void deployDirectories(java.io.File appBase, java.lang.String[] files)
Deploy exploded webapps.- Parameters:
appBase
- The base path for applicationsfiles
- The exploded webapps that should be deployed
-
deployDirectory
protected void deployDirectory(ContextName cn, java.io.File dir)
Deploy exploded webapp.Note: It is expected that the caller has successfully added the app to servicedSet before calling this method.
- Parameters:
cn
- The context namedir
- The path to the root folder of the webapp
-
migrateLegacyApps
protected void migrateLegacyApps()
-
migrateLegacyApp
protected void migrateLegacyApp(java.io.File source, java.io.File destination)
-
deploymentExists
protected boolean deploymentExists(java.lang.String contextName)
Check if a webapp is already deployed in this host.- Parameters:
contextName
- of the context which will be checked- Returns:
true
if the specified deployment exists
-
addWatchedResources
protected void addWatchedResources(HostConfig.DeployedApplication app, java.lang.String docBase, Context context)
Add watched resources to the specified Context.- Parameters:
app
- HostConfig deployed appdocBase
- web app docBasecontext
- web application context
-
addGlobalRedeployResources
protected void addGlobalRedeployResources(HostConfig.DeployedApplication app)
-
checkResources
protected void checkResources(HostConfig.DeployedApplication app, boolean skipFileModificationResolutionCheck)
Check resources for redeployment and reloading.- Parameters:
app
- The web application to checkskipFileModificationResolutionCheck
- When checking files for modification should the check that requires that any file modification must have occurred at least as long ago as the resolution of the file time stamp be skipped
-
beforeStart
public void beforeStart()
-
start
public void start()
Process a "start" event for this Host.
-
stop
public void stop()
Process a "stop" event for this Host.
-
check
protected void check()
Check status of all webapps.
-
check
public void check(java.lang.String name)
Check status of a specific web application and reload, redeploy or deploy it as necessary. This method is for use with functionality such as management web applications that upload new/updated web applications and need to trigger the appropriate action to deploy them. This method assumes that any uploading/updating has been completed before this method is called. Any action taken as a result of the checks will complete before this method returns.- Parameters:
name
- The name of the web application to check
-
checkUndeploy
public void checkUndeploy()
Check for old versions of applications using parallel deployment that are now unused (have no active sessions) and undeploy any that are found.
-
manageApp
public void manageApp(Context context)
Add a new Context to be managed by us. Entry point for the admin webapp, and other JMX Context controllers.- Parameters:
context
- The context instance
-
unmanageApp
public void unmanageApp(java.lang.String contextName)
Remove a webapp from our control. Entry point for the admin webapp, and other JMX Context controllers.Note: It is expected that the caller has successfully added the app to servicedSet before calling this method.
- Parameters:
contextName
- The context name
-
-