catalina.home=/opt/50

loader.auto-startup=org.apache.tomcat.util.jmx.JmxRemoteLoader,\
             org.apache.catalina.startup.CatalinaModuleListener

#
# List of comma-separated packages that start with or equal this string
# will cause a security exception to be thrown when
# passed to checkPackageAccess unless the
# corresponding RuntimePermission ("accessClassInPackage."+package) has
# been granted.
loader.package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper.,sun.beans.
#
# List of comma-separated packages that start with or equal this string
# will cause a security exception to be thrown when
# passed to checkPackageDefinition unless the
# corresponding RuntimePermission ("defineClassInPackage."+package) has
# been granted.
#
# by default, no packages are restricted for definition, and none of
# the class loaders supplied with the JDK call checkPackageDefinition.
#
loader.package.definition=sun.,java.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper.

#
#
# List of comma-separated paths defining the contents of the "common" 
# classloader. Prefixes should be used to define what is the repository type.
# Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute.
# If left as blank,the JVM system loader will be used as Catalina's "common" 
# loader.
# Examples:
#     "foo": Add this folder as a class repository
#     "foo/*.jar": Add all the JARs of the specified folder as class 
#                  repositories
#     "foo/bar.jar": Add bar.jar as a class repository
common.loader=${catalina.home}/bin/jmx.jar,\
    ${catalina.home}/common/classes,\
    ${catalina.home}/common/i18n/tomcat-i18n-en.jar,${catalina.home}/common/endorsed/*.jar,${catalina.home}/common/lib/*.jar

#
# List of comma-separated paths defining the contents of the "server" 
# classloader. Prefixes should be used to define what is the repository type.
# Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute.
# If left as blank, the "common" loader will be used as Catalina's "server" 
# loader.
# Examples:
#     "foo": Add this folder as a class repository
#     "foo/*.jar": Add all the JARs of the specified folder as class 
#                  repositories
#     "foo/bar.jar": Add bar.jar as a class repository
server.loader=/ws/apache/jakarta-tomcat-connectors/util/build/classes,/ws/apache/jakarta-tomcat-catalina/build/classes,/ws/apache/jakarta-tomcat-connectors/build/classes,${catalina.home}/server/lib/commons-modeler.jar

#
# List of comma-separated paths defining the contents of the "shared" 
# classloader. Prefixes should be used to define what is the repository type.
# Path may be relative to the CATALINA_BASE path or absolute. If left as blank,
# the "common" loader will be used as Catalina's "shared" loader.
# Examples:
#     "foo": Add this folder as a class repository
#     "foo/*.jar": Add all the JARs of the specified folder as class 
#                  repositories
#     "foo/bar.jar": Add bar.jar as a class repository 
shared.loader=${catalina.base}/shared/classes,${catalina.base}/shared/lib/*.jar

# Classes to preload to avoid security exceptions
loader.security.preload=\
             org.apache.catalina.core.ApplicationContextFacade$1,\
             org.apache.catalina.core.ApplicationDispatcher$PrivilegedForward,\
             org.apache.catalina.core.ApplicationDispatcher$PrivilegedInclude,\
             org.apache.catalina.core.ContainerBase$PrivilegedAddChild,\
             org.apache.catalina.core.StandardWrapper$1,\
             org.apache.catalina.loader.WebappClassLoader$PrivilegedFindResource,\
             org.apache.catalina.session.StandardSession,\
             org.apache.catalina.session.StandardSession$1,\
             org.apache.catalina.session.StandardManager$PrivilegedDoUnload,\
             org.apache.catalina.util.URL,\
             org.apache.catalina.util.Enumerator,\
             javax.servlet.http.Cookie,\
            org.apache.coyote.http11Http11Processor$1,\
            org.apache.coyote.http11InternalOutputBuffer$1,\
            org.apache.coyote.http11InternalOutputBuffer$2,\
             org.apache.catalina.connector.RequestFacade$GetAttributePrivilegedAction,\
             org.apache.catalina.connector.RequestFacade$GetParameterMapPrivilegedAction,\
             org.apache.catalina.connector.RequestFacade$GetRequestDispatcherPrivilegedAction,\
             org.apache.catalina.connector.RequestFacade$GetParameterPrivilegedAction,\
             org.apache.catalina.connector.RequestFacade$GetParameterNamesPrivilegedAction,\
             org.apache.catalina.connector.RequestFacade$GetParameterValuePrivilegedAction,\
             org.apache.catalina.connector.RequestFacade$GetCharacterEncodingPrivilegedAction,\
             org.apache.catalina.connector.RequestFacade$GetHeadersPrivilegedAction,\
             org.apache.catalina.connector.RequestFacade$GetHeaderNamesPrivilegedAction,\  
             org.apache.catalina.connector.RequestFacade$GetCookiesPrivilegedAction,\
             org.apache.catalina.connector.RequestFacade$GetLocalePrivilegedAction,\
             org.apache.catalina.connector.RequestFacade$GetLocalesPrivilegedAction,\
             org.apache.catalina.connector.ResponseFacade$SetContentTypePrivilegedAction,\
             org.apache.catalina.connector.ResponseFacade$DateHeaderPrivilegedAction,\
             org.apache.catalina.connector.RequestFacade$GetSessionPrivilegedAction,\
             org.apache.catalina.connector.ResponseFacade$1,\
             org.apache.catalina.connector.OutputBuffer$1,\
             org.apache.catalina.connector.CoyoteInputStream$1,\
             org.apache.catalina.connector.CoyoteInputStream$2,\
             org.apache.catalina.connector.CoyoteInputStream$3,\
             org.apache.catalina.connector.CoyoteInputStream$4,\
             org.apache.catalina.connector.CoyoteInputStream$5,\
             org.apache.catalina.connector.InputBuffer$1,\
             org.apache.catalina.connector.Response$1,\
             org.apache.catalina.connector.Response$2,\
             org.apache.catalina.connector.Response$3,\
             org.apache.jk.server.JkCoyoteHandler$1,\
             org.apache.jk.server.JkCoyoteHandler$StatusLinePrivilegedAction
