add tomcat7
This commit is contained in:
parent
952239edbf
commit
d47b11eabf
36
centos8_tomcat/Dockerfile
Normal file
36
centos8_tomcat/Dockerfile
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
FROM centos:8
|
||||||
|
MAINTAINER Donfig <choi.jh@idcjp.jp>
|
||||||
|
|
||||||
|
# My comment here
|
||||||
|
RUN echo '1. Base packages install'
|
||||||
|
RUN dnf install -y glibc-langpack-ko
|
||||||
|
|
||||||
|
RUN echo '2. Locale and Timezone environment'
|
||||||
|
ENV LANG ko_KR.utf8
|
||||||
|
RUN echo 'LANG="$LANG"' > /etc/locale.conf
|
||||||
|
RUN unlink /etc/localtime
|
||||||
|
RUN ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
|
||||||
|
RUN echo 'set encoding=utf-8' >> /etc/vimrc
|
||||||
|
RUN echo 'set encoding=utf-8' >> /etc/virc
|
||||||
|
RUN echo 'set fileencodings=utf-8,cp949' >> /etc/vimrc
|
||||||
|
RUN echo 'set fileencodings=utf-8,cp949' >> /etc/virc
|
||||||
|
RUN echo 'set softtabstop=4' >> /etc/vimrc
|
||||||
|
RUN echo 'set softtabstop=4' >> /etc/virc
|
||||||
|
RUN echo 'set shiftwidth=4' >> /etc/vimrc
|
||||||
|
RUN echo 'set shiftwidth=4' >> /etc/virc
|
||||||
|
RUN echo 'set tabstop=4' >> /etc/vimrc
|
||||||
|
RUN echo 'set tabstop=4' >> /etc/virc
|
||||||
|
RUN echo 'set paste' >> /etc/vimrc
|
||||||
|
RUN echo 'set paste' >> /etc/virc
|
||||||
|
RUN echo 'export LANG="$LANG"' >> /etc/bashrc
|
||||||
|
RUN echo 'export LANGUAGE="$LANG"' >> /etc/bashrc
|
||||||
|
RUN source /etc/bashrc
|
||||||
|
|
||||||
|
RUN echo '2. Install need Package'
|
||||||
|
RUN dnf -y install java
|
||||||
|
|
||||||
|
RUN echo '3. Setting Supervisor for Web'
|
||||||
|
COPY apache-tomcat-7.0.108 /usr/local/tomcat
|
||||||
|
|
||||||
|
EXPOSE 8080
|
||||||
|
CMD [ "/usr/local/tomcat/bin/catalina.sh","run"]
|
||||||
BIN
centos8_tomcat/apache-tomcat-7.0.108.tar.gz
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108.tar.gz
Normal file
Binary file not shown.
522
centos8_tomcat/apache-tomcat-7.0.108/BUILDING.txt
Normal file
522
centos8_tomcat/apache-tomcat-7.0.108/BUILDING.txt
Normal file
@ -0,0 +1,522 @@
|
|||||||
|
================================================================================
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
================================================================================
|
||||||
|
|
||||||
|
====================================================
|
||||||
|
Building The Apache Tomcat 7.0 Servlet/JSP Container
|
||||||
|
====================================================
|
||||||
|
|
||||||
|
This subproject contains the source code for Tomcat 7.0, a container that
|
||||||
|
implements the Servlet 3.0, JSP 2.2, EL 2.2 and WebSocket 1.1 specifications
|
||||||
|
from the Java Community Process <https://www.jcp.org/>.
|
||||||
|
|
||||||
|
Note: If you just need to run Apache Tomcat, it is not necessary to build
|
||||||
|
it. You may simply download a binary distribution. It is cross-platform.
|
||||||
|
Read RUNNING.txt for the instruction on how to run it.
|
||||||
|
|
||||||
|
In order to build a binary distribution version of Apache Tomcat from a
|
||||||
|
source distribution, do the following:
|
||||||
|
|
||||||
|
|
||||||
|
(1) Download and Install a Java 6 and Java 7 Development Kit
|
||||||
|
|
||||||
|
1. If the JDKs are already installed, skip to (2).
|
||||||
|
|
||||||
|
2. Download a version 6 of the Java Development Kit (JDK) release (use the
|
||||||
|
latest update available for your chosen version) from
|
||||||
|
|
||||||
|
http://www.oracle.com/technetwork/java/javase/downloads/index.html
|
||||||
|
or from another JDK vendor.
|
||||||
|
|
||||||
|
Note regarding later versions of Java:
|
||||||
|
|
||||||
|
As documented elsewhere, one of the components in Apache Tomcat includes
|
||||||
|
a private copy of the Apache Commons DBCP 1.x library. The source code
|
||||||
|
for this library is downloaded, processed by the build script
|
||||||
|
(renaming the packages) and compiled.
|
||||||
|
|
||||||
|
Due to changes in JDBC interfaces implemented by the library between
|
||||||
|
versions of Java SE specification, the library has to target specific
|
||||||
|
version of Java and can be compiled only with the JDK version
|
||||||
|
implementing this version of specification. Therefore, the build Tomcat
|
||||||
|
build process must be executed with a Java 6 JDK.
|
||||||
|
|
||||||
|
See Apache Commons DBCP 1.x project web site for more details on
|
||||||
|
available versions of the library and its requirements,
|
||||||
|
|
||||||
|
https://commons.apache.org/dbcp/
|
||||||
|
|
||||||
|
If you really want to use a later version of JDK to build Tomcat,
|
||||||
|
several workarounds are possible. One of them is to skip building
|
||||||
|
the component (tomcat-dbcp.jar).
|
||||||
|
|
||||||
|
3. Install the Java 6 JDK according to the instructions included with the
|
||||||
|
release.
|
||||||
|
|
||||||
|
4. Set an environment variable JAVA_HOME to the pathname of the directory
|
||||||
|
into which you installed the JDK release.
|
||||||
|
|
||||||
|
5. Download a version 7 of the Java Development Kit (JDK) release (use the
|
||||||
|
latest update available for your chosen version) from
|
||||||
|
|
||||||
|
http://www.oracle.com/technetwork/java/javase/downloads/index.html
|
||||||
|
or from another JDK vendor.
|
||||||
|
|
||||||
|
6. Install the Java 7 JDK according to the instructions included with the
|
||||||
|
release.
|
||||||
|
|
||||||
|
* NOTE: The Java 7 JDK is only required if you wish to build Tomcat with
|
||||||
|
JSR-356 (Java WebSocket 1.1) support.
|
||||||
|
|
||||||
|
|
||||||
|
(2) Install Apache Ant version 1.9.1 or later on your computer
|
||||||
|
|
||||||
|
1. If Apache Ant version 1.9.1 or later is already installed on your computer, skip to (3).
|
||||||
|
|
||||||
|
2. Download a binary distribution of Ant from:
|
||||||
|
|
||||||
|
https://ant.apache.org/bindownload.cgi
|
||||||
|
|
||||||
|
3. Unpack the binary distribution into a convenient location so that the
|
||||||
|
Ant release resides in its own directory (conventionally named
|
||||||
|
"apache-ant-[version]").
|
||||||
|
|
||||||
|
For the purposes of the remainder of this document, the symbolic name
|
||||||
|
"${ant.home}" is used to refer to the full pathname of the release
|
||||||
|
directory.
|
||||||
|
|
||||||
|
4. Create an ANT_HOME environment variable to point the directory
|
||||||
|
${ant.home}.
|
||||||
|
|
||||||
|
5. Modify the PATH environment variable to include the directory
|
||||||
|
${ant.home}/bin in its list. This makes the "ant" command line script
|
||||||
|
available, which will be used to actually perform the build.
|
||||||
|
|
||||||
|
|
||||||
|
(3) Building Tomcat 7.0
|
||||||
|
|
||||||
|
(3.1) Checkout or obtain the source code for Tomcat 7.0
|
||||||
|
|
||||||
|
Clone the source using git, then checkout a specific major branch or
|
||||||
|
master for the latest code development, or download and unpack a source
|
||||||
|
package.
|
||||||
|
|
||||||
|
* Tomcat GitHub repository URL:
|
||||||
|
|
||||||
|
https://github.com/apache/tomcat
|
||||||
|
|
||||||
|
* Source packages can be downloaded from:
|
||||||
|
|
||||||
|
https://tomcat.apache.org/download-70.cgi
|
||||||
|
|
||||||
|
The location where the source has been placed will be further referred as
|
||||||
|
${tomcat.source}.
|
||||||
|
|
||||||
|
The Tomcat local build process does not modify line-endings. The svn repository
|
||||||
|
is configured so that all files will be checked out with the line-ending
|
||||||
|
appropriate for the current platform. When using a source package you should
|
||||||
|
ensure that you use the source package that has the appropriate line-ending
|
||||||
|
for your platform:
|
||||||
|
|
||||||
|
zip -> CRLF
|
||||||
|
tar.gz -> LF
|
||||||
|
|
||||||
|
Note that the release build process does modify line-endings to ensure that
|
||||||
|
each release package has the appropriate line-endings.
|
||||||
|
|
||||||
|
(3.2) Building
|
||||||
|
|
||||||
|
1. The build is controlled by creating a ${tomcat.source}/build.properties
|
||||||
|
file.
|
||||||
|
|
||||||
|
It is recommended to always create the file, because of unfortunate
|
||||||
|
default value of base.path property. You may start with the following
|
||||||
|
content for the file:
|
||||||
|
|
||||||
|
# ----- Default Base Path for Dependent Packages -----
|
||||||
|
# Replace this path with the directory path where dependencies binaries
|
||||||
|
# should be downloaded
|
||||||
|
base.path=/home/me/some-place-to-download-to
|
||||||
|
|
||||||
|
2. Configure base.path property by adding it to the
|
||||||
|
${tomcat.source}/build.properties file.
|
||||||
|
|
||||||
|
The base.path property specifies the place where Tomcat dependencies
|
||||||
|
required by the build are downloaded. It is recommended to place this
|
||||||
|
directory outside of the source tree, so that you do not waste your
|
||||||
|
time re-downloading the libraries.
|
||||||
|
|
||||||
|
* NOTE: The default value of the base.path property configures the build script
|
||||||
|
to download the libraries required to build Tomcat to the
|
||||||
|
${user.home}/tomcat-build-libs directory.
|
||||||
|
|
||||||
|
* NOTE: Users accessing the Internet through a proxy must use the properties
|
||||||
|
file to indicate to Ant the proxy configuration.
|
||||||
|
|
||||||
|
The following properties should be added to the ${tomcat.source}/build.properties
|
||||||
|
file.
|
||||||
|
|
||||||
|
proxy.use=on
|
||||||
|
proxy.host=proxy.domain
|
||||||
|
proxy.port=8080
|
||||||
|
proxy.user=username
|
||||||
|
proxy.password=password
|
||||||
|
|
||||||
|
See Apache Ant documentation for the <setproxy> task for details.
|
||||||
|
|
||||||
|
* NOTE: Users wishing to build Tomcat with JSR-356 (Java WebSocket 1.1) support
|
||||||
|
must also set the java.7.home build property to the location of the Java 7 JDK
|
||||||
|
installation.
|
||||||
|
|
||||||
|
3. Go to the sources directory and run Ant:
|
||||||
|
|
||||||
|
cd ${tomcat.source}
|
||||||
|
ant
|
||||||
|
|
||||||
|
This will execute the "deploy" target in build.xml.
|
||||||
|
|
||||||
|
Once the build has completed successfully, a usable Tomcat installation
|
||||||
|
will have been produced in the ${tomcat.source}/output/build directory,
|
||||||
|
and can be started and stopped with the usual scripts.
|
||||||
|
|
||||||
|
Note that the build includes Tomcat documentation, which can be found
|
||||||
|
in the output/build/webapps/docs directory.
|
||||||
|
|
||||||
|
The path of the output directory can be controlled by specifying the
|
||||||
|
"tomcat.output" property in the build.properties file.
|
||||||
|
|
||||||
|
* NOTE: Do not run the build as the root user. Building and running Tomcat
|
||||||
|
does not require root privileges.
|
||||||
|
|
||||||
|
|
||||||
|
(4) Updating sources and rebuilding
|
||||||
|
|
||||||
|
It is recommended that you regularly update the downloaded Tomcat 7.0
|
||||||
|
sources using your SVN client.
|
||||||
|
|
||||||
|
For a quick rebuild of only modified code you can use:
|
||||||
|
|
||||||
|
cd ${tomcat.source}
|
||||||
|
ant
|
||||||
|
|
||||||
|
|
||||||
|
(5) Special builds
|
||||||
|
|
||||||
|
There are several targets in Tomcat build files that are useful to be
|
||||||
|
called separately. They build components that you may want to build
|
||||||
|
quickly, or ones that are included in the full release and are not built
|
||||||
|
during the default "deploy" build.
|
||||||
|
|
||||||
|
(5.1) Building documentation
|
||||||
|
|
||||||
|
The documentation web application is built during the default "deploy"
|
||||||
|
build.
|
||||||
|
|
||||||
|
It can be built quickly by using the following commands:
|
||||||
|
|
||||||
|
cd ${tomcat.source}
|
||||||
|
ant build-docs
|
||||||
|
|
||||||
|
The output of this command will be found in the following directory:
|
||||||
|
|
||||||
|
output/build/webapps/docs
|
||||||
|
|
||||||
|
|
||||||
|
The API documentation (Javadoc) is built during a "release" build. It is
|
||||||
|
easy to build it separately by using the following commands:
|
||||||
|
|
||||||
|
cd ${tomcat.source}
|
||||||
|
ant javadoc
|
||||||
|
|
||||||
|
The output of this command will be found in the following directories:
|
||||||
|
|
||||||
|
output/dist/webapps/docs/api
|
||||||
|
output/dist/webapps/docs/elapi
|
||||||
|
output/dist/webapps/docs/jspapi
|
||||||
|
output/dist/webapps/docs/servletapi
|
||||||
|
|
||||||
|
|
||||||
|
(5.2) Building the extras (commons-logging, webservices etc.)
|
||||||
|
|
||||||
|
These components are documented on the "Additional Components"
|
||||||
|
(extras.html) page of documentation. They are built during a "release"
|
||||||
|
build.
|
||||||
|
|
||||||
|
You can build them by using the following commands:
|
||||||
|
|
||||||
|
cd ${tomcat.source}
|
||||||
|
ant extras
|
||||||
|
|
||||||
|
(5.3) Building the embedded packages
|
||||||
|
|
||||||
|
These are built during a "release" build.
|
||||||
|
|
||||||
|
You can build them by using the following commands:
|
||||||
|
|
||||||
|
cd ${tomcat.source}
|
||||||
|
ant embed
|
||||||
|
|
||||||
|
|
||||||
|
(6) Building a full release (as provided via the ASF download pages)
|
||||||
|
|
||||||
|
A full release includes the Windows installer which requires a Windows
|
||||||
|
environment to be available to create it. If not building in a Windows
|
||||||
|
environment, the build scripts assume that Wine is available. If this is not
|
||||||
|
the case, the skip.installer property may be set to skip the creation of the
|
||||||
|
Windows installer.
|
||||||
|
|
||||||
|
1. Configure GPG, if needed
|
||||||
|
|
||||||
|
If the released artifacts have to be cryptographically signed with a
|
||||||
|
PGP signature, like the official ASF releases are, the following
|
||||||
|
property can be added to the build.properties file:
|
||||||
|
|
||||||
|
# Location of GPG executable (used only for releases)
|
||||||
|
gpg.exec=/path/to/gpg
|
||||||
|
|
||||||
|
You do not need it if you do not plan to sign the release.
|
||||||
|
|
||||||
|
If "gpg.exec" property does not point to an existing file, it will be
|
||||||
|
ignored and this feature will be disabled.
|
||||||
|
|
||||||
|
You will be prompted for the GPG passphrase when the release build
|
||||||
|
starts, unless "gpg.passphrase" property is set.
|
||||||
|
|
||||||
|
2. Build the release:
|
||||||
|
|
||||||
|
cd ${tomcat.source}
|
||||||
|
ant release
|
||||||
|
|
||||||
|
|
||||||
|
(7) Tests
|
||||||
|
|
||||||
|
(7.1) Running Tomcat tests
|
||||||
|
|
||||||
|
Tomcat includes a number of junit tests. The tests are not run when a
|
||||||
|
release is built. There is separate command to run them.
|
||||||
|
|
||||||
|
To run the testsuite use the following command:
|
||||||
|
|
||||||
|
cd ${tomcat.source}
|
||||||
|
ant test
|
||||||
|
|
||||||
|
It is advisable to redirect output of the above command to a file for later
|
||||||
|
inspection.
|
||||||
|
|
||||||
|
The JUnit reports generated by the tests will be written to the following
|
||||||
|
directory:
|
||||||
|
|
||||||
|
output/build/logs
|
||||||
|
|
||||||
|
By default the testsuite is run three times to test 3 different
|
||||||
|
implementations of Tomcat connectors: BIO, NIO and APR. (If you are not
|
||||||
|
familiar with Tomcat connectors, see config/http.html in documentation for
|
||||||
|
details).
|
||||||
|
|
||||||
|
The 3 runs are enabled and disabled individually by the following
|
||||||
|
properties, which all are "true" by default:
|
||||||
|
|
||||||
|
execute.test.bio=true
|
||||||
|
execute.test.nio=true
|
||||||
|
execute.test.apr=true
|
||||||
|
|
||||||
|
The APR connector can be tested only if Tomcat-Native library binaries are
|
||||||
|
found by the testsuite. The "test.apr.loc" property specifies the directory
|
||||||
|
where the library binaries are located.
|
||||||
|
|
||||||
|
By default the "test.apr.loc" property specifies the following location:
|
||||||
|
|
||||||
|
output/build/bin/native/
|
||||||
|
|
||||||
|
If you are on Windows and want to test the APR connector you can put the
|
||||||
|
tcnative-1.dll file into ${tomcat.source}/bin/native/ and it will be copied
|
||||||
|
into the above directory when the build runs.
|
||||||
|
|
||||||
|
* NOTE: If you configured the build to use a Java 7 JDK (if the
|
||||||
|
"java.7.home" property has been defined) the tests will be run with Java 7.
|
||||||
|
|
||||||
|
The version of Java that was actually used to run the tests is reported by
|
||||||
|
"org.apache.catalina.util.TestServerInfo" test class.
|
||||||
|
|
||||||
|
|
||||||
|
(7.2) Running a single test
|
||||||
|
|
||||||
|
It is possible to run a single JUnit test class by adding the "test.entry"
|
||||||
|
property to the build.properties file. The property specifies the name of
|
||||||
|
the test class.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
test.entry=org.apache.catalina.util.TestServerInfo
|
||||||
|
|
||||||
|
It is possible to further limit such run to a number of selected test
|
||||||
|
methods by adding "test.entry.methods" property. The property specifies a
|
||||||
|
comma-separated list of test case methods.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
test.entry=org.apache.el.lang.TestELArithmetic
|
||||||
|
test.entry.methods=testMultiply01,testMultiply02
|
||||||
|
|
||||||
|
|
||||||
|
(7.3) Running a set of tests
|
||||||
|
|
||||||
|
It is possible to run a set of JUnit test classes by adding the "test.name"
|
||||||
|
property to the build.properties file. The property specifies an Ant
|
||||||
|
includes pattern for the fileset of test class files to run.
|
||||||
|
|
||||||
|
The default value is "**/Test*.java", so all test classes are being
|
||||||
|
executed (with few exceptions - see build.xml for several exclude patterns).
|
||||||
|
|
||||||
|
You can include multiple patterns by concatenating them with a comma (",")
|
||||||
|
as the separator.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
test.name=**/TestSsl.java,**/TestWebSocketFrameClientSSL.java
|
||||||
|
|
||||||
|
You can exclude specific JUnit test classes by adding the "test.exclude"
|
||||||
|
property to the build.properties file. The property specifies an Ant
|
||||||
|
excludes pattern for the fileset of test class files to exclude form the run.
|
||||||
|
The default value is empty, so no classes are excluded. The syntax is the same
|
||||||
|
as for the property "test.name".
|
||||||
|
|
||||||
|
|
||||||
|
(7.4) Other configuration options
|
||||||
|
|
||||||
|
1. It is possible to configure the directory where JUnit reports are
|
||||||
|
written to. It is configured by "test.reports" property. The default
|
||||||
|
value is
|
||||||
|
|
||||||
|
output/build/logs
|
||||||
|
|
||||||
|
2. It is possible to enable generation of access log file when the tests
|
||||||
|
are run. This is off by default and can be enabled by the following
|
||||||
|
property:
|
||||||
|
|
||||||
|
test.accesslog=true
|
||||||
|
|
||||||
|
The "access_log.<date>" file will be written to the same directory as
|
||||||
|
JUnit reports,
|
||||||
|
|
||||||
|
output/build/logs
|
||||||
|
|
||||||
|
3. The testsuite respects logging configuration as configured by
|
||||||
|
${tomcat.source}/conf/logging.properties
|
||||||
|
|
||||||
|
The log files will be written to the temporary directory used by the
|
||||||
|
tests,
|
||||||
|
|
||||||
|
output/test-tmp/logs
|
||||||
|
|
||||||
|
4. It is possible to configure formatter used by JUnit reports.
|
||||||
|
Configuration properties are "junit.formatter.type",
|
||||||
|
"junit.formatter.extension" and "junit.formatter.usefile".
|
||||||
|
|
||||||
|
For example the following property disables generation of separate report
|
||||||
|
files:
|
||||||
|
|
||||||
|
junit.formatter.usefile=false
|
||||||
|
|
||||||
|
5. Optional support is provided for the Cobertura code coverage tool.
|
||||||
|
|
||||||
|
* NOTE: Cobertura is licensed under GPL v2 with parts of it being under
|
||||||
|
Apache License v1.1. See http://cobertura.sf.net for details. Using it
|
||||||
|
during Tomcat build is optional and is off by default.
|
||||||
|
|
||||||
|
Cobertura can be enabled using the following property:
|
||||||
|
|
||||||
|
test.cobertura=true
|
||||||
|
|
||||||
|
The report files by default are written to
|
||||||
|
|
||||||
|
output/coverage
|
||||||
|
|
||||||
|
6. The performance tests are written to run reasonably powerful machines (such
|
||||||
|
as a developer may use day to day) assuming no other resource hungry
|
||||||
|
processes are running.
|
||||||
|
|
||||||
|
These assumptions are not always true (e.g. on CI systems running in a
|
||||||
|
virtual machine) so the performance tests may be disabled by using the
|
||||||
|
following property:
|
||||||
|
|
||||||
|
test.excludePerformance=true
|
||||||
|
|
||||||
|
7. Some tests include checks that the access log valve entries are as expected.
|
||||||
|
These checks include timings. On slower / loaded systems these checks will
|
||||||
|
often fail. The checks may be relaxed by using the following property:
|
||||||
|
|
||||||
|
test.relaxTiming=true
|
||||||
|
|
||||||
|
8. It is known that some platforms (e.g. OSX El Capitan) require IPv4 to
|
||||||
|
be the default for the multicast tests to work. This is configured by
|
||||||
|
the following property:
|
||||||
|
|
||||||
|
java.net.preferIPv4Stack=true
|
||||||
|
|
||||||
|
9. It is possible to control whether the output of the tests is displayed
|
||||||
|
on the console or not. By default it is displayed and can be disabled
|
||||||
|
by the following property:
|
||||||
|
|
||||||
|
test.verbose=true
|
||||||
|
|
||||||
|
(8) Source code checks
|
||||||
|
|
||||||
|
(8.1) Checkstyle
|
||||||
|
|
||||||
|
* NOTE: Checkstyle is licensed under LGPL. Using Checkstyle during Tomcat
|
||||||
|
build is optional and is off by default.
|
||||||
|
|
||||||
|
See http://checkstyle.sourceforge.net/ for more information.
|
||||||
|
|
||||||
|
Tomcat comes with a Checkstyle configuration that tests its source code
|
||||||
|
for certain conventions, like presence of the license header.
|
||||||
|
|
||||||
|
To enable Checkstyle, add the following property to build.properties file:
|
||||||
|
|
||||||
|
execute.validate=true
|
||||||
|
|
||||||
|
Once Checkstyle is enabled, the check will be performed automatically
|
||||||
|
during the build. The check is run before compilation of the source code.
|
||||||
|
|
||||||
|
To speed-up repeated runs of this check, a cache is configured. The cache
|
||||||
|
is located in the following directory:
|
||||||
|
|
||||||
|
output/res/checkstyle
|
||||||
|
|
||||||
|
It is possible to run the check separately by calling the "validate"
|
||||||
|
target. The command is:
|
||||||
|
|
||||||
|
cd ${tomcat.source}
|
||||||
|
ant -Dexecute.validate=true validate
|
||||||
|
|
||||||
|
|
||||||
|
(8.2) End-of-line conventions check
|
||||||
|
|
||||||
|
You usually would not need to run this check. You can skip this section.
|
||||||
|
|
||||||
|
Apache Tomcat project has convention that all of its textual source files,
|
||||||
|
stored in the Git repository, use Unix style LF line endings.
|
||||||
|
|
||||||
|
This test is used by developers to check that the source code adheres to
|
||||||
|
this convention. It verifies that the ends of lines in textual files are
|
||||||
|
appropriate. The idea is to run this check regularly and notify developers
|
||||||
|
when an inconsistency is detected.
|
||||||
|
|
||||||
|
The command to run this test is:
|
||||||
|
|
||||||
|
cd ${tomcat.source}
|
||||||
|
ant validate-eoln
|
||||||
141
centos8_tomcat/apache-tomcat-7.0.108/CONTRIBUTING.md
Normal file
141
centos8_tomcat/apache-tomcat-7.0.108/CONTRIBUTING.md
Normal file
@ -0,0 +1,141 @@
|
|||||||
|
# Contributing to Apache Tomcat
|
||||||
|
|
||||||
|
Firstly, thanks for your interest in contributing! I hope that this will be a
|
||||||
|
pleasant experience for you, and that you will return to continue
|
||||||
|
contributing.
|
||||||
|
|
||||||
|
Please visit our [Get Involved page](https://tomcat.apache.org/getinvolved.html)
|
||||||
|
for more information on how to contribute.
|
||||||
|
|
||||||
|
## Code of Conduct
|
||||||
|
|
||||||
|
This project and everyone participating in it are governed by the Apache
|
||||||
|
software Foundation's
|
||||||
|
[Code of Conduct](https://www.apache.org/foundation/policies/conduct.html). By
|
||||||
|
participating, you are expected to adhere to this code. If you are aware of
|
||||||
|
unacceptable behavior, please visit the
|
||||||
|
[Reporting Guidelines page](https://www.apache.org/foundation/policies/conduct.html#reporting-guidelines)
|
||||||
|
and follow the instructions there.
|
||||||
|
|
||||||
|
## How Can I Contribute?
|
||||||
|
|
||||||
|
Most of the contributions that we receive are code contributions, but you can
|
||||||
|
also contribute to the documentation, wiki, etc., or simply report solid bugs
|
||||||
|
for us to fix.
|
||||||
|
|
||||||
|
### Reporting Bugs
|
||||||
|
|
||||||
|
Please review our [guide](https://tomcat.apache.org/bugreport.html) on how to
|
||||||
|
submit a bug report. This page also has links to other resources to assist
|
||||||
|
you.
|
||||||
|
|
||||||
|
### Reporting Translation improvements
|
||||||
|
|
||||||
|
Apache Tomcat project uses POEditor for managing the localization files.
|
||||||
|
Please see more at https://cwiki.apache.org/confluence/x/vIPzBQ
|
||||||
|
|
||||||
|
### Your First Code Contribution
|
||||||
|
|
||||||
|
### Trouble Deciding How to Contribute?
|
||||||
|
|
||||||
|
Unsure where to begin contributing to Tomcat? You can start by taking a look at
|
||||||
|
the issues marked 'Beginner', link below. Please note that the Beginner keyword
|
||||||
|
is pretty new to the project, so if there aren't any issues in the filter feel
|
||||||
|
free to ask on the [dev list](https://tomcat.apache.org/lists.html#tomcat-dev).
|
||||||
|
|
||||||
|
* [Beginner issues](https://bz.apache.org/bugzilla/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=NEEDINFO&keywords=Beginner&keywords_type=allwords&list_id=160824&product=Tomcat%207&product=Tomcat%208.5&product=Tomcat%209&query_format=advanced) -
|
||||||
|
issues which should only require a few lines of code, and a test or two to
|
||||||
|
resolve.
|
||||||
|
|
||||||
|
The list above shows all bugs that are marked 'Beginner' and are open in the
|
||||||
|
currently supported Tomcat versions (7, 8.5, and 9).
|
||||||
|
|
||||||
|
If you prefer C over Java, you may also take a look at the tomcat-native and
|
||||||
|
Tomcat Connectors products in Bugzilla.
|
||||||
|
|
||||||
|
### How to Provide Your First Patch
|
||||||
|
|
||||||
|
Excited yet? This section will guide you through providing a patch to the
|
||||||
|
committers of the project for review and acceptance.
|
||||||
|
|
||||||
|
##### Choose Your Method of Submission
|
||||||
|
|
||||||
|
You can provide a patch in one of the following ways (in order of preference):
|
||||||
|
|
||||||
|
* GitHub Pull Request
|
||||||
|
* Patch attachment to the Bugzilla issue
|
||||||
|
* Email the patch to the developer list. This is not preferred, but if no bug
|
||||||
|
is associated with the patch, or you would like a developer review, an email
|
||||||
|
may be appropriate.
|
||||||
|
|
||||||
|
##### Get the Sources
|
||||||
|
|
||||||
|
Now that you've chosen how you want to submit a patch, you need to get the
|
||||||
|
source code.
|
||||||
|
|
||||||
|
###### Download The Source Distribution
|
||||||
|
|
||||||
|
This method works if you want to submit a patch via email, but
|
||||||
|
the difference in using the sources distribution and a VCS is that you have to
|
||||||
|
manually generate the patch file by using diff. If this is what you want, you
|
||||||
|
can download the sources from the "Source Code Distributions" section of the
|
||||||
|
Download Page. There is one such page for every major Tomcat version:
|
||||||
|
|
||||||
|
- [Tomcat 9](https://tomcat.apache.org/download-90.cgi)
|
||||||
|
- [Tomcat 8](https://tomcat.apache.org/download-80.cgi)
|
||||||
|
- [Tomcat 7](https://tomcat.apache.org/download-70.cgi)
|
||||||
|
|
||||||
|
##### Manual Patch Generation
|
||||||
|
|
||||||
|
If you have chosen to attach a patch to the Bugzilla issue (or email
|
||||||
|
one), then you'll need to download the sources as noted above, make your
|
||||||
|
desired changes and then manually generate your patch using diff (other
|
||||||
|
other tool).
|
||||||
|
|
||||||
|
##### GitHub
|
||||||
|
|
||||||
|
To submit a GitHub Pull Request you'll need to fork the
|
||||||
|
[repository](https://github.com/apache/tomcat), clone your fork to do the work:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ git clone https://github.com/$USERNAME/tomcat.git
|
||||||
|
```
|
||||||
|
|
||||||
|
and then push your changes, and submit a Pull Request via the GitHub UI.
|
||||||
|
|
||||||
|
#### Submitting Your Patch!
|
||||||
|
|
||||||
|
After you've chosen your method of submission, retrieved the sources, and
|
||||||
|
fixed the issue it's time to submit your work. At this point, just follow
|
||||||
|
the method of submission you chose earlier.
|
||||||
|
|
||||||
|
* GitHub PR - after resolving the issue in your local fork and pushing to your
|
||||||
|
copy of the repository, open a GitHub PR for review.
|
||||||
|
* Bugzilla attachment - attach the patch to the Bugzilla issue
|
||||||
|
* Email - again, not preferred, but you may send an email to the developer list
|
||||||
|
with a patch attached for review.
|
||||||
|
|
||||||
|
#### Waiting For Feedback
|
||||||
|
|
||||||
|
It may take a while for committers to review. Please be patient during this
|
||||||
|
time as all committers are volunteers on the project. If a significant amount
|
||||||
|
of time has lapsed since your submission, such as a couple of months, feel free
|
||||||
|
to either update your BZ, PR, or email the dev list with a message to bump your
|
||||||
|
issue. Sometimes things get lost in all the work and we need a reminder :smile:
|
||||||
|
|
||||||
|
## Style Guide
|
||||||
|
|
||||||
|
Apache Tomcat has very loosely defined coding conventions, but the following
|
||||||
|
guidelines will be useful:
|
||||||
|
|
||||||
|
* Use spaces for indenting, not tabs
|
||||||
|
* 100 char line width for Java source, 80 char line width for documentation
|
||||||
|
source (.txt, .xml)
|
||||||
|
* Java source: { at end of line, 4 space indents
|
||||||
|
* XML source: 2 space indents
|
||||||
|
|
||||||
|
## Did we miss something?
|
||||||
|
|
||||||
|
Have you reviewed this guide and found it lacking? Or are you confused about
|
||||||
|
some particular step? If so, please let us know! Or better yet, submit a PR to
|
||||||
|
address the issue :wink:
|
||||||
1050
centos8_tomcat/apache-tomcat-7.0.108/LICENSE
Normal file
1050
centos8_tomcat/apache-tomcat-7.0.108/LICENSE
Normal file
File diff suppressed because it is too large
Load Diff
38
centos8_tomcat/apache-tomcat-7.0.108/NOTICE
Normal file
38
centos8_tomcat/apache-tomcat-7.0.108/NOTICE
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
Apache Tomcat
|
||||||
|
Copyright 1999-2021 The Apache Software Foundation
|
||||||
|
|
||||||
|
This product includes software developed at
|
||||||
|
The Apache Software Foundation (https://www.apache.org/).
|
||||||
|
|
||||||
|
The Windows Installer is built with the Nullsoft
|
||||||
|
Scriptable Install System (NSIS), which is
|
||||||
|
open source software. The original software and
|
||||||
|
related information is available at
|
||||||
|
http://nsis.sourceforge.net.
|
||||||
|
|
||||||
|
Java compilation software for JSP pages is provided by the Eclipse
|
||||||
|
JDT Core Batch Compiler component, which is open source software.
|
||||||
|
The original software and related information is available at
|
||||||
|
https://www.eclipse.org/jdt/core/.
|
||||||
|
|
||||||
|
For the bayeux implementation
|
||||||
|
The org.apache.cometd.bayeux API is derivative work originating at the Dojo Foundation
|
||||||
|
* Copyright 2007-2008 Guy Molinari
|
||||||
|
* Copyright 2007-2008 Filip Hanik
|
||||||
|
* Copyright 2007 Dojo Foundation
|
||||||
|
* Copyright 2007 Mort Bay Consulting Pty. Ltd.
|
||||||
|
|
||||||
|
The original XML Schemas for Java EE Deployment Descriptors:
|
||||||
|
- javaee_5.xsd
|
||||||
|
- javaee_web_services_1_2.xsd
|
||||||
|
- javaee_web_services_client_1_2.xsd
|
||||||
|
- javaee_6.xsd
|
||||||
|
- javaee_web_services_1_3.xsd
|
||||||
|
- javaee_web_services_client_1_3.xsd
|
||||||
|
- jsp_2_2.xsd
|
||||||
|
- web-app_3_0.xsd
|
||||||
|
- web-common_3_0.xsd
|
||||||
|
- web-fragment_3_0.xsd
|
||||||
|
|
||||||
|
may be obtained from:
|
||||||
|
http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/index.html
|
||||||
79
centos8_tomcat/apache-tomcat-7.0.108/README.md
Normal file
79
centos8_tomcat/apache-tomcat-7.0.108/README.md
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
## Welcome to Apache Tomcat!
|
||||||
|
|
||||||
|
### What Is It?
|
||||||
|
|
||||||
|
The Apache Tomcat® software is an open source implementation of the Java
|
||||||
|
Servlet, JavaServer Pages, Java Expression Language and Java WebSocket
|
||||||
|
technologies. The Java Servlet, JavaServer Pages, Java Expression Language and
|
||||||
|
Java WebSocket specifications are developed under the
|
||||||
|
[Java Community Process](https://jcp.org/en/introduction/overview).
|
||||||
|
|
||||||
|
The Apache Tomcat software is developed in an open and participatory
|
||||||
|
environment and released under the
|
||||||
|
[Apache License version 2](https://www.apache.org/licenses/). The Apache Tomcat
|
||||||
|
project is intended to be a collaboration of the best-of-breed developers from
|
||||||
|
around the world. We invite you to participate in this open development
|
||||||
|
project. To learn more about getting involved,
|
||||||
|
[click here](https://tomcat.apache.org/getinvolved.html) or keep reading.
|
||||||
|
|
||||||
|
Apache Tomcat software powers numerous large-scale, mission-critical web
|
||||||
|
applications across a diverse range of industries and organizations. Some of
|
||||||
|
these users and their stories are listed on the
|
||||||
|
[PoweredBy wiki page](https://wiki.apache.org/tomcat/PoweredBy).
|
||||||
|
|
||||||
|
Apache Tomcat, Tomcat, Apache, the Apache feather, and the Apache Tomcat
|
||||||
|
project logo are trademarks of the Apache Software Foundation.
|
||||||
|
|
||||||
|
### Get It
|
||||||
|
|
||||||
|
For every major Tomcat version there is one download page containing
|
||||||
|
links to the latest binary and source code downloads, but also
|
||||||
|
links for browsing the download directories and archives:
|
||||||
|
- [Tomcat 9](https://tomcat.apache.org/download-90.cgi)
|
||||||
|
- [Tomcat 8](https://tomcat.apache.org/download-80.cgi)
|
||||||
|
- [Tomcat 7](https://tomcat.apache.org/download-70.cgi)
|
||||||
|
|
||||||
|
To facilitate choosing the right major Tomcat version one, we have provided a
|
||||||
|
[version overview page](https://tomcat.apache.org/whichversion.html).
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
The documentation available as of the date of this release is
|
||||||
|
included in the docs webapp which ships with tomcat. You can access that webapp
|
||||||
|
by starting tomcat and visiting <http://localhost:8080/docs/> in your browser.
|
||||||
|
The most up-to-date documentation for each version can be found at:
|
||||||
|
- [Tomcat 9](https://tomcat.apache.org/tomcat-9.0-doc/)
|
||||||
|
- [Tomcat 8](https://tomcat.apache.org/tomcat-8.5-doc/)
|
||||||
|
- [Tomcat 7](https://tomcat.apache.org/tomcat-7.0-doc/)
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
|
||||||
|
Please see [RUNNING.txt](RUNNING.txt) for more info.
|
||||||
|
|
||||||
|
### Licensing
|
||||||
|
|
||||||
|
Please see [LICENSE](LICENSE) for more info.
|
||||||
|
|
||||||
|
### Support and Mailing List Information
|
||||||
|
|
||||||
|
* Free community support is available through the
|
||||||
|
[tomcat-users](https://tomcat.apache.org/lists.html#tomcat-users) email list and
|
||||||
|
a dedicated [IRC channel](https://tomcat.apache.org/irc.html) (#tomcat on
|
||||||
|
Freenode).
|
||||||
|
|
||||||
|
* If you want freely available support for running Apache Tomcat, please see the
|
||||||
|
resources page [here](https://tomcat.apache.org/findhelp.html).
|
||||||
|
|
||||||
|
* If you want to be informed about new code releases, bug fixes,
|
||||||
|
security fixes, general news and information about Apache Tomcat, please
|
||||||
|
subscribe to the
|
||||||
|
[tomcat-announce](https://tomcat.apache.org/lists.html#tomcat-announce) email
|
||||||
|
list.
|
||||||
|
|
||||||
|
* If you have a concrete bug report for Apache Tomcat, please see the
|
||||||
|
instructions for reporting a bug
|
||||||
|
[here](https://tomcat.apache.org/bugreport.html).
|
||||||
|
|
||||||
|
### Contributing
|
||||||
|
|
||||||
|
Please see [CONTRIBUTING](CONTRIBUTING.md) for more info.
|
||||||
237
centos8_tomcat/apache-tomcat-7.0.108/RELEASE-NOTES
Normal file
237
centos8_tomcat/apache-tomcat-7.0.108/RELEASE-NOTES
Normal file
@ -0,0 +1,237 @@
|
|||||||
|
================================================================================
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
================================================================================
|
||||||
|
|
||||||
|
|
||||||
|
Apache Tomcat Version 7.0.108
|
||||||
|
Release Notes
|
||||||
|
|
||||||
|
|
||||||
|
=========
|
||||||
|
CONTENTS:
|
||||||
|
=========
|
||||||
|
|
||||||
|
* Dependency Changes
|
||||||
|
* API Stability
|
||||||
|
* JNI Based Applications
|
||||||
|
* Bundled APIs
|
||||||
|
* Web application reloading and static fields in shared libraries
|
||||||
|
* Tomcat on Linux
|
||||||
|
* Enabling SSI and CGI Support
|
||||||
|
* Security manager URLs
|
||||||
|
* Symlinking static resources
|
||||||
|
* Viewing the Tomcat Change Log
|
||||||
|
* Cryptographic software notice
|
||||||
|
* When all else fails
|
||||||
|
|
||||||
|
|
||||||
|
===================
|
||||||
|
Dependency Changes:
|
||||||
|
===================
|
||||||
|
Tomcat 7.0 is designed to run on Java 6 and later.
|
||||||
|
|
||||||
|
In addition, Tomcat 7.0 uses the Eclipse JDT Java compiler for
|
||||||
|
compiling JSP pages. This means you no longer need to have the complete
|
||||||
|
Java Development Kit (JDK) to run Tomcat, but a Java Runtime Environment
|
||||||
|
(JRE) is sufficient. The Eclipse JDT Java compiler is bundled with the
|
||||||
|
binary Tomcat distributions. Tomcat can also be configured to use the
|
||||||
|
compiler from the JDK to compile JSPs, or any other Java compiler supported
|
||||||
|
by Apache Ant.
|
||||||
|
|
||||||
|
|
||||||
|
==============
|
||||||
|
API Stability:
|
||||||
|
==============
|
||||||
|
The public interfaces for the following classes are fixed and will not be
|
||||||
|
changed at all during the remaining lifetime of the 7.x series:
|
||||||
|
- javax/**/*
|
||||||
|
|
||||||
|
The public interfaces for the following classes may be added to in order to
|
||||||
|
resolve bugs and/or add new features. No existing interface will be removed or
|
||||||
|
changed although it may be deprecated.
|
||||||
|
- org/apache/catalina/*
|
||||||
|
- org/apache/catalina/comet/*
|
||||||
|
|
||||||
|
Note: As Tomcat 7 matures, the above list will be added to. The list is not
|
||||||
|
considered complete at this time.
|
||||||
|
|
||||||
|
The remaining classes are considered part of the Tomcat internals and may change
|
||||||
|
without notice between point releases.
|
||||||
|
|
||||||
|
|
||||||
|
=======================
|
||||||
|
JNI Based Applications:
|
||||||
|
=======================
|
||||||
|
Applications that require native libraries must ensure that the libraries have
|
||||||
|
been loaded prior to use. Typically, this is done with a call like:
|
||||||
|
|
||||||
|
static {
|
||||||
|
System.loadLibrary("path-to-library-file");
|
||||||
|
}
|
||||||
|
|
||||||
|
in some class. However, the application must also ensure that the library is
|
||||||
|
not loaded more than once. If the above code were placed in a class inside
|
||||||
|
the web application (i.e. under /WEB-INF/classes or /WEB-INF/lib), and the
|
||||||
|
application were reloaded, the loadLibrary() call would be attempted a second
|
||||||
|
time.
|
||||||
|
|
||||||
|
To avoid this problem, place classes that load native libraries outside of the
|
||||||
|
web application, and ensure that the loadLibrary() call is executed only once
|
||||||
|
during the lifetime of a particular JVM.
|
||||||
|
|
||||||
|
|
||||||
|
=============
|
||||||
|
Bundled APIs:
|
||||||
|
=============
|
||||||
|
A standard installation of Tomcat 7.0 makes all of the following APIs available
|
||||||
|
for use by web applications (by placing them in "lib"):
|
||||||
|
* annotations-api.jar (Common Annotations 1.1 package)
|
||||||
|
* catalina.jar (Tomcat Catalina implementation)
|
||||||
|
* catalina-ant.jar (Tomcat Catalina Ant tasks)
|
||||||
|
* catalina-ha.jar (High availability package)
|
||||||
|
* catalina-tribes.jar (Group communication)
|
||||||
|
* ecj-4.4.2.jar (Eclipse JDT Java compiler)
|
||||||
|
* el-api.jar (EL 2.2 API)
|
||||||
|
* jasper.jar (Jasper 2 Compiler and Runtime)
|
||||||
|
* jasper-el.jar (Jasper 2 EL implementation)
|
||||||
|
* jsp-api.jar (JSP 2.2 API)
|
||||||
|
* servlet-api.jar (Servlet 3.0 API)
|
||||||
|
* tomcat7-websocket.jar (WebSocket 1.1 implementation)
|
||||||
|
* tomcat-api.jar (Interfaces shared by Catalina and Jasper)
|
||||||
|
* tomcat-coyote.jar (Tomcat connectors and utility classes)
|
||||||
|
* tomcat-dbcp.jar (package renamed database connection pool based on Commons DBCP 1.x)
|
||||||
|
* tomcat-jdbc.jar (Tomcat's database connection pooling solution)
|
||||||
|
* tomcat-util.jar (Various utilities)
|
||||||
|
* websocket-api.jar (WebSocket 1.1 API)
|
||||||
|
|
||||||
|
You can make additional APIs available to all of your web applications by
|
||||||
|
putting unpacked classes into a "classes" directory (not created by default),
|
||||||
|
or by placing them in JAR files in the "lib" directory.
|
||||||
|
|
||||||
|
To override the XML parser implementation or interfaces, use the Endorsed
|
||||||
|
Standards Override mechanism of the JVM. The default configuration defines
|
||||||
|
JARs located in "$CATALINA_HOME/endorsed" as endorsed. This mechanism is
|
||||||
|
no longer supported with Java 9.
|
||||||
|
|
||||||
|
When running on Java 6, the Common Annotations 1.0 implementation provided
|
||||||
|
by the JRE will be used. To use the Common Annotations 1.1 provided by
|
||||||
|
Tomcat, use the Endorsed Standards Override mechanism of the JVM. The
|
||||||
|
default configuration defines JARs located in "$CATALINA_HOME/endorsed" as
|
||||||
|
endorsed.
|
||||||
|
|
||||||
|
|
||||||
|
================================================================
|
||||||
|
Web application reloading and static fields in shared libraries:
|
||||||
|
================================================================
|
||||||
|
Some shared libraries (many are part of the JDK) keep references to objects
|
||||||
|
instantiated by the web application. To avoid class loading related problems
|
||||||
|
(ClassCastExceptions, messages indicating that the classloader
|
||||||
|
is stopped, etc.), the shared libraries state should be reinitialized.
|
||||||
|
|
||||||
|
Something which might help is to avoid putting classes which would be
|
||||||
|
referenced by a shared static field in the web application classloader,
|
||||||
|
and putting them in the shared classloader instead (JARs should be put in the
|
||||||
|
"lib" folder, and classes should be put in the "classes" folder).
|
||||||
|
|
||||||
|
|
||||||
|
================
|
||||||
|
Tomcat on Linux:
|
||||||
|
================
|
||||||
|
GLIBC 2.2 / Linux 2.4 users should define an environment variable:
|
||||||
|
export LD_ASSUME_KERNEL=2.2.5
|
||||||
|
|
||||||
|
Redhat Linux 9.0 users should use the following setting to avoid
|
||||||
|
stability problems:
|
||||||
|
export LD_ASSUME_KERNEL=2.4.1
|
||||||
|
|
||||||
|
There are some Linux bugs reported against the NIO sendfile behavior, make sure you
|
||||||
|
have a JDK that is up to date, or disable sendfile behavior in the Connector.<br/>
|
||||||
|
6427312: (fc) FileChannel.transferTo() throws IOException "system call interrupted"<br/>
|
||||||
|
5103988: (fc) FileChannel.transferTo should return -1 for EAGAIN instead throws IOException<br/>
|
||||||
|
6253145: (fc) FileChannel.transferTo on Linux fails when going beyond 2GB boundary<br/>
|
||||||
|
6470086: (fc) FileChannel.transferTo(2147483647, 1, channel) cause "Value too large" exception<br/>
|
||||||
|
|
||||||
|
|
||||||
|
=============================
|
||||||
|
Enabling SSI and CGI Support:
|
||||||
|
=============================
|
||||||
|
Because of the security risks associated with CGI and SSI available
|
||||||
|
to web applications, these features are disabled by default.
|
||||||
|
|
||||||
|
To enable and configure CGI support, please see the cgi-howto.html page.
|
||||||
|
|
||||||
|
To enable and configure SSI support, please see the ssi-howto.html page.
|
||||||
|
|
||||||
|
|
||||||
|
======================
|
||||||
|
Security manager URLs:
|
||||||
|
======================
|
||||||
|
In order to grant security permissions to JARs located inside the
|
||||||
|
web application repository, use URLs of the following format
|
||||||
|
in your policy file:
|
||||||
|
|
||||||
|
file:${catalina.base}/webapps/examples/WEB-INF/lib/driver.jar
|
||||||
|
|
||||||
|
|
||||||
|
============================
|
||||||
|
Symlinking static resources:
|
||||||
|
============================
|
||||||
|
By default, Unix symlinks will not work when used in a web application to link
|
||||||
|
resources located outside the web application root directory.
|
||||||
|
|
||||||
|
This behavior is optional, and the "allowLinking" flag may be used to disable
|
||||||
|
the check.
|
||||||
|
|
||||||
|
|
||||||
|
==============================
|
||||||
|
Viewing the Tomcat Change Log:
|
||||||
|
==============================
|
||||||
|
See changelog.html in this directory.
|
||||||
|
|
||||||
|
|
||||||
|
=============================
|
||||||
|
Cryptographic software notice
|
||||||
|
=============================
|
||||||
|
This distribution includes cryptographic software. The country in
|
||||||
|
which you currently reside may have restrictions on the import,
|
||||||
|
possession, use, and/or re-export to another country, of
|
||||||
|
encryption software. BEFORE using any encryption software, please
|
||||||
|
check your country's laws, regulations and policies concerning the
|
||||||
|
import, possession, or use, and re-export of encryption software, to
|
||||||
|
see if this is permitted. See <http://www.wassenaar.org/> for more
|
||||||
|
information.
|
||||||
|
|
||||||
|
The U.S. Government Department of Commerce, Bureau of Industry and
|
||||||
|
Security (BIS), has classified this software as Export Commodity
|
||||||
|
Control Number (ECCN) 5D002.C.1, which includes information security
|
||||||
|
software using or performing cryptographic functions with asymmetric
|
||||||
|
algorithms. The form and manner of this Apache Software Foundation
|
||||||
|
distribution makes it eligible for export under the License Exception
|
||||||
|
ENC Technology Software Unrestricted (TSU) exception (see the BIS
|
||||||
|
Export Administration Regulations, Section 740.13) for both object
|
||||||
|
code and source code.
|
||||||
|
|
||||||
|
The following provides more details on the included cryptographic
|
||||||
|
software:
|
||||||
|
- Tomcat includes code designed to work with JSSE
|
||||||
|
- Tomcat includes code designed to work with OpenSSL
|
||||||
|
|
||||||
|
|
||||||
|
====================
|
||||||
|
When all else fails:
|
||||||
|
====================
|
||||||
|
See the FAQ
|
||||||
|
https://tomcat.apache.org/faq/
|
||||||
493
centos8_tomcat/apache-tomcat-7.0.108/RUNNING.txt
Normal file
493
centos8_tomcat/apache-tomcat-7.0.108/RUNNING.txt
Normal file
@ -0,0 +1,493 @@
|
|||||||
|
================================================================================
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
================================================================================
|
||||||
|
|
||||||
|
===================================================
|
||||||
|
Running The Apache Tomcat 7.0 Servlet/JSP Container
|
||||||
|
===================================================
|
||||||
|
|
||||||
|
Apache Tomcat 7.0 requires a Java Standard Edition Runtime
|
||||||
|
Environment (JRE) version 6 or later.
|
||||||
|
|
||||||
|
=============================
|
||||||
|
Running With JRE 6 Or Later
|
||||||
|
=============================
|
||||||
|
|
||||||
|
(1) Download and Install a Java SE Runtime Environment (JRE)
|
||||||
|
|
||||||
|
(1.1) Download a Java SE Runtime Environment (JRE),
|
||||||
|
release version 6 or later, from
|
||||||
|
http://www.oracle.com/technetwork/java/javase/downloads/index.html
|
||||||
|
|
||||||
|
NOTE: Java WebSocket API (JSR-356) is supported only when running
|
||||||
|
with Java 7 or later.
|
||||||
|
|
||||||
|
(1.2) Install the JRE according to the instructions included with the
|
||||||
|
release.
|
||||||
|
|
||||||
|
You may also use a full Java Development Kit (JDK) rather than just
|
||||||
|
a JRE.
|
||||||
|
|
||||||
|
(1.3) When running on Java 6, the Common Annotations 1.0 implementation
|
||||||
|
provided by the JRE will be used. To use the Common Annotations 1.1
|
||||||
|
provided by Tomcat, use the Endorsed Standards Override mechanism
|
||||||
|
of the JVM. The default configuration defines JARs located in
|
||||||
|
"$CATALINA_HOME/endorsed" as endorsed.
|
||||||
|
|
||||||
|
NOTE: Java 6 includes a subset of Common Annotations 1.0 classes.
|
||||||
|
|
||||||
|
The only known difference between versions 1.0 and 1.1 of those
|
||||||
|
classes is introduction of "lookup" element on Resource annotation.
|
||||||
|
|
||||||
|
Majority of web applications will not notice the difference.
|
||||||
|
|
||||||
|
(2) Download and Install Apache Tomcat
|
||||||
|
|
||||||
|
(2.1) Download a binary distribution of Tomcat from:
|
||||||
|
|
||||||
|
https://tomcat.apache.org/
|
||||||
|
|
||||||
|
(2.2) Unpack the binary distribution so that it resides in its own
|
||||||
|
directory (conventionally named "apache-tomcat-[version]").
|
||||||
|
|
||||||
|
For the purposes of the remainder of this document, the name
|
||||||
|
"CATALINA_HOME" is used to refer to the full pathname of that
|
||||||
|
directory.
|
||||||
|
|
||||||
|
NOTE: As an alternative to downloading a binary distribution, you can
|
||||||
|
create your own from the Tomcat source code, as described in
|
||||||
|
"BUILDING.txt". You can either
|
||||||
|
|
||||||
|
a) Do the full "release" build and find the created distribution in the
|
||||||
|
"output/release" directory and then proceed with unpacking as above, or
|
||||||
|
|
||||||
|
b) Do a simple build and use the "output/build" directory as
|
||||||
|
"CATALINA_HOME". Be warned that there are some differences between the
|
||||||
|
contents of the "output/build" directory and a full "release"
|
||||||
|
distribution.
|
||||||
|
|
||||||
|
|
||||||
|
(3) Configure Environment Variables
|
||||||
|
|
||||||
|
Tomcat is a Java application and does not use environment variables directly.
|
||||||
|
Environment variables are used by the Tomcat startup scripts. The scripts use
|
||||||
|
the environment variables to prepare the command that starts Tomcat.
|
||||||
|
|
||||||
|
(3.1) Set CATALINA_HOME (required) and CATALINA_BASE (optional)
|
||||||
|
|
||||||
|
The CATALINA_HOME environment variable should be set to the location of the
|
||||||
|
root directory of the "binary" distribution of Tomcat.
|
||||||
|
|
||||||
|
The Tomcat startup scripts have some logic to set this variable
|
||||||
|
automatically if it is absent, based on the location of the startup script
|
||||||
|
in *nix and on the current directory in Windows. That logic might not work
|
||||||
|
in all circumstances, so setting the variable explicitly is recommended.
|
||||||
|
|
||||||
|
The CATALINA_BASE environment variable specifies location of the root
|
||||||
|
directory of the "active configuration" of Tomcat. It is optional. It
|
||||||
|
defaults to be equal to CATALINA_HOME.
|
||||||
|
|
||||||
|
Using distinct values for the CATALINA_HOME and CATALINA_BASE variables is
|
||||||
|
recommended to simplify further upgrades and maintenance. It is documented
|
||||||
|
in the "Multiple Tomcat Instances" section below.
|
||||||
|
|
||||||
|
|
||||||
|
(3.2) Set JRE_HOME or JAVA_HOME (required)
|
||||||
|
|
||||||
|
These variables are used to specify location of a Java Runtime
|
||||||
|
Environment or of a Java Development Kit that is used to start Tomcat.
|
||||||
|
|
||||||
|
The JRE_HOME variable is used to specify location of a JRE. The JAVA_HOME
|
||||||
|
variable is used to specify location of a JDK.
|
||||||
|
|
||||||
|
Using JAVA_HOME provides access to certain additional startup options that
|
||||||
|
are not allowed when JRE_HOME is used.
|
||||||
|
|
||||||
|
If both JRE_HOME and JAVA_HOME are specified, JRE_HOME is used.
|
||||||
|
|
||||||
|
The recommended place to specify these variables is a "setenv" script. See
|
||||||
|
below.
|
||||||
|
|
||||||
|
|
||||||
|
(3.3) Other variables (optional)
|
||||||
|
|
||||||
|
Other environment variables exist, besides the four described above.
|
||||||
|
See the comments at the top of catalina.bat or catalina.sh scripts for
|
||||||
|
the list and a description of each of them.
|
||||||
|
|
||||||
|
One frequently used variable is CATALINA_OPTS. It allows specification of
|
||||||
|
additional options for the java command that starts Tomcat.
|
||||||
|
|
||||||
|
See the Java documentation for the options that affect the Java Runtime
|
||||||
|
Environment.
|
||||||
|
|
||||||
|
See the "System Properties" page in the Tomcat Configuration Reference for
|
||||||
|
the system properties that are specific to Tomcat.
|
||||||
|
|
||||||
|
A similar variable is JAVA_OPTS. It is used less frequently. It allows
|
||||||
|
specification of options that are used both to start and to stop Tomcat as well
|
||||||
|
as for other commands.
|
||||||
|
|
||||||
|
Note: Do not use JAVA_OPTS to specify memory limits. You do not need much
|
||||||
|
memory for a small process that is used to stop Tomcat. Those settings
|
||||||
|
belong to CATALINA_OPTS.
|
||||||
|
|
||||||
|
Another frequently used variable is CATALINA_PID (on *nix only). It
|
||||||
|
specifies the location of the file where process id of the forked Tomcat
|
||||||
|
java process will be written. This setting is optional. It will enable the
|
||||||
|
following features:
|
||||||
|
|
||||||
|
* better protection against duplicate start attempts and
|
||||||
|
* allows forceful termination of Tomcat process when it does not react to
|
||||||
|
the standard shutdown command.
|
||||||
|
|
||||||
|
|
||||||
|
(3.4) Using the "setenv" script (optional, recommended)
|
||||||
|
|
||||||
|
Apart from CATALINA_HOME and CATALINA_BASE, all environment variables can
|
||||||
|
be specified in the "setenv" script. The script is placed either into
|
||||||
|
CATALINA_BASE/bin or into CATALINA_HOME/bin directory and is named
|
||||||
|
setenv.bat (on Windows) or setenv.sh (on *nix). The file has to be
|
||||||
|
readable.
|
||||||
|
|
||||||
|
By default the setenv script file is absent. If the script file is present
|
||||||
|
both in CATALINA_BASE and in CATALINA_HOME, the one in CATALINA_BASE is
|
||||||
|
preferred.
|
||||||
|
|
||||||
|
For example, to configure the JRE_HOME and CATALINA_PID variables you can
|
||||||
|
create the following script file:
|
||||||
|
|
||||||
|
On Windows, %CATALINA_BASE%\bin\setenv.bat:
|
||||||
|
|
||||||
|
set "JRE_HOME=%ProgramFiles%\Java\jre6"
|
||||||
|
exit /b 0
|
||||||
|
|
||||||
|
On *nix, $CATALINA_BASE/bin/setenv.sh:
|
||||||
|
|
||||||
|
JRE_HOME=/usr/java/latest
|
||||||
|
CATALINA_PID="$CATALINA_BASE/tomcat.pid"
|
||||||
|
|
||||||
|
|
||||||
|
The CATALINA_HOME and CATALINA_BASE variables cannot be configured in the
|
||||||
|
setenv script, because they are used to locate that file.
|
||||||
|
|
||||||
|
All the environment variables described here and the "setenv" script are
|
||||||
|
used only if you use the standard scripts to launch Tomcat. For example, if
|
||||||
|
you have installed Tomcat as a service on Windows, the service wrapper
|
||||||
|
launches Java directly and does not use the script files.
|
||||||
|
|
||||||
|
|
||||||
|
(4) Start Up Tomcat
|
||||||
|
|
||||||
|
(4.1) Tomcat can be started by executing one of the following commands:
|
||||||
|
|
||||||
|
On Windows:
|
||||||
|
|
||||||
|
%CATALINA_HOME%\bin\startup.bat
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
%CATALINA_HOME%\bin\catalina.bat start
|
||||||
|
|
||||||
|
On *nix:
|
||||||
|
|
||||||
|
$CATALINA_HOME/bin/startup.sh
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
$CATALINA_HOME/bin/catalina.sh start
|
||||||
|
|
||||||
|
(4.2) After startup, the default web applications included with Tomcat will be
|
||||||
|
available by visiting:
|
||||||
|
|
||||||
|
http://localhost:8080/
|
||||||
|
|
||||||
|
(4.3) Further information about configuring and running Tomcat can be found in
|
||||||
|
the documentation included here, as well as on the Tomcat web site:
|
||||||
|
|
||||||
|
https://tomcat.apache.org/
|
||||||
|
|
||||||
|
|
||||||
|
(5) Shut Down Tomcat
|
||||||
|
|
||||||
|
(5.1) Tomcat can be shut down by executing one of the following commands:
|
||||||
|
|
||||||
|
On Windows:
|
||||||
|
|
||||||
|
%CATALINA_HOME%\bin\shutdown.bat
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
%CATALINA_HOME%\bin\catalina.bat stop
|
||||||
|
|
||||||
|
On *nix:
|
||||||
|
|
||||||
|
$CATALINA_HOME/bin/shutdown.sh
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
$CATALINA_HOME/bin/catalina.sh stop
|
||||||
|
|
||||||
|
==================================================
|
||||||
|
Advanced Configuration - Multiple Tomcat Instances
|
||||||
|
==================================================
|
||||||
|
|
||||||
|
In many circumstances, it is desirable to have a single copy of a Tomcat
|
||||||
|
binary distribution shared among multiple users on the same server. To make
|
||||||
|
this possible, you can set the CATALINA_BASE environment variable to the
|
||||||
|
directory that contains the files for your 'personal' Tomcat instance.
|
||||||
|
|
||||||
|
When running with a separate CATALINA_HOME and CATALINA_BASE, the files
|
||||||
|
and directories are split as following:
|
||||||
|
|
||||||
|
In CATALINA_BASE:
|
||||||
|
|
||||||
|
* bin - Only the following files:
|
||||||
|
|
||||||
|
* setenv.sh (*nix) or setenv.bat (Windows),
|
||||||
|
* tomcat-juli.jar
|
||||||
|
|
||||||
|
The setenv scripts were described above. The tomcat-juli library
|
||||||
|
is documented in the Logging chapter in the User Guide.
|
||||||
|
|
||||||
|
* conf - Server configuration files (including server.xml)
|
||||||
|
|
||||||
|
* lib - Libraries and classes, as explained below
|
||||||
|
|
||||||
|
* logs - Log and output files
|
||||||
|
|
||||||
|
* webapps - Automatically loaded web applications
|
||||||
|
|
||||||
|
* work - Temporary working directories for web applications
|
||||||
|
|
||||||
|
* temp - Directory used by the JVM for temporary files (java.io.tmpdir)
|
||||||
|
|
||||||
|
|
||||||
|
In CATALINA_HOME:
|
||||||
|
|
||||||
|
* bin - Startup and shutdown scripts
|
||||||
|
|
||||||
|
The following files will be used only if they are absent in
|
||||||
|
CATALINA_BASE/bin:
|
||||||
|
|
||||||
|
setenv.sh (*nix), setenv.bat (Windows), tomcat-juli.jar
|
||||||
|
|
||||||
|
* lib - Libraries and classes, as explained below
|
||||||
|
|
||||||
|
* endorsed - Libraries that override standard "Endorsed Standards"
|
||||||
|
libraries provided by JRE. See Classloading documentation
|
||||||
|
in the User Guide for details.
|
||||||
|
No longer supported with Java 9.
|
||||||
|
|
||||||
|
By default this "endorsed" directory is absent.
|
||||||
|
|
||||||
|
In the default configuration the JAR libraries and classes both in
|
||||||
|
CATALINA_BASE/lib and in CATALINA_HOME/lib will be added to the common
|
||||||
|
classpath, but the ones in CATALINA_BASE will be added first and thus will
|
||||||
|
be searched first.
|
||||||
|
|
||||||
|
The idea is that you may leave the standard Tomcat libraries in
|
||||||
|
CATALINA_HOME/lib and add other ones such as database drivers into
|
||||||
|
CATALINA_BASE/lib.
|
||||||
|
|
||||||
|
In general it is advised to never share libraries between web applications,
|
||||||
|
but put them into WEB-INF/lib directories inside the applications. See
|
||||||
|
Classloading documentation in the User Guide for details.
|
||||||
|
|
||||||
|
|
||||||
|
It might be useful to note that the values of CATALINA_HOME and
|
||||||
|
CATALINA_BASE can be referenced in the XML configuration files processed
|
||||||
|
by Tomcat as ${catalina.home} and ${catalina.base} respectively.
|
||||||
|
|
||||||
|
For example, the standard manager web application can be kept in
|
||||||
|
CATALINA_HOME/webapps/manager and loaded into CATALINA_BASE by copying
|
||||||
|
its deployment descriptor into the desired virtual host:
|
||||||
|
|
||||||
|
* Copy the CATALINA_HOME/webapps/manager/META-INF/context.xml
|
||||||
|
file as CATALINA_BASE/conf/Catalina/localhost/manager.xml
|
||||||
|
|
||||||
|
* Add docBase attribute as shown below.
|
||||||
|
|
||||||
|
The file will look like the following:
|
||||||
|
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Context docBase="${catalina.home}/webapps/manager"
|
||||||
|
antiResourceLocking="false" privileged="true" >
|
||||||
|
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
|
||||||
|
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
|
||||||
|
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
|
||||||
|
</Context>
|
||||||
|
|
||||||
|
See Deployer chapter in User Guide and Context and Host chapters in the
|
||||||
|
Configuration Reference for more information on contexts and web
|
||||||
|
application deployment.
|
||||||
|
|
||||||
|
|
||||||
|
================
|
||||||
|
Troubleshooting
|
||||||
|
================
|
||||||
|
|
||||||
|
There are only really 2 things likely to go wrong during the stand-alone
|
||||||
|
Tomcat install:
|
||||||
|
|
||||||
|
(1) The most common hiccup is when another web server (or any process for that
|
||||||
|
matter) has laid claim to port 8080. This is the default HTTP port that
|
||||||
|
Tomcat attempts to bind to at startup. To change this, open the file:
|
||||||
|
|
||||||
|
$CATALINA_HOME/conf/server.xml
|
||||||
|
|
||||||
|
and search for '8080'. Change it to a port that isn't in use, and is
|
||||||
|
greater than 1024, as ports less than or equal to 1024 require superuser
|
||||||
|
access to bind under UNIX.
|
||||||
|
|
||||||
|
Restart Tomcat and you're in business. Be sure that you replace the "8080"
|
||||||
|
in the URL you're using to access Tomcat. For example, if you change the
|
||||||
|
port to 1977, you would request the URL http://localhost:1977/ in your
|
||||||
|
browser.
|
||||||
|
|
||||||
|
(2) The 'localhost' machine isn't found. This could happen if you're behind a
|
||||||
|
proxy. If that's the case, make sure the proxy configuration for your
|
||||||
|
browser knows that you shouldn't be going through the proxy to access the
|
||||||
|
"localhost".
|
||||||
|
|
||||||
|
In Firefox, this is under Tools/Preferences -> Advanced/Network ->
|
||||||
|
Connection -> Settings..., and in Internet Explorer it is Tools ->
|
||||||
|
Internet Options -> Connections -> LAN Settings.
|
||||||
|
|
||||||
|
|
||||||
|
====================
|
||||||
|
Optional Components
|
||||||
|
====================
|
||||||
|
|
||||||
|
The following optional components may be included with the Apache Tomcat binary
|
||||||
|
distribution. If they are not included, you can install them separately.
|
||||||
|
|
||||||
|
1. Apache Tomcat Native library
|
||||||
|
|
||||||
|
2. Apache Commons Daemon service launcher
|
||||||
|
|
||||||
|
Both of them are implemented in C language and as such have to be compiled
|
||||||
|
into binary code. The binary code will be specific for a platform and CPU
|
||||||
|
architecture and it must match the Java Runtime Environment executables
|
||||||
|
that will be used to launch Tomcat.
|
||||||
|
|
||||||
|
The Windows-specific binary distributions of Apache Tomcat include binary
|
||||||
|
files for these components. On other platforms you would have to look for
|
||||||
|
binary versions elsewhere or compile them yourself.
|
||||||
|
|
||||||
|
If you are new to Tomcat, do not bother with these components to start with.
|
||||||
|
If you do use them, do not forget to read their documentation.
|
||||||
|
|
||||||
|
|
||||||
|
Apache Tomcat Native library
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
It is a library that allows to use the "Apr" variant of HTTP and AJP
|
||||||
|
protocol connectors in Apache Tomcat. It is built around OpenSSL and Apache
|
||||||
|
Portable Runtime (APR) libraries. Those are the same libraries as used by
|
||||||
|
Apache HTTPD Server project.
|
||||||
|
|
||||||
|
This feature was especially important in the old days when Java performance
|
||||||
|
was poor. It is less important nowadays, but it is still used and respected
|
||||||
|
by many. See Tomcat documentation for more details.
|
||||||
|
|
||||||
|
For further reading:
|
||||||
|
|
||||||
|
- Apache Tomcat documentation
|
||||||
|
|
||||||
|
* Documentation for APR/Native library in the Tomcat User's Guide
|
||||||
|
|
||||||
|
https://tomcat.apache.org/tomcat-7.0-doc/apr.html
|
||||||
|
|
||||||
|
* Documentation for the HTTP and AJP protocol connectors in the Tomcat
|
||||||
|
Configuration Reference
|
||||||
|
|
||||||
|
https://tomcat.apache.org/tomcat-7.0-doc/config/http.html
|
||||||
|
|
||||||
|
https://tomcat.apache.org/tomcat-7.0-doc/config/ajp.html
|
||||||
|
|
||||||
|
- Apache Tomcat Native project home
|
||||||
|
|
||||||
|
https://tomcat.apache.org/native-doc/
|
||||||
|
|
||||||
|
- Other projects
|
||||||
|
|
||||||
|
* OpenSSL
|
||||||
|
|
||||||
|
https://www.openssl.org/
|
||||||
|
|
||||||
|
* Apache Portable Runtime
|
||||||
|
|
||||||
|
https://apr.apache.org/
|
||||||
|
|
||||||
|
* Apache HTTP Server
|
||||||
|
|
||||||
|
https://httpd.apache.org/
|
||||||
|
|
||||||
|
To disable Apache Tomcat Native library:
|
||||||
|
|
||||||
|
- To disable Apache Tomcat Native library when it is installed, or
|
||||||
|
- To remove the warning that is logged during Tomcat startup when the
|
||||||
|
library is not installed:
|
||||||
|
|
||||||
|
Edit the "conf/server.xml" file and remove "AprLifecycleListener" from
|
||||||
|
it.
|
||||||
|
|
||||||
|
The binary file of Apache Tomcat Native library is usually named
|
||||||
|
|
||||||
|
- "tcnative-1.dll" on Windows
|
||||||
|
- "libtcnative-1.so" on *nix systems
|
||||||
|
|
||||||
|
|
||||||
|
Apache Commons Daemon
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
Apache Commons Daemon project provides wrappers that can be used to
|
||||||
|
install Apache Tomcat as a service on Windows or as a daemon on *nix
|
||||||
|
systems.
|
||||||
|
|
||||||
|
The Windows-specific implementation of Apache Commons Daemon is called
|
||||||
|
"procrun". The *nix-specific one is called "jsvc".
|
||||||
|
|
||||||
|
For further reading:
|
||||||
|
|
||||||
|
- Apache Commons Daemon project
|
||||||
|
|
||||||
|
https://commons.apache.org/daemon/
|
||||||
|
|
||||||
|
- Apache Tomcat documentation
|
||||||
|
|
||||||
|
* Installing Apache Tomcat
|
||||||
|
|
||||||
|
https://tomcat.apache.org/tomcat-7.0-doc/setup.html
|
||||||
|
|
||||||
|
* Windows service HOW-TO
|
||||||
|
|
||||||
|
https://tomcat.apache.org/tomcat-7.0-doc/windows-service-howto.html
|
||||||
|
|
||||||
|
The binary files of Apache Commons Daemon in Apache Tomcat distributions
|
||||||
|
for Windows are named:
|
||||||
|
|
||||||
|
- "tomcat7.exe"
|
||||||
|
- "tomcat7w.exe"
|
||||||
|
|
||||||
|
These files are renamed copies of "prunsrv.exe" and "prunmgr.exe" from
|
||||||
|
Apache Commons Daemon distribution. The file names have a meaning: they are
|
||||||
|
used as the service name to register the service in Windows, as well as the
|
||||||
|
key name to store distinct configuration for this installation of
|
||||||
|
"procrun". If you would like to install several instances of Tomcat 7.0
|
||||||
|
in parallel, you have to further rename those files, using the same naming
|
||||||
|
scheme.
|
||||||
BIN
centos8_tomcat/apache-tomcat-7.0.108/bin/bootstrap.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/bin/bootstrap.jar
Normal file
Binary file not shown.
39
centos8_tomcat/apache-tomcat-7.0.108/bin/catalina-tasks.xml
Normal file
39
centos8_tomcat/apache-tomcat-7.0.108/bin/catalina-tasks.xml
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
XML file for importing Catalina ant tasks.
|
||||||
|
<import file="${catalina.home}/bin/catalina-tasks.xml"/>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<project name="catalina-tasks">
|
||||||
|
<description>Catalina Ant Manager, JMX and JSPC Tasks</description>
|
||||||
|
<!-- set catalina.home if it's not already set -->
|
||||||
|
<dirname property="catalina.home.bin.dir" file="${ant.file.catalina-tasks}"/>
|
||||||
|
<property name="catalina.home" value="${catalina.home.bin.dir}/.."/>
|
||||||
|
<typedef resource="org/apache/catalina/ant/catalina.tasks">
|
||||||
|
<classpath>
|
||||||
|
<fileset file="${catalina.home}/bin/tomcat-juli.jar"/>
|
||||||
|
<fileset dir="${catalina.home}/lib" includes="*.jar"/>
|
||||||
|
</classpath>
|
||||||
|
</typedef>
|
||||||
|
<typedef resource="org/apache/catalina/ant/jmx/jmxaccessor.tasks">
|
||||||
|
<classpath>
|
||||||
|
<fileset file="${catalina.home}/lib/catalina-ant.jar"/>
|
||||||
|
</classpath>
|
||||||
|
</typedef>
|
||||||
|
</project>
|
||||||
385
centos8_tomcat/apache-tomcat-7.0.108/bin/catalina.bat
Normal file
385
centos8_tomcat/apache-tomcat-7.0.108/bin/catalina.bat
Normal file
@ -0,0 +1,385 @@
|
|||||||
|
@echo off
|
||||||
|
rem Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
rem contributor license agreements. See the NOTICE file distributed with
|
||||||
|
rem this work for additional information regarding copyright ownership.
|
||||||
|
rem The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
rem (the "License"); you may not use this file except in compliance with
|
||||||
|
rem the License. You may obtain a copy of the License at
|
||||||
|
rem
|
||||||
|
rem http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
rem
|
||||||
|
rem Unless required by applicable law or agreed to in writing, software
|
||||||
|
rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
rem See the License for the specific language governing permissions and
|
||||||
|
rem limitations under the License.
|
||||||
|
|
||||||
|
rem ---------------------------------------------------------------------------
|
||||||
|
rem Start/Stop Script for the CATALINA Server
|
||||||
|
rem
|
||||||
|
rem For supported commands call "catalina.bat help" or see the usage section
|
||||||
|
rem towards the end of this file.
|
||||||
|
rem
|
||||||
|
rem Environment Variable Prerequisites
|
||||||
|
rem
|
||||||
|
rem Do not set the variables in this script. Instead put them into a script
|
||||||
|
rem setenv.bat in CATALINA_BASE/bin to keep your customizations separate.
|
||||||
|
rem
|
||||||
|
rem WHEN RUNNING TOMCAT AS A WINDOWS SERVICE:
|
||||||
|
rem Note that the environment variables that affect the behavior of this
|
||||||
|
rem script will have no effect at all on Windows Services. As such, any
|
||||||
|
rem local customizations made in a CATALINA_BASE/bin/setenv.bat script
|
||||||
|
rem will also have no effect on Tomcat when launched as a Windows Service.
|
||||||
|
rem The configuration that controls Windows Services is stored in the Windows
|
||||||
|
rem Registry, and is most conveniently maintained using the "tomcat7w.exe"
|
||||||
|
rem maintenance utility.
|
||||||
|
rem
|
||||||
|
rem CATALINA_HOME May point at your Catalina "build" directory.
|
||||||
|
rem
|
||||||
|
rem CATALINA_BASE (Optional) Base directory for resolving dynamic portions
|
||||||
|
rem of a Catalina installation. If not present, resolves to
|
||||||
|
rem the same directory that CATALINA_HOME points to.
|
||||||
|
rem
|
||||||
|
rem CATALINA_OPTS (Optional) Java runtime options used when the "start",
|
||||||
|
rem "run" or "debug" command is executed.
|
||||||
|
rem Include here and not in JAVA_OPTS all options, that should
|
||||||
|
rem only be used by Tomcat itself, not by the stop process,
|
||||||
|
rem the version command etc.
|
||||||
|
rem Examples are heap size, GC logging, JMX ports etc.
|
||||||
|
rem
|
||||||
|
rem CATALINA_TMPDIR (Optional) Directory path location of temporary directory
|
||||||
|
rem the JVM should use (java.io.tmpdir). Defaults to
|
||||||
|
rem %CATALINA_BASE%\temp.
|
||||||
|
rem
|
||||||
|
rem JAVA_HOME Must point at your Java Development Kit installation.
|
||||||
|
rem Required to run the with the "debug" argument.
|
||||||
|
rem
|
||||||
|
rem JRE_HOME Must point at your Java Runtime installation.
|
||||||
|
rem Defaults to JAVA_HOME if empty. If JRE_HOME and JAVA_HOME
|
||||||
|
rem are both set, JRE_HOME is used.
|
||||||
|
rem
|
||||||
|
rem JAVA_OPTS (Optional) Java runtime options used when any command
|
||||||
|
rem is executed.
|
||||||
|
rem Include here and not in CATALINA_OPTS all options, that
|
||||||
|
rem should be used by Tomcat and also by the stop process,
|
||||||
|
rem the version command etc.
|
||||||
|
rem Most options should go into CATALINA_OPTS.
|
||||||
|
rem
|
||||||
|
rem JAVA_ENDORSED_DIRS (Optional) Lists of of semi-colon separated directories
|
||||||
|
rem containing some jars in order to allow replacement of APIs
|
||||||
|
rem created outside of the JCP (i.e. DOM and SAX from W3C).
|
||||||
|
rem It can also be used to update the XML parser implementation.
|
||||||
|
rem This is only supported for Java <= 8.
|
||||||
|
rem Defaults to $CATALINA_HOME/endorsed.
|
||||||
|
rem
|
||||||
|
rem JPDA_TRANSPORT (Optional) JPDA transport used when the "jpda start"
|
||||||
|
rem command is executed. The default is "dt_socket".
|
||||||
|
rem
|
||||||
|
rem JPDA_ADDRESS (Optional) Java runtime options used when the "jpda start"
|
||||||
|
rem command is executed. The default is localhost:8000.
|
||||||
|
rem
|
||||||
|
rem JPDA_SUSPEND (Optional) Java runtime options used when the "jpda start"
|
||||||
|
rem command is executed. Specifies whether JVM should suspend
|
||||||
|
rem execution immediately after startup. Default is "n".
|
||||||
|
rem
|
||||||
|
rem JPDA_OPTS (Optional) Java runtime options used when the "jpda start"
|
||||||
|
rem command is executed. If used, JPDA_TRANSPORT, JPDA_ADDRESS,
|
||||||
|
rem and JPDA_SUSPEND are ignored. Thus, all required jpda
|
||||||
|
rem options MUST be specified. The default is:
|
||||||
|
rem
|
||||||
|
rem -agentlib:jdwp=transport=%JPDA_TRANSPORT%,
|
||||||
|
rem address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND%
|
||||||
|
rem
|
||||||
|
rem JSSE_OPTS (Optional) Java runtime options used to control the TLS
|
||||||
|
rem implementation when JSSE is used. Default is:
|
||||||
|
rem "-Djdk.tls.ephemeralDHKeySize=2048"
|
||||||
|
rem
|
||||||
|
rem CATALINA_LOGGING_CONFIG (Optional) Override Tomcat's logging config file
|
||||||
|
rem Example (all one line)
|
||||||
|
rem set CATALINA_LOGGING_CONFIG="-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties"
|
||||||
|
rem
|
||||||
|
rem LOGGING_CONFIG Deprecated
|
||||||
|
rem Use CATALINA_LOGGING_CONFIG
|
||||||
|
rem This is only used if CATALINA_LOGGING_CONFIG is not set
|
||||||
|
rem and LOGGING_CONFIG starts with "-D..."
|
||||||
|
rem
|
||||||
|
rem LOGGING_MANAGER (Optional) Override Tomcat's logging manager
|
||||||
|
rem Example (all one line)
|
||||||
|
rem set LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
|
||||||
|
rem
|
||||||
|
rem TITLE (Optional) Specify the title of Tomcat window. The default
|
||||||
|
rem TITLE is Tomcat if it's not specified.
|
||||||
|
rem Example (all one line)
|
||||||
|
rem set TITLE=Tomcat.Cluster#1.Server#1 [%DATE% %TIME%]
|
||||||
|
rem ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
setlocal
|
||||||
|
|
||||||
|
rem Suppress Terminate batch job on CTRL+C
|
||||||
|
if not ""%1"" == ""run"" goto mainEntry
|
||||||
|
if "%TEMP%" == "" goto mainEntry
|
||||||
|
if exist "%TEMP%\%~nx0.run" goto mainEntry
|
||||||
|
echo Y>"%TEMP%\%~nx0.run"
|
||||||
|
if not exist "%TEMP%\%~nx0.run" goto mainEntry
|
||||||
|
echo Y>"%TEMP%\%~nx0.Y"
|
||||||
|
call "%~f0" %* <"%TEMP%\%~nx0.Y"
|
||||||
|
rem Use provided errorlevel
|
||||||
|
set RETVAL=%ERRORLEVEL%
|
||||||
|
del /Q "%TEMP%\%~nx0.Y" >NUL 2>&1
|
||||||
|
exit /B %RETVAL%
|
||||||
|
:mainEntry
|
||||||
|
del /Q "%TEMP%\%~nx0.run" >NUL 2>&1
|
||||||
|
|
||||||
|
rem Guess CATALINA_HOME if not defined
|
||||||
|
set "CURRENT_DIR=%cd%"
|
||||||
|
if not "%CATALINA_HOME%" == "" goto gotHome
|
||||||
|
set "CATALINA_HOME=%CURRENT_DIR%"
|
||||||
|
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
|
||||||
|
cd ..
|
||||||
|
set "CATALINA_HOME=%cd%"
|
||||||
|
cd "%CURRENT_DIR%"
|
||||||
|
:gotHome
|
||||||
|
|
||||||
|
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
|
||||||
|
echo The CATALINA_HOME environment variable is not defined correctly
|
||||||
|
echo This environment variable is needed to run this program
|
||||||
|
goto end
|
||||||
|
:okHome
|
||||||
|
|
||||||
|
rem Copy CATALINA_BASE from CATALINA_HOME if not defined
|
||||||
|
if not "%CATALINA_BASE%" == "" goto gotBase
|
||||||
|
set "CATALINA_BASE=%CATALINA_HOME%"
|
||||||
|
:gotBase
|
||||||
|
|
||||||
|
rem Ensure that neither CATALINA_HOME nor CATALINA_BASE contains a semi-colon
|
||||||
|
rem as this is used as the separator in the classpath and Java provides no
|
||||||
|
rem mechanism for escaping if the same character appears in the path. Check this
|
||||||
|
rem by replacing all occurrences of ';' with '' and checking that neither
|
||||||
|
rem CATALINA_HOME nor CATALINA_BASE have changed
|
||||||
|
if "%CATALINA_HOME%" == "%CATALINA_HOME:;=%" goto homeNoSemicolon
|
||||||
|
echo Using CATALINA_HOME: "%CATALINA_HOME%"
|
||||||
|
echo Unable to start as CATALINA_HOME contains a semicolon (;) character
|
||||||
|
goto end
|
||||||
|
:homeNoSemicolon
|
||||||
|
|
||||||
|
if "%CATALINA_BASE%" == "%CATALINA_BASE:;=%" goto baseNoSemicolon
|
||||||
|
echo Using CATALINA_BASE: "%CATALINA_BASE%"
|
||||||
|
echo Unable to start as CATALINA_BASE contains a semicolon (;) character
|
||||||
|
goto end
|
||||||
|
:baseNoSemicolon
|
||||||
|
|
||||||
|
rem Ensure that any user defined CLASSPATH variables are not used on startup,
|
||||||
|
rem but allow them to be specified in setenv.bat, in rare case when it is needed.
|
||||||
|
set CLASSPATH=
|
||||||
|
|
||||||
|
rem Get standard environment variables
|
||||||
|
if not exist "%CATALINA_BASE%\bin\setenv.bat" goto checkSetenvHome
|
||||||
|
call "%CATALINA_BASE%\bin\setenv.bat"
|
||||||
|
goto setenvDone
|
||||||
|
:checkSetenvHome
|
||||||
|
if exist "%CATALINA_HOME%\bin\setenv.bat" call "%CATALINA_HOME%\bin\setenv.bat"
|
||||||
|
:setenvDone
|
||||||
|
|
||||||
|
rem Get standard Java environment variables
|
||||||
|
if exist "%CATALINA_HOME%\bin\setclasspath.bat" goto okSetclasspath
|
||||||
|
echo Cannot find "%CATALINA_HOME%\bin\setclasspath.bat"
|
||||||
|
echo This file is needed to run this program
|
||||||
|
goto end
|
||||||
|
:okSetclasspath
|
||||||
|
call "%CATALINA_HOME%\bin\setclasspath.bat" %1
|
||||||
|
if errorlevel 1 goto end
|
||||||
|
|
||||||
|
rem Add on extra jar file to CLASSPATH
|
||||||
|
rem Note that there are no quotes as we do not want to introduce random
|
||||||
|
rem quotes into the CLASSPATH
|
||||||
|
if "%CLASSPATH%" == "" goto emptyClasspath
|
||||||
|
set "CLASSPATH=%CLASSPATH%;"
|
||||||
|
:emptyClasspath
|
||||||
|
set "CLASSPATH=%CLASSPATH%%CATALINA_HOME%\bin\bootstrap.jar"
|
||||||
|
|
||||||
|
if not "%CATALINA_TMPDIR%" == "" goto gotTmpdir
|
||||||
|
set "CATALINA_TMPDIR=%CATALINA_BASE%\temp"
|
||||||
|
:gotTmpdir
|
||||||
|
|
||||||
|
rem Add tomcat-juli.jar to classpath
|
||||||
|
rem tomcat-juli.jar can be over-ridden per instance
|
||||||
|
if not exist "%CATALINA_BASE%\bin\tomcat-juli.jar" goto juliClasspathHome
|
||||||
|
set "CLASSPATH=%CLASSPATH%;%CATALINA_BASE%\bin\tomcat-juli.jar"
|
||||||
|
goto juliClasspathDone
|
||||||
|
:juliClasspathHome
|
||||||
|
set "CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\bin\tomcat-juli.jar"
|
||||||
|
:juliClasspathDone
|
||||||
|
|
||||||
|
if not "%JSSE_OPTS%" == "" goto gotJsseOpts
|
||||||
|
set "JSSE_OPTS=-Djdk.tls.ephemeralDHKeySize=2048"
|
||||||
|
:gotJsseOpts
|
||||||
|
set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%"
|
||||||
|
|
||||||
|
rem Check for the deprecated LOGGING_CONFIG
|
||||||
|
rem Only use it if CATALINA_LOGGING_CONFIG is not set and LOGGING_CONFIG starts with "-D..."
|
||||||
|
if not "%LOGGING_CONFIG:~0,2%"=="-D" goto noLoggingDeprecation
|
||||||
|
if not "%CATALINA_LOGGING_CONFIG%" == "" goto noLoggingDeprecation
|
||||||
|
set "CATALINA_LOGGING_CONFIG=%LOGGING_CONFIG%"
|
||||||
|
:noLoggingDeprecation
|
||||||
|
|
||||||
|
if not "%CATALINA_LOGGING_CONFIG%" == "" goto noJuliConfig
|
||||||
|
set CATALINA_LOGGING_CONFIG=-Dnop
|
||||||
|
if not exist "%CATALINA_BASE%\conf\logging.properties" goto noJuliConfig
|
||||||
|
set CATALINA_LOGGING_CONFIG=-Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties"
|
||||||
|
:noJuliConfig
|
||||||
|
|
||||||
|
if not "%LOGGING_MANAGER%" == "" goto noJuliManager
|
||||||
|
set LOGGING_MANAGER=-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
|
||||||
|
:noJuliManager
|
||||||
|
|
||||||
|
rem Configure JAVA 9 specific start-up parameters
|
||||||
|
set "JDK_JAVA_OPTIONS=%JDK_JAVA_OPTIONS% --add-opens=java.base/java.lang=ALL-UNNAMED"
|
||||||
|
set "JDK_JAVA_OPTIONS=%JDK_JAVA_OPTIONS% --add-opens=java.base/java.io=ALL-UNNAMED"
|
||||||
|
set "JDK_JAVA_OPTIONS=%JDK_JAVA_OPTIONS% --add-opens=java.base/java.util=ALL-UNNAMED"
|
||||||
|
set "JDK_JAVA_OPTIONS=%JDK_JAVA_OPTIONS% --add-opens=java.base/java.util.concurrent=ALL-UNNAMED"
|
||||||
|
set "JDK_JAVA_OPTIONS=%JDK_JAVA_OPTIONS% --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED"
|
||||||
|
|
||||||
|
rem Java 9 no longer supports the java.endorsed.dirs
|
||||||
|
rem system property. Only try to use it if
|
||||||
|
rem JAVA_ENDORSED_DIRS was explicitly set
|
||||||
|
rem or CATALINA_HOME/endorsed exists.
|
||||||
|
set ENDORSED_PROP=ignore.endorsed.dirs
|
||||||
|
if "%JAVA_ENDORSED_DIRS%" == "" goto noEndorsedVar
|
||||||
|
set ENDORSED_PROP=java.endorsed.dirs
|
||||||
|
goto doneEndorsed
|
||||||
|
:noEndorsedVar
|
||||||
|
if not exist "%CATALINA_HOME%\endorsed" goto doneEndorsed
|
||||||
|
set ENDORSED_PROP=java.endorsed.dirs
|
||||||
|
:doneEndorsed
|
||||||
|
|
||||||
|
rem ----- Execute The Requested Command ---------------------------------------
|
||||||
|
|
||||||
|
echo Using CATALINA_BASE: "%CATALINA_BASE%"
|
||||||
|
echo Using CATALINA_HOME: "%CATALINA_HOME%"
|
||||||
|
echo Using CATALINA_TMPDIR: "%CATALINA_TMPDIR%"
|
||||||
|
if ""%1"" == ""debug"" goto use_jdk
|
||||||
|
echo Using JRE_HOME: "%JRE_HOME%"
|
||||||
|
goto java_dir_displayed
|
||||||
|
:use_jdk
|
||||||
|
echo Using JAVA_HOME: "%JAVA_HOME%"
|
||||||
|
:java_dir_displayed
|
||||||
|
echo Using CLASSPATH: "%CLASSPATH%"
|
||||||
|
echo Using CATALINA_OPTS: "%CATALINA_OPTS%"
|
||||||
|
|
||||||
|
set _EXECJAVA=%_RUNJAVA%
|
||||||
|
set MAINCLASS=org.apache.catalina.startup.Bootstrap
|
||||||
|
set ACTION=start
|
||||||
|
set SECURITY_POLICY_FILE=
|
||||||
|
set DEBUG_OPTS=
|
||||||
|
set JPDA=
|
||||||
|
|
||||||
|
if not ""%1"" == ""jpda"" goto noJpda
|
||||||
|
set JPDA=jpda
|
||||||
|
if not "%JPDA_TRANSPORT%" == "" goto gotJpdaTransport
|
||||||
|
set JPDA_TRANSPORT=dt_socket
|
||||||
|
:gotJpdaTransport
|
||||||
|
if not "%JPDA_ADDRESS%" == "" goto gotJpdaAddress
|
||||||
|
set JPDA_ADDRESS=localhost:8000
|
||||||
|
:gotJpdaAddress
|
||||||
|
if not "%JPDA_SUSPEND%" == "" goto gotJpdaSuspend
|
||||||
|
set JPDA_SUSPEND=n
|
||||||
|
:gotJpdaSuspend
|
||||||
|
if not "%JPDA_OPTS%" == "" goto gotJpdaOpts
|
||||||
|
set JPDA_OPTS=-agentlib:jdwp=transport=%JPDA_TRANSPORT%,address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND%
|
||||||
|
:gotJpdaOpts
|
||||||
|
shift
|
||||||
|
:noJpda
|
||||||
|
|
||||||
|
if ""%1"" == ""debug"" goto doDebug
|
||||||
|
if ""%1"" == ""run"" goto doRun
|
||||||
|
if ""%1"" == ""start"" goto doStart
|
||||||
|
if ""%1"" == ""stop"" goto doStop
|
||||||
|
if ""%1"" == ""configtest"" goto doConfigTest
|
||||||
|
if ""%1"" == ""version"" goto doVersion
|
||||||
|
|
||||||
|
echo Usage: catalina ( commands ... )
|
||||||
|
echo commands:
|
||||||
|
echo debug Start Catalina in a debugger
|
||||||
|
echo debug -security Debug Catalina with a security manager
|
||||||
|
echo jpda start Start Catalina under JPDA debugger
|
||||||
|
echo run Start Catalina in the current window
|
||||||
|
echo run -security Start in the current window with security manager
|
||||||
|
echo start Start Catalina in a separate window
|
||||||
|
echo start -security Start in a separate window with security manager
|
||||||
|
echo stop Stop Catalina
|
||||||
|
echo configtest Run a basic syntax check on server.xml
|
||||||
|
echo version What version of tomcat are you running?
|
||||||
|
goto end
|
||||||
|
|
||||||
|
:doDebug
|
||||||
|
shift
|
||||||
|
set _EXECJAVA=%_RUNJDB%
|
||||||
|
set DEBUG_OPTS=-sourcepath "%CATALINA_HOME%\..\..\java"
|
||||||
|
if not ""%1"" == ""-security"" goto execCmd
|
||||||
|
shift
|
||||||
|
echo Using Security Manager
|
||||||
|
set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy"
|
||||||
|
goto execCmd
|
||||||
|
|
||||||
|
:doRun
|
||||||
|
shift
|
||||||
|
if not ""%1"" == ""-security"" goto execCmd
|
||||||
|
shift
|
||||||
|
echo Using Security Manager
|
||||||
|
set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy"
|
||||||
|
goto execCmd
|
||||||
|
|
||||||
|
:doStart
|
||||||
|
shift
|
||||||
|
if "%TITLE%" == "" set TITLE=Tomcat
|
||||||
|
set _EXECJAVA=start "%TITLE%" %_RUNJAVA%
|
||||||
|
if not ""%1"" == ""-security"" goto execCmd
|
||||||
|
shift
|
||||||
|
echo Using Security Manager
|
||||||
|
set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy"
|
||||||
|
goto execCmd
|
||||||
|
|
||||||
|
:doStop
|
||||||
|
shift
|
||||||
|
set ACTION=stop
|
||||||
|
set CATALINA_OPTS=
|
||||||
|
goto execCmd
|
||||||
|
|
||||||
|
:doConfigTest
|
||||||
|
shift
|
||||||
|
set ACTION=configtest
|
||||||
|
set CATALINA_OPTS=
|
||||||
|
goto execCmd
|
||||||
|
|
||||||
|
:doVersion
|
||||||
|
%_EXECJAVA% -classpath "%CATALINA_HOME%\lib\catalina.jar" org.apache.catalina.util.ServerInfo
|
||||||
|
goto end
|
||||||
|
|
||||||
|
|
||||||
|
:execCmd
|
||||||
|
rem Get remaining unshifted command line arguments and save them in the
|
||||||
|
set CMD_LINE_ARGS=
|
||||||
|
:setArgs
|
||||||
|
if ""%1""=="""" goto doneSetArgs
|
||||||
|
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
|
||||||
|
shift
|
||||||
|
goto setArgs
|
||||||
|
:doneSetArgs
|
||||||
|
|
||||||
|
rem Execute Java with the applicable properties
|
||||||
|
if not "%JPDA%" == "" goto doJpda
|
||||||
|
if not "%SECURITY_POLICY_FILE%" == "" goto doSecurity
|
||||||
|
%_EXECJAVA% %CATALINA_LOGGING_CONFIG% %LOGGING_MANAGER% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -D%ENDORSED_PROP%="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
|
||||||
|
goto end
|
||||||
|
:doSecurity
|
||||||
|
%_EXECJAVA% %CATALINA_LOGGING_CONFIG% %LOGGING_MANAGER% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -D%ENDORSED_PROP%="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
|
||||||
|
goto end
|
||||||
|
:doJpda
|
||||||
|
if not "%SECURITY_POLICY_FILE%" == "" goto doSecurityJpda
|
||||||
|
%_EXECJAVA% %CATALINA_LOGGING_CONFIG% %LOGGING_MANAGER% %JAVA_OPTS% %JPDA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -D%ENDORSED_PROP%="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
|
||||||
|
goto end
|
||||||
|
:doSecurityJpda
|
||||||
|
%_EXECJAVA% %CATALINA_LOGGING_CONFIG% %LOGGING_MANAGER% %JAVA_OPTS% %JPDA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -D%ENDORSED_PROP%="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
|
||||||
|
goto end
|
||||||
|
|
||||||
|
:end
|
||||||
684
centos8_tomcat/apache-tomcat-7.0.108/bin/catalina.sh
Executable file
684
centos8_tomcat/apache-tomcat-7.0.108/bin/catalina.sh
Executable file
@ -0,0 +1,684 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
# contributor license agreements. See the NOTICE file distributed with
|
||||||
|
# this work for additional information regarding copyright ownership.
|
||||||
|
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
# (the "License"); you may not use this file except in compliance with
|
||||||
|
# the License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Control Script for the CATALINA Server
|
||||||
|
#
|
||||||
|
# For supported commands call "catalina.sh help" or see the usage section at
|
||||||
|
# the end of this file.
|
||||||
|
#
|
||||||
|
# Environment Variable Prerequisites
|
||||||
|
#
|
||||||
|
# Do not set the variables in this script. Instead put them into a script
|
||||||
|
# setenv.sh in CATALINA_BASE/bin to keep your customizations separate.
|
||||||
|
#
|
||||||
|
# CATALINA_HOME May point at your Catalina "build" directory.
|
||||||
|
#
|
||||||
|
# CATALINA_BASE (Optional) Base directory for resolving dynamic portions
|
||||||
|
# of a Catalina installation. If not present, resolves to
|
||||||
|
# the same directory that CATALINA_HOME points to.
|
||||||
|
#
|
||||||
|
# CATALINA_OUT (Optional) Full path to a file where stdout and stderr
|
||||||
|
# will be redirected.
|
||||||
|
# Default is $CATALINA_BASE/logs/catalina.out
|
||||||
|
#
|
||||||
|
# CATALINA_OUT_CMD (Optional) Command which will be executed and receive
|
||||||
|
# as its stdin the stdout and stderr from the Tomcat java
|
||||||
|
# process. If CATALINA_OUT_CMD is set, the value of
|
||||||
|
# CATALINA_OUT will be used as a named pipe.
|
||||||
|
# No default.
|
||||||
|
# Example (all one line)
|
||||||
|
# CATALINA_OUT_CMD="/usr/bin/rotatelogs -f $CATALINA_BASE/logs/catalina.out.%Y-%m-%d.log 86400"
|
||||||
|
#
|
||||||
|
# CATALINA_OPTS (Optional) Java runtime options used when the "start",
|
||||||
|
# "run" or "debug" command is executed.
|
||||||
|
# Include here and not in JAVA_OPTS all options, that should
|
||||||
|
# only be used by Tomcat itself, not by the stop process,
|
||||||
|
# the version command etc.
|
||||||
|
# Examples are heap size, GC logging, JMX ports etc.
|
||||||
|
#
|
||||||
|
# CATALINA_TMPDIR (Optional) Directory path location of temporary directory
|
||||||
|
# the JVM should use (java.io.tmpdir). Defaults to
|
||||||
|
# $CATALINA_BASE/temp.
|
||||||
|
#
|
||||||
|
# JAVA_HOME Must point at your Java Development Kit installation.
|
||||||
|
# Required to run the with the "debug" argument.
|
||||||
|
#
|
||||||
|
# JRE_HOME Must point at your Java Runtime installation.
|
||||||
|
# Defaults to JAVA_HOME if empty. If JRE_HOME and JAVA_HOME
|
||||||
|
# are both set, JRE_HOME is used.
|
||||||
|
#
|
||||||
|
# JAVA_OPTS (Optional) Java runtime options used when any command
|
||||||
|
# is executed.
|
||||||
|
# Include here and not in CATALINA_OPTS all options, that
|
||||||
|
# should be used by Tomcat and also by the stop process,
|
||||||
|
# the version command etc.
|
||||||
|
# Most options should go into CATALINA_OPTS.
|
||||||
|
#
|
||||||
|
# JAVA_ENDORSED_DIRS (Optional) Lists of of colon separated directories
|
||||||
|
# containing some jars in order to allow replacement of APIs
|
||||||
|
# created outside of the JCP (i.e. DOM and SAX from W3C).
|
||||||
|
# It can also be used to update the XML parser implementation.
|
||||||
|
# This is only supported for Java <= 8.
|
||||||
|
# Defaults to $CATALINA_HOME/endorsed.
|
||||||
|
#
|
||||||
|
# JPDA_TRANSPORT (Optional) JPDA transport used when the "jpda start"
|
||||||
|
# command is executed. The default is "dt_socket".
|
||||||
|
#
|
||||||
|
# JPDA_ADDRESS (Optional) Java runtime options used when the "jpda start"
|
||||||
|
# command is executed. The default is localhost:8000.
|
||||||
|
#
|
||||||
|
# JPDA_SUSPEND (Optional) Java runtime options used when the "jpda start"
|
||||||
|
# command is executed. Specifies whether JVM should suspend
|
||||||
|
# execution immediately after startup. Default is "n".
|
||||||
|
#
|
||||||
|
# JPDA_OPTS (Optional) Java runtime options used when the "jpda start"
|
||||||
|
# command is executed. If used, JPDA_TRANSPORT, JPDA_ADDRESS,
|
||||||
|
# and JPDA_SUSPEND are ignored. Thus, all required jpda
|
||||||
|
# options MUST be specified. The default is:
|
||||||
|
#
|
||||||
|
# -agentlib:jdwp=transport=$JPDA_TRANSPORT,
|
||||||
|
# address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND
|
||||||
|
#
|
||||||
|
# JSSE_OPTS (Optional) Java runtime options used to control the TLS
|
||||||
|
# implementation when JSSE is used. Default is:
|
||||||
|
# "-Djdk.tls.ephemeralDHKeySize=2048"
|
||||||
|
#
|
||||||
|
# CATALINA_PID (Optional) Path of the file which should contains the pid
|
||||||
|
# of the catalina startup java process, when start (fork) is
|
||||||
|
# used
|
||||||
|
#
|
||||||
|
# CATALINA_LOGGING_CONFIG (Optional) Override Tomcat's logging config file
|
||||||
|
# Example (all one line)
|
||||||
|
# CATALINA_LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"
|
||||||
|
#
|
||||||
|
# LOGGING_CONFIG Deprecated
|
||||||
|
# Use CATALINA_LOGGING_CONFIG
|
||||||
|
# This is only used if CATALINA_LOGGING_CONFIG is not set
|
||||||
|
# and LOGGING_CONFIG starts with "-D..."
|
||||||
|
#
|
||||||
|
# LOGGING_MANAGER (Optional) Override Tomcat's logging manager
|
||||||
|
# Example (all one line)
|
||||||
|
# LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
|
||||||
|
#
|
||||||
|
# UMASK (Optional) Override Tomcat's default UMASK of 0027
|
||||||
|
#
|
||||||
|
# USE_NOHUP (Optional) If set to the string true the start command will
|
||||||
|
# use nohup so that the Tomcat process will ignore any hangup
|
||||||
|
# signals. Default is "false" unless running on HP-UX in which
|
||||||
|
# case the default is "true"
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# OS specific support. $var _must_ be set to either true or false.
|
||||||
|
cygwin=false
|
||||||
|
darwin=false
|
||||||
|
os400=false
|
||||||
|
hpux=false
|
||||||
|
case "`uname`" in
|
||||||
|
CYGWIN*) cygwin=true;;
|
||||||
|
Darwin*) darwin=true;;
|
||||||
|
OS400*) os400=true;;
|
||||||
|
HP-UX*) hpux=true;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# resolve links - $0 may be a softlink
|
||||||
|
PRG="$0"
|
||||||
|
|
||||||
|
while [ -h "$PRG" ]; do
|
||||||
|
ls=`ls -ld "$PRG"`
|
||||||
|
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||||
|
if expr "$link" : '/.*' > /dev/null; then
|
||||||
|
PRG="$link"
|
||||||
|
else
|
||||||
|
PRG=`dirname "$PRG"`/"$link"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Get standard environment variables
|
||||||
|
PRGDIR=`dirname "$PRG"`
|
||||||
|
|
||||||
|
# Only set CATALINA_HOME if not already set
|
||||||
|
[ -z "$CATALINA_HOME" ] && CATALINA_HOME=`cd "$PRGDIR/.." >/dev/null; pwd`
|
||||||
|
|
||||||
|
# Copy CATALINA_BASE from CATALINA_HOME if not already set
|
||||||
|
[ -z "$CATALINA_BASE" ] && CATALINA_BASE="$CATALINA_HOME"
|
||||||
|
|
||||||
|
# Ensure that any user defined CLASSPATH variables are not used on startup,
|
||||||
|
# but allow them to be specified in setenv.sh, in rare case when it is needed.
|
||||||
|
CLASSPATH=
|
||||||
|
|
||||||
|
if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then
|
||||||
|
. "$CATALINA_BASE/bin/setenv.sh"
|
||||||
|
elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then
|
||||||
|
. "$CATALINA_HOME/bin/setenv.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# For Cygwin, ensure paths are in UNIX format before anything is touched
|
||||||
|
if $cygwin; then
|
||||||
|
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
|
||||||
|
[ -n "$JRE_HOME" ] && JRE_HOME=`cygpath --unix "$JRE_HOME"`
|
||||||
|
[ -n "$CATALINA_HOME" ] && CATALINA_HOME=`cygpath --unix "$CATALINA_HOME"`
|
||||||
|
[ -n "$CATALINA_BASE" ] && CATALINA_BASE=`cygpath --unix "$CATALINA_BASE"`
|
||||||
|
[ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Ensure that neither CATALINA_HOME nor CATALINA_BASE contains a colon
|
||||||
|
# as this is used as the separator in the classpath and Java provides no
|
||||||
|
# mechanism for escaping if the same character appears in the path.
|
||||||
|
case $CATALINA_HOME in
|
||||||
|
*:*) echo "Using CATALINA_HOME: $CATALINA_HOME";
|
||||||
|
echo "Unable to start as CATALINA_HOME contains a colon (:) character";
|
||||||
|
exit 1;
|
||||||
|
esac
|
||||||
|
case $CATALINA_BASE in
|
||||||
|
*:*) echo "Using CATALINA_BASE: $CATALINA_BASE";
|
||||||
|
echo "Unable to start as CATALINA_BASE contains a colon (:) character";
|
||||||
|
exit 1;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# For OS400
|
||||||
|
if $os400; then
|
||||||
|
# Set job priority to standard for interactive (interactive - 6) by using
|
||||||
|
# the interactive priority - 6, the helper threads that respond to requests
|
||||||
|
# will be running at the same priority as interactive jobs.
|
||||||
|
COMMAND='chgjob job('$JOBNAME') runpty(6)'
|
||||||
|
system $COMMAND
|
||||||
|
|
||||||
|
# Enable multi threading
|
||||||
|
export QIBM_MULTI_THREADED=Y
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get standard Java environment variables
|
||||||
|
if $os400; then
|
||||||
|
# -r will Only work on the os400 if the files are:
|
||||||
|
# 1. owned by the user
|
||||||
|
# 2. owned by the PRIMARY group of the user
|
||||||
|
# this will not work if the user belongs in secondary groups
|
||||||
|
. "$CATALINA_HOME"/bin/setclasspath.sh
|
||||||
|
else
|
||||||
|
if [ -r "$CATALINA_HOME"/bin/setclasspath.sh ]; then
|
||||||
|
. "$CATALINA_HOME"/bin/setclasspath.sh
|
||||||
|
else
|
||||||
|
echo "Cannot find $CATALINA_HOME/bin/setclasspath.sh"
|
||||||
|
echo "This file is needed to run this program"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add on extra jar files to CLASSPATH
|
||||||
|
if [ ! -z "$CLASSPATH" ] ; then
|
||||||
|
CLASSPATH="$CLASSPATH":
|
||||||
|
fi
|
||||||
|
CLASSPATH="$CLASSPATH""$CATALINA_HOME"/bin/bootstrap.jar
|
||||||
|
|
||||||
|
if [ -z "$CATALINA_OUT" ] ; then
|
||||||
|
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$CATALINA_TMPDIR" ] ; then
|
||||||
|
# Define the java.io.tmpdir to use for Catalina
|
||||||
|
CATALINA_TMPDIR="$CATALINA_BASE"/temp
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add tomcat-juli.jar to classpath
|
||||||
|
# tomcat-juli.jar can be over-ridden per instance
|
||||||
|
if [ -r "$CATALINA_BASE/bin/tomcat-juli.jar" ] ; then
|
||||||
|
CLASSPATH=$CLASSPATH:$CATALINA_BASE/bin/tomcat-juli.jar
|
||||||
|
else
|
||||||
|
CLASSPATH=$CLASSPATH:$CATALINA_HOME/bin/tomcat-juli.jar
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Bugzilla 37848: When no TTY is available, don't output to console
|
||||||
|
have_tty=0
|
||||||
|
if [ -t 0 ]; then
|
||||||
|
have_tty=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# For Cygwin, switch paths to Windows format before running java
|
||||||
|
if $cygwin; then
|
||||||
|
JAVA_HOME=`cygpath --absolute --windows "$JAVA_HOME"`
|
||||||
|
JRE_HOME=`cygpath --absolute --windows "$JRE_HOME"`
|
||||||
|
CATALINA_HOME=`cygpath --absolute --windows "$CATALINA_HOME"`
|
||||||
|
CATALINA_BASE=`cygpath --absolute --windows "$CATALINA_BASE"`
|
||||||
|
CATALINA_TMPDIR=`cygpath --absolute --windows "$CATALINA_TMPDIR"`
|
||||||
|
CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
|
||||||
|
[ -n "$JAVA_ENDORSED_DIRS" ] && JAVA_ENDORSED_DIRS=`cygpath --path --windows "$JAVA_ENDORSED_DIRS"`
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$JSSE_OPTS" ] ; then
|
||||||
|
JSSE_OPTS="-Djdk.tls.ephemeralDHKeySize=2048"
|
||||||
|
fi
|
||||||
|
JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS"
|
||||||
|
|
||||||
|
# Check for the deprecated LOGGING_CONFIG
|
||||||
|
# Only use it if CATALINA_LOGGING_CONFIG is not set and LOGGING_CONFIG starts with "-D..."
|
||||||
|
if [ -z "$CATALINA_LOGGING_CONFIG" ]; then
|
||||||
|
case $LOGGING_CONFIG in
|
||||||
|
-D*) CATALINA_LOGGING_CONFIG="$LOGGING_CONFIG"
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set juli LogManager config file if it is present and an override has not been issued
|
||||||
|
if [ -z "$CATALINA_LOGGING_CONFIG" ]; then
|
||||||
|
if [ -r "$CATALINA_BASE"/conf/logging.properties ]; then
|
||||||
|
CATALINA_LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"
|
||||||
|
else
|
||||||
|
# Bugzilla 45585
|
||||||
|
CATALINA_LOGGING_CONFIG="-Dnop"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$LOGGING_MANAGER" ]; then
|
||||||
|
LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set UMASK unless it has been overridden
|
||||||
|
if [ -z "$UMASK" ]; then
|
||||||
|
UMASK="0027"
|
||||||
|
fi
|
||||||
|
umask $UMASK
|
||||||
|
|
||||||
|
# Java 9 no longer supports the java.endorsed.dirs
|
||||||
|
# system property. Only try to use it if
|
||||||
|
# JAVA_ENDORSED_DIRS was explicitly set
|
||||||
|
# or CATALINA_HOME/endorsed exists.
|
||||||
|
ENDORSED_PROP=ignore.endorsed.dirs
|
||||||
|
if [ -n "$JAVA_ENDORSED_DIRS" ]; then
|
||||||
|
ENDORSED_PROP=java.endorsed.dirs
|
||||||
|
fi
|
||||||
|
if [ -d "$CATALINA_HOME/endorsed" ]; then
|
||||||
|
ENDORSED_PROP=java.endorsed.dirs
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Make the umask available when using the org.apache.catalina.security.SecurityListener
|
||||||
|
JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`"
|
||||||
|
|
||||||
|
if [ -z "$USE_NOHUP" ]; then
|
||||||
|
if $hpux; then
|
||||||
|
USE_NOHUP="true"
|
||||||
|
else
|
||||||
|
USE_NOHUP="false"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
unset _NOHUP
|
||||||
|
if [ "$USE_NOHUP" = "true" ]; then
|
||||||
|
_NOHUP="nohup"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add the JAVA 9 specific start-up parameters required by Tomcat
|
||||||
|
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens=java.base/java.lang=ALL-UNNAMED"
|
||||||
|
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens=java.base/java.io=ALL-UNNAMED"
|
||||||
|
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens=java.base/java.util=ALL-UNNAMED"
|
||||||
|
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens=java.base/java.util.concurrent=ALL-UNNAMED"
|
||||||
|
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED"
|
||||||
|
export JDK_JAVA_OPTIONS
|
||||||
|
|
||||||
|
# ----- Execute The Requested Command -----------------------------------------
|
||||||
|
|
||||||
|
# Bugzilla 37848: only output this if we have a TTY
|
||||||
|
if [ $have_tty -eq 1 ]; then
|
||||||
|
echo "Using CATALINA_BASE: $CATALINA_BASE"
|
||||||
|
echo "Using CATALINA_HOME: $CATALINA_HOME"
|
||||||
|
echo "Using CATALINA_TMPDIR: $CATALINA_TMPDIR"
|
||||||
|
if [ "$1" = "debug" ] ; then
|
||||||
|
echo "Using JAVA_HOME: $JAVA_HOME"
|
||||||
|
else
|
||||||
|
echo "Using JRE_HOME: $JRE_HOME"
|
||||||
|
fi
|
||||||
|
echo "Using CLASSPATH: $CLASSPATH"
|
||||||
|
echo "Using CATALINA_OPTS: $CATALINA_OPTS"
|
||||||
|
if [ ! -z "$CATALINA_PID" ]; then
|
||||||
|
echo "Using CATALINA_PID: $CATALINA_PID"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" = "jpda" ] ; then
|
||||||
|
if [ -z "$JPDA_TRANSPORT" ]; then
|
||||||
|
JPDA_TRANSPORT="dt_socket"
|
||||||
|
fi
|
||||||
|
if [ -z "$JPDA_ADDRESS" ]; then
|
||||||
|
JPDA_ADDRESS="localhost:8000"
|
||||||
|
fi
|
||||||
|
if [ -z "$JPDA_SUSPEND" ]; then
|
||||||
|
JPDA_SUSPEND="n"
|
||||||
|
fi
|
||||||
|
if [ -z "$JPDA_OPTS" ]; then
|
||||||
|
JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"
|
||||||
|
fi
|
||||||
|
CATALINA_OPTS="$JPDA_OPTS $CATALINA_OPTS"
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" = "debug" ] ; then
|
||||||
|
if $os400; then
|
||||||
|
echo "Debug command not available on OS400"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
shift
|
||||||
|
if [ "$1" = "-security" ] ; then
|
||||||
|
if [ $have_tty -eq 1 ]; then
|
||||||
|
echo "Using Security Manager"
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
eval exec "\"$_RUNJDB\"" "\"$CATALINA_LOGGING_CONFIG\"" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" \
|
||||||
|
-D$ENDORSED_PROP="$JAVA_ENDORSED_DIRS" \
|
||||||
|
-classpath "$CLASSPATH" \
|
||||||
|
-sourcepath "$CATALINA_HOME"/../../java \
|
||||||
|
-Djava.security.manager \
|
||||||
|
-Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy \
|
||||||
|
-Dcatalina.base="$CATALINA_BASE" \
|
||||||
|
-Dcatalina.home="$CATALINA_HOME" \
|
||||||
|
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
|
||||||
|
org.apache.catalina.startup.Bootstrap "$@" start
|
||||||
|
else
|
||||||
|
eval exec "\"$_RUNJDB\"" "\"$CATALINA_LOGGING_CONFIG\"" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" \
|
||||||
|
-D$ENDORSED_PROP="$JAVA_ENDORSED_DIRS" \
|
||||||
|
-classpath "$CLASSPATH" \
|
||||||
|
-sourcepath "$CATALINA_HOME"/../../java \
|
||||||
|
-Dcatalina.base="$CATALINA_BASE" \
|
||||||
|
-Dcatalina.home="$CATALINA_HOME" \
|
||||||
|
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
|
||||||
|
org.apache.catalina.startup.Bootstrap "$@" start
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
elif [ "$1" = "run" ]; then
|
||||||
|
|
||||||
|
shift
|
||||||
|
if [ "$1" = "-security" ] ; then
|
||||||
|
if [ $have_tty -eq 1 ]; then
|
||||||
|
echo "Using Security Manager"
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
eval exec "\"$_RUNJAVA\"" "\"$CATALINA_LOGGING_CONFIG\"" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" \
|
||||||
|
-D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
|
||||||
|
-classpath "\"$CLASSPATH\"" \
|
||||||
|
-Djava.security.manager \
|
||||||
|
-Djava.security.policy=="\"$CATALINA_BASE/conf/catalina.policy\"" \
|
||||||
|
-Dcatalina.base="\"$CATALINA_BASE\"" \
|
||||||
|
-Dcatalina.home="\"$CATALINA_HOME\"" \
|
||||||
|
-Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
|
||||||
|
org.apache.catalina.startup.Bootstrap "$@" start
|
||||||
|
else
|
||||||
|
eval exec "\"$_RUNJAVA\"" "\"$CATALINA_LOGGING_CONFIG\"" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" \
|
||||||
|
-D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
|
||||||
|
-classpath "\"$CLASSPATH\"" \
|
||||||
|
-Dcatalina.base="\"$CATALINA_BASE\"" \
|
||||||
|
-Dcatalina.home="\"$CATALINA_HOME\"" \
|
||||||
|
-Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
|
||||||
|
org.apache.catalina.startup.Bootstrap "$@" start
|
||||||
|
fi
|
||||||
|
|
||||||
|
elif [ "$1" = "start" ] ; then
|
||||||
|
|
||||||
|
if [ ! -z "$CATALINA_PID" ]; then
|
||||||
|
if [ -f "$CATALINA_PID" ]; then
|
||||||
|
if [ -s "$CATALINA_PID" ]; then
|
||||||
|
echo "Existing PID file found during start."
|
||||||
|
if [ -r "$CATALINA_PID" ]; then
|
||||||
|
PID=`cat "$CATALINA_PID"`
|
||||||
|
ps -p $PID >/dev/null 2>&1
|
||||||
|
if [ $? -eq 0 ] ; then
|
||||||
|
echo "Tomcat appears to still be running with PID $PID. Start aborted."
|
||||||
|
echo "If the following process is not a Tomcat process, remove the PID file and try again:"
|
||||||
|
ps -f -p $PID
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "Removing/clearing stale PID file."
|
||||||
|
rm -f "$CATALINA_PID" >/dev/null 2>&1
|
||||||
|
if [ $? != 0 ]; then
|
||||||
|
if [ -w "$CATALINA_PID" ]; then
|
||||||
|
cat /dev/null > "$CATALINA_PID"
|
||||||
|
else
|
||||||
|
echo "Unable to remove or clear stale PID file. Start aborted."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Unable to read PID file. Start aborted."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
rm -f "$CATALINA_PID" >/dev/null 2>&1
|
||||||
|
if [ $? != 0 ]; then
|
||||||
|
if [ ! -w "$CATALINA_PID" ]; then
|
||||||
|
echo "Unable to remove or write to empty PID file. Start aborted."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
shift
|
||||||
|
if [ -z "$CATALINA_OUT_CMD" ] ; then
|
||||||
|
touch "$CATALINA_OUT"
|
||||||
|
else
|
||||||
|
if [ ! -e "$CATALINA_OUT" ]; then
|
||||||
|
if ! mkfifo "$CATALINA_OUT"; then
|
||||||
|
echo "cannot create named pipe $CATALINA_OUT. Start aborted."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
elif [ ! -p "$CATALINA_OUT" ]; then
|
||||||
|
echo "$CATALINA_OUT exists and is not a named pipe. Start aborted."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
$CATALINA_OUT_CMD <"$CATALINA_OUT" &
|
||||||
|
fi
|
||||||
|
if [ "$1" = "-security" ] ; then
|
||||||
|
if [ $have_tty -eq 1 ]; then
|
||||||
|
echo "Using Security Manager"
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
eval $_NOHUP "\"$_RUNJAVA\"" "\"$CATALINA_LOGGING_CONFIG\"" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" \
|
||||||
|
-D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
|
||||||
|
-classpath "\"$CLASSPATH\"" \
|
||||||
|
-Djava.security.manager \
|
||||||
|
-Djava.security.policy=="\"$CATALINA_BASE/conf/catalina.policy\"" \
|
||||||
|
-Dcatalina.base="\"$CATALINA_BASE\"" \
|
||||||
|
-Dcatalina.home="\"$CATALINA_HOME\"" \
|
||||||
|
-Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
|
||||||
|
org.apache.catalina.startup.Bootstrap "$@" start \
|
||||||
|
>> "$CATALINA_OUT" 2>&1 "&"
|
||||||
|
|
||||||
|
else
|
||||||
|
eval $_NOHUP "\"$_RUNJAVA\"" "\"$CATALINA_LOGGING_CONFIG\"" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" \
|
||||||
|
-D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
|
||||||
|
-classpath "\"$CLASSPATH\"" \
|
||||||
|
-Dcatalina.base="\"$CATALINA_BASE\"" \
|
||||||
|
-Dcatalina.home="\"$CATALINA_HOME\"" \
|
||||||
|
-Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
|
||||||
|
org.apache.catalina.startup.Bootstrap "$@" start \
|
||||||
|
>> "$CATALINA_OUT" 2>&1 "&"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -z "$CATALINA_PID" ]; then
|
||||||
|
echo $! > "$CATALINA_PID"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Tomcat started."
|
||||||
|
|
||||||
|
elif [ "$1" = "stop" ] ; then
|
||||||
|
|
||||||
|
shift
|
||||||
|
|
||||||
|
SLEEP=5
|
||||||
|
if [ ! -z "$1" ]; then
|
||||||
|
echo $1 | grep "[^0-9]" >/dev/null 2>&1
|
||||||
|
if [ $? -gt 0 ]; then
|
||||||
|
SLEEP=$1
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
FORCE=0
|
||||||
|
if [ "$1" = "-force" ]; then
|
||||||
|
shift
|
||||||
|
FORCE=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -z "$CATALINA_PID" ]; then
|
||||||
|
if [ -f "$CATALINA_PID" ]; then
|
||||||
|
if [ -s "$CATALINA_PID" ]; then
|
||||||
|
kill -0 `cat "$CATALINA_PID"` >/dev/null 2>&1
|
||||||
|
if [ $? -gt 0 ]; then
|
||||||
|
echo "PID file found but either no matching process was found or the current user does not have permission to stop the process. Stop aborted."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "PID file is empty and has been ignored."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "\$CATALINA_PID was set but the specified file does not exist. Is Tomcat running? Stop aborted."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
eval "\"$_RUNJAVA\"" $LOGGING_MANAGER "$JAVA_OPTS" \
|
||||||
|
-D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
|
||||||
|
-classpath "\"$CLASSPATH\"" \
|
||||||
|
-Dcatalina.base="\"$CATALINA_BASE\"" \
|
||||||
|
-Dcatalina.home="\"$CATALINA_HOME\"" \
|
||||||
|
-Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
|
||||||
|
org.apache.catalina.startup.Bootstrap "$@" stop
|
||||||
|
|
||||||
|
# stop failed. Shutdown port disabled? Try a normal kill.
|
||||||
|
if [ $? != 0 ]; then
|
||||||
|
if [ ! -z "$CATALINA_PID" ]; then
|
||||||
|
echo "The stop command failed. Attempting to signal the process to stop through OS signal."
|
||||||
|
kill -15 `cat "$CATALINA_PID"` >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -z "$CATALINA_PID" ]; then
|
||||||
|
if [ -f "$CATALINA_PID" ]; then
|
||||||
|
while [ $SLEEP -ge 0 ]; do
|
||||||
|
kill -0 `cat "$CATALINA_PID"` >/dev/null 2>&1
|
||||||
|
if [ $? -gt 0 ]; then
|
||||||
|
rm -f "$CATALINA_PID" >/dev/null 2>&1
|
||||||
|
if [ $? != 0 ]; then
|
||||||
|
if [ -w "$CATALINA_PID" ]; then
|
||||||
|
cat /dev/null > "$CATALINA_PID"
|
||||||
|
# If Tomcat has stopped don't try and force a stop with an empty PID file
|
||||||
|
FORCE=0
|
||||||
|
else
|
||||||
|
echo "The PID file could not be removed or cleared."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echo "Tomcat stopped."
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if [ $SLEEP -gt 0 ]; then
|
||||||
|
sleep 1
|
||||||
|
fi
|
||||||
|
if [ $SLEEP -eq 0 ]; then
|
||||||
|
echo "Tomcat did not stop in time."
|
||||||
|
if [ $FORCE -eq 0 ]; then
|
||||||
|
echo "PID file was not removed."
|
||||||
|
fi
|
||||||
|
echo "To aid diagnostics a thread dump has been written to standard out."
|
||||||
|
kill -3 `cat "$CATALINA_PID"`
|
||||||
|
fi
|
||||||
|
SLEEP=`expr $SLEEP - 1 `
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
KILL_SLEEP_INTERVAL=5
|
||||||
|
if [ $FORCE -eq 1 ]; then
|
||||||
|
if [ -z "$CATALINA_PID" ]; then
|
||||||
|
echo "Kill failed: \$CATALINA_PID not set"
|
||||||
|
else
|
||||||
|
if [ -f "$CATALINA_PID" ]; then
|
||||||
|
PID=`cat "$CATALINA_PID"`
|
||||||
|
echo "Killing Tomcat with the PID: $PID"
|
||||||
|
kill -9 $PID
|
||||||
|
while [ $KILL_SLEEP_INTERVAL -ge 0 ]; do
|
||||||
|
kill -0 `cat "$CATALINA_PID"` >/dev/null 2>&1
|
||||||
|
if [ $? -gt 0 ]; then
|
||||||
|
rm -f "$CATALINA_PID" >/dev/null 2>&1
|
||||||
|
if [ $? != 0 ]; then
|
||||||
|
if [ -w "$CATALINA_PID" ]; then
|
||||||
|
cat /dev/null > "$CATALINA_PID"
|
||||||
|
else
|
||||||
|
echo "The PID file could not be removed."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echo "The Tomcat process has been killed."
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if [ $KILL_SLEEP_INTERVAL -gt 0 ]; then
|
||||||
|
sleep 1
|
||||||
|
fi
|
||||||
|
KILL_SLEEP_INTERVAL=`expr $KILL_SLEEP_INTERVAL - 1 `
|
||||||
|
done
|
||||||
|
if [ $KILL_SLEEP_INTERVAL -lt 0 ]; then
|
||||||
|
echo "Tomcat has not been killed completely yet. The process might be waiting on some system call or might be UNINTERRUPTIBLE."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
elif [ "$1" = "configtest" ] ; then
|
||||||
|
|
||||||
|
eval "\"$_RUNJAVA\"" $LOGGING_MANAGER "$JAVA_OPTS" \
|
||||||
|
-D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
|
||||||
|
-classpath "\"$CLASSPATH\"" \
|
||||||
|
-Dcatalina.base="\"$CATALINA_BASE\"" \
|
||||||
|
-Dcatalina.home="\"$CATALINA_HOME\"" \
|
||||||
|
-Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
|
||||||
|
org.apache.catalina.startup.Bootstrap configtest
|
||||||
|
result=$?
|
||||||
|
if [ $result -ne 0 ]; then
|
||||||
|
echo "Configuration error detected!"
|
||||||
|
fi
|
||||||
|
exit $result
|
||||||
|
|
||||||
|
elif [ "$1" = "version" ] ; then
|
||||||
|
|
||||||
|
"$_RUNJAVA" \
|
||||||
|
-classpath "$CATALINA_HOME/lib/catalina.jar" \
|
||||||
|
org.apache.catalina.util.ServerInfo
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
echo "Usage: catalina.sh ( commands ... )"
|
||||||
|
echo "commands:"
|
||||||
|
if $os400; then
|
||||||
|
echo " debug Start Catalina in a debugger (not available on OS400)"
|
||||||
|
echo " debug -security Debug Catalina with a security manager (not available on OS400)"
|
||||||
|
else
|
||||||
|
echo " debug Start Catalina in a debugger"
|
||||||
|
echo " debug -security Debug Catalina with a security manager"
|
||||||
|
fi
|
||||||
|
echo " jpda start Start Catalina under JPDA debugger"
|
||||||
|
echo " run Start Catalina in the current window"
|
||||||
|
echo " run -security Start in the current window with security manager"
|
||||||
|
echo " start Start Catalina in a separate window"
|
||||||
|
echo " start -security Start in a separate window with security manager"
|
||||||
|
echo " stop Stop Catalina, waiting up to 5 seconds for the process to end"
|
||||||
|
echo " stop n Stop Catalina, waiting up to n seconds for the process to end"
|
||||||
|
echo " stop -force Stop Catalina, wait up to 5 seconds and then use kill -KILL if still running"
|
||||||
|
echo " stop n -force Stop Catalina, wait up to n seconds and then use kill -KILL if still running"
|
||||||
|
echo " configtest Run a basic syntax check on server.xml - check exit code for result"
|
||||||
|
echo " version What version of tomcat are you running?"
|
||||||
|
echo "Note: Waiting for the process to end and use of the -force option require that \$CATALINA_PID is defined"
|
||||||
|
exit 1
|
||||||
|
|
||||||
|
fi
|
||||||
Binary file not shown.
BIN
centos8_tomcat/apache-tomcat-7.0.108/bin/commons-daemon.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/bin/commons-daemon.jar
Normal file
Binary file not shown.
58
centos8_tomcat/apache-tomcat-7.0.108/bin/configtest.bat
Normal file
58
centos8_tomcat/apache-tomcat-7.0.108/bin/configtest.bat
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
@echo off
|
||||||
|
rem Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
rem contributor license agreements. See the NOTICE file distributed with
|
||||||
|
rem this work for additional information regarding copyright ownership.
|
||||||
|
rem The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
rem (the "License"); you may not use this file except in compliance with
|
||||||
|
rem the License. You may obtain a copy of the License at
|
||||||
|
rem
|
||||||
|
rem http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
rem
|
||||||
|
rem Unless required by applicable law or agreed to in writing, software
|
||||||
|
rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
rem See the License for the specific language governing permissions and
|
||||||
|
rem limitations under the License.
|
||||||
|
|
||||||
|
rem ---------------------------------------------------------------------------
|
||||||
|
rem Configuration test script for the CATALINA Server
|
||||||
|
rem ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
setlocal
|
||||||
|
|
||||||
|
rem Guess CATALINA_HOME if not defined
|
||||||
|
set "CURRENT_DIR=%cd%"
|
||||||
|
if not "%CATALINA_HOME%" == "" goto gotHome
|
||||||
|
set "CATALINA_HOME=%CURRENT_DIR%"
|
||||||
|
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
|
||||||
|
cd ..
|
||||||
|
set "CATALINA_HOME=%cd%"
|
||||||
|
cd "%CURRENT_DIR%"
|
||||||
|
:gotHome
|
||||||
|
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
|
||||||
|
echo The CATALINA_HOME environment variable is not defined correctly
|
||||||
|
echo This environment variable is needed to run this program
|
||||||
|
goto end
|
||||||
|
:okHome
|
||||||
|
|
||||||
|
set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"
|
||||||
|
|
||||||
|
rem Check that target executable exists
|
||||||
|
if exist "%EXECUTABLE%" goto okExec
|
||||||
|
echo Cannot find "%EXECUTABLE%"
|
||||||
|
echo This file is needed to run this program
|
||||||
|
goto end
|
||||||
|
:okExec
|
||||||
|
|
||||||
|
rem Get remaining unshifted command line arguments and save them in the
|
||||||
|
set CMD_LINE_ARGS=
|
||||||
|
:setArgs
|
||||||
|
if ""%1""=="""" goto doneSetArgs
|
||||||
|
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
|
||||||
|
shift
|
||||||
|
goto setArgs
|
||||||
|
:doneSetArgs
|
||||||
|
|
||||||
|
call "%EXECUTABLE%" configtest %CMD_LINE_ARGS%
|
||||||
|
|
||||||
|
:end
|
||||||
60
centos8_tomcat/apache-tomcat-7.0.108/bin/configtest.sh
Executable file
60
centos8_tomcat/apache-tomcat-7.0.108/bin/configtest.sh
Executable file
@ -0,0 +1,60 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
# contributor license agreements. See the NOTICE file distributed with
|
||||||
|
# this work for additional information regarding copyright ownership.
|
||||||
|
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
# (the "License"); you may not use this file except in compliance with
|
||||||
|
# the License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Configuration Test Script for the CATALINA Server
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Better OS/400 detection: see Bugzilla 31132
|
||||||
|
os400=false
|
||||||
|
case "`uname`" in
|
||||||
|
OS400*) os400=true;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# resolve links - $0 may be a softlink
|
||||||
|
PRG="$0"
|
||||||
|
|
||||||
|
while [ -h "$PRG" ] ; do
|
||||||
|
ls=`ls -ld "$PRG"`
|
||||||
|
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||||
|
if expr "$link" : '/.*' > /dev/null; then
|
||||||
|
PRG="$link"
|
||||||
|
else
|
||||||
|
PRG=`dirname "$PRG"`/"$link"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
PRGDIR=`dirname "$PRG"`
|
||||||
|
EXECUTABLE=catalina.sh
|
||||||
|
|
||||||
|
# Check that target executable exists
|
||||||
|
if $os400; then
|
||||||
|
# -x will Only work on the os400 if the files are:
|
||||||
|
# 1. owned by the user
|
||||||
|
# 2. owned by the PRIMARY group of the user
|
||||||
|
# this will not work if the user belongs in secondary groups
|
||||||
|
eval
|
||||||
|
else
|
||||||
|
if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
|
||||||
|
echo "Cannot find $PRGDIR/$EXECUTABLE"
|
||||||
|
echo "The file is absent or does not have execute permission"
|
||||||
|
echo "This file is needed to run this program"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec "$PRGDIR"/"$EXECUTABLE" configtest "$@"
|
||||||
293
centos8_tomcat/apache-tomcat-7.0.108/bin/daemon.sh
Executable file
293
centos8_tomcat/apache-tomcat-7.0.108/bin/daemon.sh
Executable file
@ -0,0 +1,293 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
# contributor license agreements. See the NOTICE file distributed with
|
||||||
|
# this work for additional information regarding copyright ownership.
|
||||||
|
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
# (the "License"); you may not use this file except in compliance with
|
||||||
|
# the License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Commons Daemon wrapper script.
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# resolve links - $0 may be a softlink
|
||||||
|
PRG="$0"
|
||||||
|
|
||||||
|
while [ -h "$PRG" ]; do
|
||||||
|
ls=`ls -ld "$PRG"`
|
||||||
|
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||||
|
if expr "$link" : '/.*' > /dev/null; then
|
||||||
|
PRG="$link"
|
||||||
|
else
|
||||||
|
PRG=`dirname "$PRG"`/"$link"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
DIRNAME="`dirname "$PRG"`"
|
||||||
|
PROGRAM="`basename "$PRG"`"
|
||||||
|
while [ ".$1" != . ]
|
||||||
|
do
|
||||||
|
case "$1" in
|
||||||
|
--java-home )
|
||||||
|
JAVA_HOME="$2"
|
||||||
|
shift; shift;
|
||||||
|
continue
|
||||||
|
;;
|
||||||
|
--catalina-home )
|
||||||
|
CATALINA_HOME="$2"
|
||||||
|
shift; shift;
|
||||||
|
continue
|
||||||
|
;;
|
||||||
|
--catalina-base )
|
||||||
|
CATALINA_BASE="$2"
|
||||||
|
shift; shift;
|
||||||
|
continue
|
||||||
|
;;
|
||||||
|
--catalina-pid )
|
||||||
|
CATALINA_PID="$2"
|
||||||
|
shift; shift;
|
||||||
|
continue
|
||||||
|
;;
|
||||||
|
--tomcat-user )
|
||||||
|
TOMCAT_USER="$2"
|
||||||
|
shift; shift;
|
||||||
|
continue
|
||||||
|
;;
|
||||||
|
--service-start-wait-time )
|
||||||
|
SERVICE_START_WAIT_TIME="$2"
|
||||||
|
shift; shift;
|
||||||
|
continue
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
# OS specific support (must be 'true' or 'false').
|
||||||
|
cygwin=false;
|
||||||
|
darwin=false;
|
||||||
|
case "`uname`" in
|
||||||
|
CYGWIN*)
|
||||||
|
cygwin=true
|
||||||
|
;;
|
||||||
|
Darwin*)
|
||||||
|
darwin=true
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Use the maximum available, or set MAX_FD != -1 to use that
|
||||||
|
test ".$MAX_FD" = . && MAX_FD="maximum"
|
||||||
|
# Setup parameters for running the jsvc
|
||||||
|
#
|
||||||
|
test ".$TOMCAT_USER" = . && TOMCAT_USER=tomcat
|
||||||
|
# Set JAVA_HOME to working JDK or JRE
|
||||||
|
# If not set we'll try to guess the JAVA_HOME
|
||||||
|
# from java binary if on the PATH
|
||||||
|
#
|
||||||
|
if [ -z "$JAVA_HOME" ]; then
|
||||||
|
JAVA_BIN="`which java 2>/dev/null || type java 2>&1`"
|
||||||
|
while [ -h "$JAVA_BIN" ]; do
|
||||||
|
ls=`ls -ld "$JAVA_BIN"`
|
||||||
|
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||||
|
if expr "$link" : '/.*' > /dev/null; then
|
||||||
|
JAVA_BIN="$link"
|
||||||
|
else
|
||||||
|
JAVA_BIN="`dirname "$JAVA_BIN"`/$link"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
test -x "$JAVA_BIN" && JAVA_HOME="`dirname "$JAVA_BIN"`"
|
||||||
|
test ".$JAVA_HOME" != . && JAVA_HOME=`cd "$JAVA_HOME/.." >/dev/null; pwd`
|
||||||
|
else
|
||||||
|
JAVA_BIN="$JAVA_HOME/bin/java"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Only set CATALINA_HOME if not already set
|
||||||
|
test ".$CATALINA_HOME" = . && CATALINA_HOME=`cd "$DIRNAME/.." >/dev/null; pwd`
|
||||||
|
test ".$CATALINA_BASE" = . && CATALINA_BASE="$CATALINA_HOME"
|
||||||
|
test ".$CATALINA_MAIN" = . && CATALINA_MAIN=org.apache.catalina.startup.Bootstrap
|
||||||
|
# If not explicitly set, look for jsvc in CATALINA_BASE first then CATALINA_HOME
|
||||||
|
if [ -z "$JSVC" ]; then
|
||||||
|
JSVC="$CATALINA_BASE/bin/jsvc"
|
||||||
|
if [ ! -x "$JSVC" ]; then
|
||||||
|
JSVC="$CATALINA_HOME/bin/jsvc"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# Set the default service-start wait time if necessary
|
||||||
|
test ".$SERVICE_START_WAIT_TIME" = . && SERVICE_START_WAIT_TIME=10
|
||||||
|
|
||||||
|
# Ensure that any user defined CLASSPATH variables are not used on startup,
|
||||||
|
# but allow them to be specified in setenv.sh, in rare case when it is needed.
|
||||||
|
CLASSPATH=
|
||||||
|
JAVA_OPTS=
|
||||||
|
if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then
|
||||||
|
. "$CATALINA_BASE/bin/setenv.sh"
|
||||||
|
elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then
|
||||||
|
. "$CATALINA_HOME/bin/setenv.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add on extra jar files to CLASSPATH
|
||||||
|
test ".$CLASSPATH" != . && CLASSPATH="$CLASSPATH:"
|
||||||
|
CLASSPATH="$CLASSPATH$CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/commons-daemon.jar"
|
||||||
|
|
||||||
|
test ".$CATALINA_OUT" = . && CATALINA_OUT="$CATALINA_BASE/logs/catalina-daemon.out"
|
||||||
|
test ".$CATALINA_TMP" = . && CATALINA_TMP="$CATALINA_BASE/temp"
|
||||||
|
|
||||||
|
# Add tomcat-juli.jar to classpath
|
||||||
|
# tomcat-juli.jar can be over-ridden per instance
|
||||||
|
if [ -r "$CATALINA_BASE/bin/tomcat-juli.jar" ] ; then
|
||||||
|
CLASSPATH="$CLASSPATH:$CATALINA_BASE/bin/tomcat-juli.jar"
|
||||||
|
else
|
||||||
|
CLASSPATH="$CLASSPATH:$CATALINA_HOME/bin/tomcat-juli.jar"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check for the deprecated LOGGING_CONFIG
|
||||||
|
# Only use it if CATALINA_LOGGING_CONFIG is not set and LOGGING_CONFIG starts with "-D..."
|
||||||
|
if [ -z "$CATALINA_LOGGING_CONFIG" ]; then
|
||||||
|
case $LOGGING_CONFIG in
|
||||||
|
-D*) CATALINA_LOGGING_CONFIG="$LOGGING_CONFIG"
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set juli LogManager config file if it is present and an override has not been issued
|
||||||
|
if [ -z "$CATALINA_LOGGING_CONFIG" ]; then
|
||||||
|
if [ -r "$CATALINA_BASE/conf/logging.properties" ]; then
|
||||||
|
CATALINA_LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"
|
||||||
|
else
|
||||||
|
# Bugzilla 45585
|
||||||
|
CATALINA_LOGGING_CONFIG="-Dnop"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
test ".$LOGGING_MANAGER" = . && LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
|
||||||
|
JAVA_OPTS="$JAVA_OPTS $LOGGING_MANAGER"
|
||||||
|
|
||||||
|
# Set -pidfile
|
||||||
|
test ".$CATALINA_PID" = . && CATALINA_PID="$CATALINA_BASE/logs/catalina-daemon.pid"
|
||||||
|
|
||||||
|
# Increase the maximum file descriptors if we can
|
||||||
|
if [ "$cygwin" = "false" ]; then
|
||||||
|
MAX_FD_LIMIT=`ulimit -H -n`
|
||||||
|
if [ "$?" -eq 0 ]; then
|
||||||
|
# Darwin does not allow RLIMIT_INFINITY on file soft limit
|
||||||
|
if [ "$darwin" = "true" ] && [ "$MAX_FD_LIMIT" = "unlimited" ]; then
|
||||||
|
MAX_FD_LIMIT=`/usr/sbin/sysctl -n kern.maxfilesperproc`
|
||||||
|
fi
|
||||||
|
test ".$MAX_FD" = ".maximum" && MAX_FD="$MAX_FD_LIMIT"
|
||||||
|
ulimit -n $MAX_FD
|
||||||
|
if [ "$?" -ne 0 ]; then
|
||||||
|
echo "$PROGRAM: Could not set maximum file descriptor limit: $MAX_FD"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "$PROGRAM: Could not query system maximum file descriptor limit: $MAX_FD_LIMIT"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set UMASK unless it has been overridden
|
||||||
|
if [ -z "$UMASK" ]; then
|
||||||
|
UMASK="0027"
|
||||||
|
fi
|
||||||
|
umask $UMASK
|
||||||
|
|
||||||
|
# Java 9 no longer supports the java.endorsed.dirs
|
||||||
|
# system property. Only try to use it if
|
||||||
|
# JAVA_ENDORSED_DIRS was explicitly set
|
||||||
|
# or CATALINA_HOME/endorsed exists.
|
||||||
|
ENDORSED_PROP=ignore.endorsed.dirs
|
||||||
|
if [ -n "$JAVA_ENDORSED_DIRS" ]; then
|
||||||
|
ENDORSED_PROP=java.endorsed.dirs
|
||||||
|
fi
|
||||||
|
if [ -d "$CATALINA_HOME/endorsed" ]; then
|
||||||
|
ENDORSED_PROP=java.endorsed.dirs
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ----- Execute The Requested Command -----------------------------------------
|
||||||
|
case "$1" in
|
||||||
|
run )
|
||||||
|
shift
|
||||||
|
eval exec "\"$JSVC\"" $* \
|
||||||
|
"$JSVC_OPTS" \
|
||||||
|
-java-home "\"$JAVA_HOME\"" \
|
||||||
|
-pidfile "\"$CATALINA_PID\"" \
|
||||||
|
-wait $SERVICE_START_WAIT_TIME \
|
||||||
|
-umask $UMASK \
|
||||||
|
-nodetach \
|
||||||
|
-outfile "\"&1\"" \
|
||||||
|
-errfile "\"&2\"" \
|
||||||
|
-classpath "\"$CLASSPATH\"" \
|
||||||
|
"\"$CATALINA_LOGGING_CONFIG\"" "$JAVA_OPTS" "$CATALINA_OPTS" \
|
||||||
|
-D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
|
||||||
|
-Dcatalina.base="\"$CATALINA_BASE\"" \
|
||||||
|
-Dcatalina.home="\"$CATALINA_HOME\"" \
|
||||||
|
-Djava.io.tmpdir="\"$CATALINA_TMP\"" \
|
||||||
|
$CATALINA_MAIN
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
start )
|
||||||
|
eval "\"$JSVC\"" \
|
||||||
|
"$JSVC_OPTS" \
|
||||||
|
-java-home "\"$JAVA_HOME\"" \
|
||||||
|
-user $TOMCAT_USER \
|
||||||
|
-pidfile "\"$CATALINA_PID\"" \
|
||||||
|
-wait $SERVICE_START_WAIT_TIME \
|
||||||
|
-umask $UMASK \
|
||||||
|
-outfile "\"$CATALINA_OUT\"" \
|
||||||
|
-errfile "\"&1\"" \
|
||||||
|
-classpath "\"$CLASSPATH\"" \
|
||||||
|
"\"$CATALINA_LOGGING_CONFIG\"" "$JAVA_OPTS" "$CATALINA_OPTS" \
|
||||||
|
-D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
|
||||||
|
-Dcatalina.base="\"$CATALINA_BASE\"" \
|
||||||
|
-Dcatalina.home="\"$CATALINA_HOME\"" \
|
||||||
|
-Djava.io.tmpdir="\"$CATALINA_TMP\"" \
|
||||||
|
$CATALINA_MAIN
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
stop )
|
||||||
|
eval "\"$JSVC\"" \
|
||||||
|
"$JSVC_OPTS" \
|
||||||
|
-stop \
|
||||||
|
-pidfile "\"$CATALINA_PID\"" \
|
||||||
|
-classpath "\"$CLASSPATH\"" \
|
||||||
|
-D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
|
||||||
|
-Dcatalina.base="\"$CATALINA_BASE\"" \
|
||||||
|
-Dcatalina.home="\"$CATALINA_HOME\"" \
|
||||||
|
-Djava.io.tmpdir="\"$CATALINA_TMP\"" \
|
||||||
|
$CATALINA_MAIN
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
version )
|
||||||
|
"$JSVC" \
|
||||||
|
-java-home "$JAVA_HOME" \
|
||||||
|
-pidfile "$CATALINA_PID" \
|
||||||
|
-classpath "$CLASSPATH" \
|
||||||
|
-errfile "&2" \
|
||||||
|
-version \
|
||||||
|
-check \
|
||||||
|
$CATALINA_MAIN
|
||||||
|
if [ "$?" = 0 ]; then
|
||||||
|
"$JAVA_BIN" \
|
||||||
|
-classpath "$CATALINA_HOME/lib/catalina.jar" \
|
||||||
|
org.apache.catalina.util.ServerInfo
|
||||||
|
fi
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
echo "Unknown command: '$1'"
|
||||||
|
echo "Usage: $PROGRAM ( commands ... )"
|
||||||
|
echo "commands:"
|
||||||
|
echo " run Start Tomcat without detaching from console"
|
||||||
|
echo " start Start Tomcat"
|
||||||
|
echo " stop Stop Tomcat"
|
||||||
|
echo " version What version of commons daemon and Tomcat"
|
||||||
|
echo " are you running?"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
58
centos8_tomcat/apache-tomcat-7.0.108/bin/digest.bat
Normal file
58
centos8_tomcat/apache-tomcat-7.0.108/bin/digest.bat
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
@echo off
|
||||||
|
rem Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
rem contributor license agreements. See the NOTICE file distributed with
|
||||||
|
rem this work for additional information regarding copyright ownership.
|
||||||
|
rem The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
rem (the "License"); you may not use this file except in compliance with
|
||||||
|
rem the License. You may obtain a copy of the License at
|
||||||
|
rem
|
||||||
|
rem http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
rem
|
||||||
|
rem Unless required by applicable law or agreed to in writing, software
|
||||||
|
rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
rem See the License for the specific language governing permissions and
|
||||||
|
rem limitations under the License.
|
||||||
|
|
||||||
|
rem ---------------------------------------------------------------------------
|
||||||
|
rem Script to digest password using the algorithm specified
|
||||||
|
rem ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
setlocal
|
||||||
|
|
||||||
|
rem Guess CATALINA_HOME if not defined
|
||||||
|
set "CURRENT_DIR=%cd%"
|
||||||
|
if not "%CATALINA_HOME%" == "" goto gotHome
|
||||||
|
set "CATALINA_HOME=%CURRENT_DIR%"
|
||||||
|
if exist "%CATALINA_HOME%\bin\tool-wrapper.bat" goto okHome
|
||||||
|
cd ..
|
||||||
|
set "CATALINA_HOME=%cd%"
|
||||||
|
cd "%CURRENT_DIR%"
|
||||||
|
:gotHome
|
||||||
|
if exist "%CATALINA_HOME%\bin\tool-wrapper.bat" goto okHome
|
||||||
|
echo The CATALINA_HOME environment variable is not defined correctly
|
||||||
|
echo This environment variable is needed to run this program
|
||||||
|
goto end
|
||||||
|
:okHome
|
||||||
|
|
||||||
|
set "EXECUTABLE=%CATALINA_HOME%\bin\tool-wrapper.bat"
|
||||||
|
|
||||||
|
rem Check that target executable exists
|
||||||
|
if exist "%EXECUTABLE%" goto okExec
|
||||||
|
echo Cannot find "%EXECUTABLE%"
|
||||||
|
echo This file is needed to run this program
|
||||||
|
goto end
|
||||||
|
:okExec
|
||||||
|
|
||||||
|
rem Get remaining unshifted command line arguments and save them in the
|
||||||
|
set CMD_LINE_ARGS=
|
||||||
|
:setArgs
|
||||||
|
if ""%1""=="""" goto doneSetArgs
|
||||||
|
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
|
||||||
|
shift
|
||||||
|
goto setArgs
|
||||||
|
:doneSetArgs
|
||||||
|
|
||||||
|
call "%EXECUTABLE%" -server org.apache.catalina.realm.RealmBase %CMD_LINE_ARGS%
|
||||||
|
|
||||||
|
:end
|
||||||
60
centos8_tomcat/apache-tomcat-7.0.108/bin/digest.sh
Executable file
60
centos8_tomcat/apache-tomcat-7.0.108/bin/digest.sh
Executable file
@ -0,0 +1,60 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
# contributor license agreements. See the NOTICE file distributed with
|
||||||
|
# this work for additional information regarding copyright ownership.
|
||||||
|
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
# (the "License"); you may not use this file except in compliance with
|
||||||
|
# the License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Script to digest password using the algorithm specified
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Better OS/400 detection: see Bugzilla 31132
|
||||||
|
os400=false
|
||||||
|
case "`uname`" in
|
||||||
|
OS400*) os400=true;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# resolve links - $0 may be a softlink
|
||||||
|
PRG="$0"
|
||||||
|
|
||||||
|
while [ -h "$PRG" ] ; do
|
||||||
|
ls=`ls -ld "$PRG"`
|
||||||
|
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||||
|
if expr "$link" : '/.*' > /dev/null; then
|
||||||
|
PRG="$link"
|
||||||
|
else
|
||||||
|
PRG=`dirname "$PRG"`/"$link"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
PRGDIR=`dirname "$PRG"`
|
||||||
|
EXECUTABLE=tool-wrapper.sh
|
||||||
|
|
||||||
|
# Check that target executable exists
|
||||||
|
if $os400; then
|
||||||
|
# -x will Only work on the os400 if the files are:
|
||||||
|
# 1. owned by the user
|
||||||
|
# 2. owned by the PRIMARY group of the user
|
||||||
|
# this will not work if the user belongs in secondary groups
|
||||||
|
eval
|
||||||
|
else
|
||||||
|
if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
|
||||||
|
echo "Cannot find $PRGDIR/$EXECUTABLE"
|
||||||
|
echo "The file is absent or does not have execute permission"
|
||||||
|
echo "This file is needed to run this program"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec "$PRGDIR"/"$EXECUTABLE" -server org.apache.catalina.realm.RealmBase "$@"
|
||||||
94
centos8_tomcat/apache-tomcat-7.0.108/bin/setclasspath.bat
Normal file
94
centos8_tomcat/apache-tomcat-7.0.108/bin/setclasspath.bat
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
@echo off
|
||||||
|
rem Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
rem contributor license agreements. See the NOTICE file distributed with
|
||||||
|
rem this work for additional information regarding copyright ownership.
|
||||||
|
rem The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
rem (the "License"); you may not use this file except in compliance with
|
||||||
|
rem the License. You may obtain a copy of the License at
|
||||||
|
rem
|
||||||
|
rem http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
rem
|
||||||
|
rem Unless required by applicable law or agreed to in writing, software
|
||||||
|
rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
rem See the License for the specific language governing permissions and
|
||||||
|
rem limitations under the License.
|
||||||
|
|
||||||
|
rem ---------------------------------------------------------------------------
|
||||||
|
rem Set JAVA_HOME or JRE_HOME if not already set, ensure any provided settings
|
||||||
|
rem are valid and consistent with the selected start-up options and set up the
|
||||||
|
rem endorsed directory.
|
||||||
|
rem ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
rem Make sure prerequisite environment variables are set
|
||||||
|
|
||||||
|
rem In debug mode we need a real JDK (JAVA_HOME)
|
||||||
|
if ""%1"" == ""debug"" goto needJavaHome
|
||||||
|
|
||||||
|
rem Otherwise either JRE or JDK are fine
|
||||||
|
if not "%JRE_HOME%" == "" goto gotJreHome
|
||||||
|
if not "%JAVA_HOME%" == "" goto gotJavaHome
|
||||||
|
echo Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
|
||||||
|
echo At least one of these environment variable is needed to run this program
|
||||||
|
goto exit
|
||||||
|
|
||||||
|
:needJavaHome
|
||||||
|
rem Check if we have a usable JDK
|
||||||
|
if "%JAVA_HOME%" == "" goto noJavaHome
|
||||||
|
if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome
|
||||||
|
if not exist "%JAVA_HOME%\bin\jdb.exe" goto noJavaHome
|
||||||
|
if not exist "%JAVA_HOME%\bin\javac.exe" goto noJavaHome
|
||||||
|
set "JRE_HOME=%JAVA_HOME%"
|
||||||
|
goto okJava
|
||||||
|
|
||||||
|
:noJavaHome
|
||||||
|
echo The JAVA_HOME environment variable is not defined correctly.
|
||||||
|
echo It is needed to run this program in debug mode.
|
||||||
|
echo NB: JAVA_HOME should point to a JDK not a JRE.
|
||||||
|
goto exit
|
||||||
|
|
||||||
|
:gotJavaHome
|
||||||
|
rem No JRE given, use JAVA_HOME as JRE_HOME
|
||||||
|
set "JRE_HOME=%JAVA_HOME%"
|
||||||
|
|
||||||
|
:gotJreHome
|
||||||
|
rem Check if we have a usable JRE
|
||||||
|
if not exist "%JRE_HOME%\bin\java.exe" goto noJreHome
|
||||||
|
goto okJava
|
||||||
|
|
||||||
|
:noJreHome
|
||||||
|
rem Needed at least a JRE
|
||||||
|
echo The JRE_HOME environment variable is not defined correctly
|
||||||
|
echo This environment variable is needed to run this program
|
||||||
|
goto exit
|
||||||
|
|
||||||
|
:okJava
|
||||||
|
rem Don't override the endorsed dir if the user has set it previously
|
||||||
|
if not "%JAVA_ENDORSED_DIRS%" == "" goto gotEndorseddir
|
||||||
|
rem Java 9 no longer supports the java.endorsed.dirs
|
||||||
|
rem system property. Only try to use it if
|
||||||
|
rem CATALINA_HOME/endorsed exists.
|
||||||
|
if not exist "%CATALINA_HOME%\endorsed" goto gotEndorseddir
|
||||||
|
set "JAVA_ENDORSED_DIRS=%CATALINA_HOME%\endorsed"
|
||||||
|
:gotEndorseddir
|
||||||
|
|
||||||
|
rem Don't override _RUNJAVA if the user has set it previously
|
||||||
|
if not "%_RUNJAVA%" == "" goto gotRunJava
|
||||||
|
rem Set standard command for invoking Java.
|
||||||
|
rem Also note the quoting as JRE_HOME may contain spaces.
|
||||||
|
set _RUNJAVA="%JRE_HOME%\bin\java.exe"
|
||||||
|
:gotRunJava
|
||||||
|
|
||||||
|
rem Don't override _RUNJDB if the user has set it previously
|
||||||
|
rem Also note the quoting as JAVA_HOME may contain spaces.
|
||||||
|
if not "%_RUNJDB%" == "" goto gotRunJdb
|
||||||
|
set _RUNJDB="%JAVA_HOME%\bin\jdb.exe"
|
||||||
|
:gotRunJdb
|
||||||
|
|
||||||
|
goto end
|
||||||
|
|
||||||
|
:exit
|
||||||
|
exit /b 1
|
||||||
|
|
||||||
|
:end
|
||||||
|
exit /b 0
|
||||||
98
centos8_tomcat/apache-tomcat-7.0.108/bin/setclasspath.sh
Executable file
98
centos8_tomcat/apache-tomcat-7.0.108/bin/setclasspath.sh
Executable file
@ -0,0 +1,98 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
# contributor license agreements. See the NOTICE file distributed with
|
||||||
|
# this work for additional information regarding copyright ownership.
|
||||||
|
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
# (the "License"); you may not use this file except in compliance with
|
||||||
|
# the License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Set JAVA_HOME or JRE_HOME if not already set, ensure any provided settings
|
||||||
|
# are valid and consistent with the selected start-up options and set up the
|
||||||
|
# endorsed directory.
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Make sure prerequisite environment variables are set
|
||||||
|
if [ -z "$JAVA_HOME" ] && [ -z "$JRE_HOME" ]; then
|
||||||
|
if $darwin; then
|
||||||
|
# Bugzilla 54390
|
||||||
|
if [ -x '/usr/libexec/java_home' ] ; then
|
||||||
|
export JAVA_HOME=`/usr/libexec/java_home`
|
||||||
|
# Bugzilla 37284 (reviewed).
|
||||||
|
elif [ -d "/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home" ]; then
|
||||||
|
export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
JAVA_PATH=`which java 2>/dev/null`
|
||||||
|
if [ "x$JAVA_PATH" != "x" ]; then
|
||||||
|
JAVA_PATH=`dirname "$JAVA_PATH" 2>/dev/null`
|
||||||
|
JRE_HOME=`dirname "$JAVA_PATH" 2>/dev/null`
|
||||||
|
fi
|
||||||
|
if [ "x$JRE_HOME" = "x" ]; then
|
||||||
|
# XXX: Should we try other locations?
|
||||||
|
if [ -x /usr/bin/java ]; then
|
||||||
|
JRE_HOME=/usr
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ -z "$JAVA_HOME" ] && [ -z "$JRE_HOME" ]; then
|
||||||
|
echo "Neither the JAVA_HOME nor the JRE_HOME environment variable is defined"
|
||||||
|
echo "At least one of these environment variable is needed to run this program"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ -z "$JAVA_HOME" ] && [ "$1" = "debug" ]; then
|
||||||
|
echo "JAVA_HOME should point to a JDK in order to run in debug mode."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -z "$JRE_HOME" ]; then
|
||||||
|
JRE_HOME="$JAVA_HOME"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If we're running under jdb, we need a full jdk.
|
||||||
|
if [ "$1" = "debug" ] ; then
|
||||||
|
if [ "$os400" = "true" ]; then
|
||||||
|
if [ ! -x "$JAVA_HOME"/bin/java ] || [ ! -x "$JAVA_HOME"/bin/javac ]; then
|
||||||
|
echo "The JAVA_HOME environment variable is not defined correctly"
|
||||||
|
echo "This environment variable is needed to run this program"
|
||||||
|
echo "NB: JAVA_HOME should point to a JDK not a JRE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [ ! -x "$JAVA_HOME"/bin/java ] || [ ! -x "$JAVA_HOME"/bin/jdb ] || [ ! -x "$JAVA_HOME"/bin/javac ]; then
|
||||||
|
echo "The JAVA_HOME environment variable is not defined correctly"
|
||||||
|
echo "This environment variable is needed to run this program"
|
||||||
|
echo "NB: JAVA_HOME should point to a JDK not a JRE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Don't override the endorsed dir if the user has set it previously
|
||||||
|
if [ -z "$JAVA_ENDORSED_DIRS" ]; then
|
||||||
|
# Java 9 no longer supports the java.endorsed.dirs
|
||||||
|
# system property. Only try to use it if
|
||||||
|
# CATALINA_HOME/endorsed exists.
|
||||||
|
if [ -d "$CATALINA_HOME"/endorsed ]; then
|
||||||
|
JAVA_ENDORSED_DIRS="$CATALINA_HOME"/endorsed
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set standard commands for invoking Java, if not already set.
|
||||||
|
if [ -z "$_RUNJAVA" ]; then
|
||||||
|
_RUNJAVA="$JRE_HOME"/bin/java
|
||||||
|
fi
|
||||||
|
if [ "$os400" != "true" ]; then
|
||||||
|
if [ -z "$_RUNJDB" ]; then
|
||||||
|
_RUNJDB="$JAVA_HOME"/bin/jdb
|
||||||
|
fi
|
||||||
|
fi
|
||||||
58
centos8_tomcat/apache-tomcat-7.0.108/bin/shutdown.bat
Normal file
58
centos8_tomcat/apache-tomcat-7.0.108/bin/shutdown.bat
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
@echo off
|
||||||
|
rem Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
rem contributor license agreements. See the NOTICE file distributed with
|
||||||
|
rem this work for additional information regarding copyright ownership.
|
||||||
|
rem The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
rem (the "License"); you may not use this file except in compliance with
|
||||||
|
rem the License. You may obtain a copy of the License at
|
||||||
|
rem
|
||||||
|
rem http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
rem
|
||||||
|
rem Unless required by applicable law or agreed to in writing, software
|
||||||
|
rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
rem See the License for the specific language governing permissions and
|
||||||
|
rem limitations under the License.
|
||||||
|
|
||||||
|
rem ---------------------------------------------------------------------------
|
||||||
|
rem Stop script for the CATALINA Server
|
||||||
|
rem ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
setlocal
|
||||||
|
|
||||||
|
rem Guess CATALINA_HOME if not defined
|
||||||
|
set "CURRENT_DIR=%cd%"
|
||||||
|
if not "%CATALINA_HOME%" == "" goto gotHome
|
||||||
|
set "CATALINA_HOME=%CURRENT_DIR%"
|
||||||
|
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
|
||||||
|
cd ..
|
||||||
|
set "CATALINA_HOME=%cd%"
|
||||||
|
cd "%CURRENT_DIR%"
|
||||||
|
:gotHome
|
||||||
|
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
|
||||||
|
echo The CATALINA_HOME environment variable is not defined correctly
|
||||||
|
echo This environment variable is needed to run this program
|
||||||
|
goto end
|
||||||
|
:okHome
|
||||||
|
|
||||||
|
set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"
|
||||||
|
|
||||||
|
rem Check that target executable exists
|
||||||
|
if exist "%EXECUTABLE%" goto okExec
|
||||||
|
echo Cannot find "%EXECUTABLE%"
|
||||||
|
echo This file is needed to run this program
|
||||||
|
goto end
|
||||||
|
:okExec
|
||||||
|
|
||||||
|
rem Get remaining unshifted command line arguments and save them in the
|
||||||
|
set CMD_LINE_ARGS=
|
||||||
|
:setArgs
|
||||||
|
if ""%1""=="""" goto doneSetArgs
|
||||||
|
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
|
||||||
|
shift
|
||||||
|
goto setArgs
|
||||||
|
:doneSetArgs
|
||||||
|
|
||||||
|
call "%EXECUTABLE%" stop %CMD_LINE_ARGS%
|
||||||
|
|
||||||
|
:end
|
||||||
60
centos8_tomcat/apache-tomcat-7.0.108/bin/shutdown.sh
Executable file
60
centos8_tomcat/apache-tomcat-7.0.108/bin/shutdown.sh
Executable file
@ -0,0 +1,60 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
# contributor license agreements. See the NOTICE file distributed with
|
||||||
|
# this work for additional information regarding copyright ownership.
|
||||||
|
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
# (the "License"); you may not use this file except in compliance with
|
||||||
|
# the License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Stop script for the CATALINA Server
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Better OS/400 detection: see Bugzilla 31132
|
||||||
|
os400=false
|
||||||
|
case "`uname`" in
|
||||||
|
OS400*) os400=true;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# resolve links - $0 may be a softlink
|
||||||
|
PRG="$0"
|
||||||
|
|
||||||
|
while [ -h "$PRG" ] ; do
|
||||||
|
ls=`ls -ld "$PRG"`
|
||||||
|
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||||
|
if expr "$link" : '/.*' > /dev/null; then
|
||||||
|
PRG="$link"
|
||||||
|
else
|
||||||
|
PRG=`dirname "$PRG"`/"$link"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
PRGDIR=`dirname "$PRG"`
|
||||||
|
EXECUTABLE=catalina.sh
|
||||||
|
|
||||||
|
# Check that target executable exists
|
||||||
|
if $os400; then
|
||||||
|
# -x will Only work on the os400 if the files are:
|
||||||
|
# 1. owned by the user
|
||||||
|
# 2. owned by the PRIMARY group of the user
|
||||||
|
# this will not work if the user belongs in secondary groups
|
||||||
|
eval
|
||||||
|
else
|
||||||
|
if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
|
||||||
|
echo "Cannot find $PRGDIR/$EXECUTABLE"
|
||||||
|
echo "The file is absent or does not have execute permission"
|
||||||
|
echo "This file is needed to run this program"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec "$PRGDIR"/"$EXECUTABLE" stop "$@"
|
||||||
58
centos8_tomcat/apache-tomcat-7.0.108/bin/startup.bat
Normal file
58
centos8_tomcat/apache-tomcat-7.0.108/bin/startup.bat
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
@echo off
|
||||||
|
rem Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
rem contributor license agreements. See the NOTICE file distributed with
|
||||||
|
rem this work for additional information regarding copyright ownership.
|
||||||
|
rem The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
rem (the "License"); you may not use this file except in compliance with
|
||||||
|
rem the License. You may obtain a copy of the License at
|
||||||
|
rem
|
||||||
|
rem http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
rem
|
||||||
|
rem Unless required by applicable law or agreed to in writing, software
|
||||||
|
rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
rem See the License for the specific language governing permissions and
|
||||||
|
rem limitations under the License.
|
||||||
|
|
||||||
|
rem ---------------------------------------------------------------------------
|
||||||
|
rem Start script for the CATALINA Server
|
||||||
|
rem ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
setlocal
|
||||||
|
|
||||||
|
rem Guess CATALINA_HOME if not defined
|
||||||
|
set "CURRENT_DIR=%cd%"
|
||||||
|
if not "%CATALINA_HOME%" == "" goto gotHome
|
||||||
|
set "CATALINA_HOME=%CURRENT_DIR%"
|
||||||
|
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
|
||||||
|
cd ..
|
||||||
|
set "CATALINA_HOME=%cd%"
|
||||||
|
cd "%CURRENT_DIR%"
|
||||||
|
:gotHome
|
||||||
|
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
|
||||||
|
echo The CATALINA_HOME environment variable is not defined correctly
|
||||||
|
echo This environment variable is needed to run this program
|
||||||
|
goto end
|
||||||
|
:okHome
|
||||||
|
|
||||||
|
set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"
|
||||||
|
|
||||||
|
rem Check that target executable exists
|
||||||
|
if exist "%EXECUTABLE%" goto okExec
|
||||||
|
echo Cannot find "%EXECUTABLE%"
|
||||||
|
echo This file is needed to run this program
|
||||||
|
goto end
|
||||||
|
:okExec
|
||||||
|
|
||||||
|
rem Get remaining unshifted command line arguments and save them in the
|
||||||
|
set CMD_LINE_ARGS=
|
||||||
|
:setArgs
|
||||||
|
if ""%1""=="""" goto doneSetArgs
|
||||||
|
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
|
||||||
|
shift
|
||||||
|
goto setArgs
|
||||||
|
:doneSetArgs
|
||||||
|
|
||||||
|
call "%EXECUTABLE%" start %CMD_LINE_ARGS%
|
||||||
|
|
||||||
|
:end
|
||||||
60
centos8_tomcat/apache-tomcat-7.0.108/bin/startup.sh
Executable file
60
centos8_tomcat/apache-tomcat-7.0.108/bin/startup.sh
Executable file
@ -0,0 +1,60 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
# contributor license agreements. See the NOTICE file distributed with
|
||||||
|
# this work for additional information regarding copyright ownership.
|
||||||
|
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
# (the "License"); you may not use this file except in compliance with
|
||||||
|
# the License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Start Script for the CATALINA Server
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Better OS/400 detection: see Bugzilla 31132
|
||||||
|
os400=false
|
||||||
|
case "`uname`" in
|
||||||
|
OS400*) os400=true;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# resolve links - $0 may be a softlink
|
||||||
|
PRG="$0"
|
||||||
|
|
||||||
|
while [ -h "$PRG" ] ; do
|
||||||
|
ls=`ls -ld "$PRG"`
|
||||||
|
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||||
|
if expr "$link" : '/.*' > /dev/null; then
|
||||||
|
PRG="$link"
|
||||||
|
else
|
||||||
|
PRG=`dirname "$PRG"`/"$link"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
PRGDIR=`dirname "$PRG"`
|
||||||
|
EXECUTABLE=catalina.sh
|
||||||
|
|
||||||
|
# Check that target executable exists
|
||||||
|
if $os400; then
|
||||||
|
# -x will Only work on the os400 if the files are:
|
||||||
|
# 1. owned by the user
|
||||||
|
# 2. owned by the PRIMARY group of the user
|
||||||
|
# this will not work if the user belongs in secondary groups
|
||||||
|
eval
|
||||||
|
else
|
||||||
|
if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
|
||||||
|
echo "Cannot find $PRGDIR/$EXECUTABLE"
|
||||||
|
echo "The file is absent or does not have execute permission"
|
||||||
|
echo "This file is needed to run this program"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec "$PRGDIR"/"$EXECUTABLE" start "$@"
|
||||||
BIN
centos8_tomcat/apache-tomcat-7.0.108/bin/tomcat-juli.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/bin/tomcat-juli.jar
Normal file
Binary file not shown.
BIN
centos8_tomcat/apache-tomcat-7.0.108/bin/tomcat-native.tar.gz
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/bin/tomcat-native.tar.gz
Normal file
Binary file not shown.
110
centos8_tomcat/apache-tomcat-7.0.108/bin/tool-wrapper.bat
Normal file
110
centos8_tomcat/apache-tomcat-7.0.108/bin/tool-wrapper.bat
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
@echo off
|
||||||
|
rem Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
rem contributor license agreements. See the NOTICE file distributed with
|
||||||
|
rem this work for additional information regarding copyright ownership.
|
||||||
|
rem The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
rem (the "License"); you may not use this file except in compliance with
|
||||||
|
rem the License. You may obtain a copy of the License at
|
||||||
|
rem
|
||||||
|
rem http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
rem
|
||||||
|
rem Unless required by applicable law or agreed to in writing, software
|
||||||
|
rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
rem See the License for the specific language governing permissions and
|
||||||
|
rem limitations under the License.
|
||||||
|
|
||||||
|
rem ---------------------------------------------------------------------------
|
||||||
|
rem Wrapper script for command line tools
|
||||||
|
rem
|
||||||
|
rem Environment Variable Prerequisites
|
||||||
|
rem
|
||||||
|
rem CATALINA_HOME May point at your Catalina "build" directory.
|
||||||
|
rem
|
||||||
|
rem TOOL_OPTS (Optional) Java runtime options.
|
||||||
|
rem
|
||||||
|
rem JAVA_HOME Must point at your Java Development Kit installation.
|
||||||
|
rem Using JRE_HOME instead works as well.
|
||||||
|
rem
|
||||||
|
rem JRE_HOME Must point at your Java Runtime installation.
|
||||||
|
rem Defaults to JAVA_HOME if empty. If JRE_HOME and JAVA_HOME
|
||||||
|
rem are both set, JRE_HOME is used.
|
||||||
|
rem
|
||||||
|
rem JAVA_OPTS (Optional) Java runtime options.
|
||||||
|
rem
|
||||||
|
rem JAVA_ENDORSED_DIRS (Optional) Lists of of semi-colon separated directories
|
||||||
|
rem containing some jars in order to allow replacement of APIs
|
||||||
|
rem created outside of the JCP (i.e. DOM and SAX from W3C).
|
||||||
|
rem It can also be used to update the XML parser implementation.
|
||||||
|
rem This is only supported for Java <= 8.
|
||||||
|
rem Defaults to $CATALINA_HOME/endorsed.
|
||||||
|
rem ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
setlocal
|
||||||
|
|
||||||
|
rem Guess CATALINA_HOME if not defined
|
||||||
|
set "CURRENT_DIR=%cd%"
|
||||||
|
if not "%CATALINA_HOME%" == "" goto gotHome
|
||||||
|
set "CATALINA_HOME=%CURRENT_DIR%"
|
||||||
|
if exist "%CATALINA_HOME%\bin\tool-wrapper.bat" goto okHome
|
||||||
|
cd ..
|
||||||
|
set "CATALINA_HOME=%cd%"
|
||||||
|
cd "%CURRENT_DIR%"
|
||||||
|
:gotHome
|
||||||
|
if exist "%CATALINA_HOME%\bin\tool-wrapper.bat" goto okHome
|
||||||
|
echo The CATALINA_HOME environment variable is not defined correctly
|
||||||
|
echo This environment variable is needed to run this program
|
||||||
|
goto end
|
||||||
|
:okHome
|
||||||
|
|
||||||
|
rem Ensure that any user defined CLASSPATH variables are not used on startup,
|
||||||
|
rem but allow them to be specified in setenv.bat, in rare case when it is needed.
|
||||||
|
set CLASSPATH=
|
||||||
|
|
||||||
|
rem Get standard environment variables
|
||||||
|
if exist "%CATALINA_HOME%\bin\setenv.bat" call "%CATALINA_HOME%\bin\setenv.bat"
|
||||||
|
|
||||||
|
rem Get standard Java environment variables
|
||||||
|
if exist "%CATALINA_HOME%\bin\setclasspath.bat" goto okSetclasspath
|
||||||
|
echo Cannot find "%CATALINA_HOME%\bin\setclasspath.bat"
|
||||||
|
echo This file is needed to run this program
|
||||||
|
goto end
|
||||||
|
:okSetclasspath
|
||||||
|
call "%CATALINA_HOME%\bin\setclasspath.bat" %1
|
||||||
|
if errorlevel 1 goto end
|
||||||
|
|
||||||
|
rem Add on extra jar files to CLASSPATH
|
||||||
|
rem Note that there are no quotes as we do not want to introduce random
|
||||||
|
rem quotes into the CLASSPATH
|
||||||
|
if "%CLASSPATH%" == "" goto emptyClasspath
|
||||||
|
set "CLASSPATH=%CLASSPATH%;"
|
||||||
|
:emptyClasspath
|
||||||
|
set "CLASSPATH=%CLASSPATH%%CATALINA_HOME%\bin\bootstrap.jar;%CATALINA_HOME%\bin\tomcat-juli.jar;%CATALINA_HOME%\lib\servlet-api.jar;%CATALINA_HOME%\lib\tomcat-coyote.jar"
|
||||||
|
|
||||||
|
set JAVA_OPTS=%JAVA_OPTS% -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
|
||||||
|
|
||||||
|
rem Java 9 no longer supports the java.endorsed.dirs
|
||||||
|
rem system property. Only try to use it if
|
||||||
|
rem JAVA_ENDORSED_DIRS was explicitly set
|
||||||
|
rem or CATALINA_HOME/endorsed exists.
|
||||||
|
set ENDORSED_PROP=ignore.endorsed.dirs
|
||||||
|
if "%JAVA_ENDORSED_DIRS%" == "" goto noEndorsedVar
|
||||||
|
set ENDORSED_PROP=java.endorsed.dirs
|
||||||
|
goto doneEndorsed
|
||||||
|
:noEndorsedVar
|
||||||
|
if not exist "%CATALINA_HOME%\endorsed" goto doneEndorsed
|
||||||
|
set ENDORSED_PROP=java.endorsed.dirs
|
||||||
|
:doneEndorsed
|
||||||
|
|
||||||
|
rem Get remaining unshifted command line arguments and save them in the
|
||||||
|
set CMD_LINE_ARGS=
|
||||||
|
:setArgs
|
||||||
|
if ""%1""=="""" goto doneSetArgs
|
||||||
|
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
|
||||||
|
shift
|
||||||
|
goto setArgs
|
||||||
|
:doneSetArgs
|
||||||
|
|
||||||
|
%_RUNJAVA% %JAVA_OPTS% %TOOL_OPTS% -D%ENDORSED_PROP%="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.home="%CATALINA_HOME%" org.apache.catalina.startup.Tool %CMD_LINE_ARGS%
|
||||||
|
|
||||||
|
:end
|
||||||
153
centos8_tomcat/apache-tomcat-7.0.108/bin/tool-wrapper.sh
Executable file
153
centos8_tomcat/apache-tomcat-7.0.108/bin/tool-wrapper.sh
Executable file
@ -0,0 +1,153 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
# contributor license agreements. See the NOTICE file distributed with
|
||||||
|
# this work for additional information regarding copyright ownership.
|
||||||
|
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
# (the "License"); you may not use this file except in compliance with
|
||||||
|
# the License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Wrapper script for command line tools
|
||||||
|
#
|
||||||
|
# Environment Variable Prerequisites
|
||||||
|
#
|
||||||
|
# CATALINA_HOME May point at your Catalina "build" directory.
|
||||||
|
#
|
||||||
|
# TOOL_OPTS (Optional) Java runtime options.
|
||||||
|
#
|
||||||
|
# JAVA_HOME Must point at your Java Development Kit installation.
|
||||||
|
# Using JRE_HOME instead works as well.
|
||||||
|
#
|
||||||
|
# JRE_HOME Must point at your Java Runtime installation.
|
||||||
|
# Defaults to JAVA_HOME if empty. If JRE_HOME and JAVA_HOME
|
||||||
|
# are both set, JRE_HOME is used.
|
||||||
|
#
|
||||||
|
# JAVA_OPTS (Optional) Java runtime options.
|
||||||
|
#
|
||||||
|
# JAVA_ENDORSED_DIRS (Optional) Lists of of colon separated directories
|
||||||
|
# containing some jars in order to allow replacement of APIs
|
||||||
|
# created outside of the JCP (i.e. DOM and SAX from W3C).
|
||||||
|
# It can also be used to update the XML parser implementation.
|
||||||
|
# This is only supported for Java <= 8.
|
||||||
|
# Defaults to $CATALINA_HOME/endorsed.
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# OS specific support. $var _must_ be set to either true or false.
|
||||||
|
cygwin=false
|
||||||
|
darwin=false
|
||||||
|
os400=false
|
||||||
|
case "`uname`" in
|
||||||
|
CYGWIN*) cygwin=true;;
|
||||||
|
Darwin*) darwin=true;;
|
||||||
|
OS400*) os400=true;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# resolve links - $0 may be a softlink
|
||||||
|
PRG="$0"
|
||||||
|
|
||||||
|
while [ -h "$PRG" ]; do
|
||||||
|
ls=`ls -ld "$PRG"`
|
||||||
|
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||||
|
if expr "$link" : '/.*' > /dev/null; then
|
||||||
|
PRG="$link"
|
||||||
|
else
|
||||||
|
PRG=`dirname "$PRG"`/"$link"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Get standard environment variables
|
||||||
|
PRGDIR=`dirname "$PRG"`
|
||||||
|
|
||||||
|
# Only set CATALINA_HOME if not already set
|
||||||
|
[ -z "$CATALINA_HOME" ] && CATALINA_HOME=`cd "$PRGDIR/.." >/dev/null; pwd`
|
||||||
|
|
||||||
|
# Ensure that any user defined CLASSPATH variables are not used on startup,
|
||||||
|
# but allow them to be specified in setenv.sh, in rare case when it is needed.
|
||||||
|
CLASSPATH=
|
||||||
|
|
||||||
|
if [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then
|
||||||
|
. "$CATALINA_HOME/bin/setenv.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# For Cygwin, ensure paths are in UNIX format before anything is touched
|
||||||
|
if $cygwin; then
|
||||||
|
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
|
||||||
|
[ -n "$JRE_HOME" ] && JRE_HOME=`cygpath --unix "$JRE_HOME"`
|
||||||
|
[ -n "$CATALINA_HOME" ] && CATALINA_HOME=`cygpath --unix "$CATALINA_HOME"`
|
||||||
|
[ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
|
||||||
|
fi
|
||||||
|
|
||||||
|
# For OS400
|
||||||
|
if $os400; then
|
||||||
|
# Set job priority to standard for interactive (interactive - 6) by using
|
||||||
|
# the interactive priority - 6, the helper threads that respond to requests
|
||||||
|
# will be running at the same priority as interactive jobs.
|
||||||
|
COMMAND='chgjob job('$JOBNAME') runpty(6)'
|
||||||
|
system $COMMAND
|
||||||
|
|
||||||
|
# Enable multi threading
|
||||||
|
export QIBM_MULTI_THREADED=Y
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get standard Java environment variables
|
||||||
|
if $os400; then
|
||||||
|
# -r will Only work on the os400 if the files are:
|
||||||
|
# 1. owned by the user
|
||||||
|
# 2. owned by the PRIMARY group of the user
|
||||||
|
# this will not work if the user belongs in secondary groups
|
||||||
|
. "$CATALINA_HOME"/bin/setclasspath.sh
|
||||||
|
else
|
||||||
|
if [ -r "$CATALINA_HOME"/bin/setclasspath.sh ]; then
|
||||||
|
. "$CATALINA_HOME"/bin/setclasspath.sh
|
||||||
|
else
|
||||||
|
echo "Cannot find $CATALINA_HOME/bin/setclasspath.sh"
|
||||||
|
echo "This file is needed to run this program"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add on extra jar files to CLASSPATH
|
||||||
|
if [ ! -z "$CLASSPATH" ] ; then
|
||||||
|
CLASSPATH="$CLASSPATH":
|
||||||
|
fi
|
||||||
|
CLASSPATH="$CLASSPATH""$CATALINA_HOME"/bin/bootstrap.jar:"$CATALINA_HOME"/bin/tomcat-juli.jar:"$CATALINA_HOME"/lib/servlet-api.jar:"$CATALINA_HOME"/lib/tomcat-coyote.jar
|
||||||
|
|
||||||
|
# For Cygwin, switch paths to Windows format before running java
|
||||||
|
if $cygwin; then
|
||||||
|
JAVA_HOME=`cygpath --absolute --windows "$JAVA_HOME"`
|
||||||
|
JRE_HOME=`cygpath --absolute --windows "$JRE_HOME"`
|
||||||
|
CATALINA_HOME=`cygpath --absolute --windows "$CATALINA_HOME"`
|
||||||
|
CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
|
||||||
|
[ -n "$JAVA_ENDORSED_DIRS" ] && JAVA_ENDORSED_DIRS=`cygpath --path --windows "$JAVA_ENDORSED_DIRS"`
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Java 9 no longer supports the java.endorsed.dirs
|
||||||
|
# system property. Only try to use it if
|
||||||
|
# JAVA_ENDORSED_DIRS was explicitly set
|
||||||
|
# or CATALINA_HOME/endorsed exists.
|
||||||
|
ENDORSED_PROP=ignore.endorsed.dirs
|
||||||
|
if [ -n "$JAVA_ENDORSED_DIRS" ]; then
|
||||||
|
ENDORSED_PROP=java.endorsed.dirs
|
||||||
|
fi
|
||||||
|
if [ -d "$CATALINA_HOME/endorsed" ]; then
|
||||||
|
ENDORSED_PROP=java.endorsed.dirs
|
||||||
|
fi
|
||||||
|
|
||||||
|
JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
|
||||||
|
|
||||||
|
# ----- Execute The Requested Command -----------------------------------------
|
||||||
|
|
||||||
|
eval exec "\"$_RUNJAVA\"" "$JAVA_OPTS" "$TOOL_OPTS" \
|
||||||
|
-D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
|
||||||
|
-classpath "\"$CLASSPATH\"" \
|
||||||
|
-Dcatalina.home="\"$CATALINA_HOME\"" \
|
||||||
|
org.apache.catalina.startup.Tool "$@"
|
||||||
58
centos8_tomcat/apache-tomcat-7.0.108/bin/version.bat
Normal file
58
centos8_tomcat/apache-tomcat-7.0.108/bin/version.bat
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
@echo off
|
||||||
|
rem Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
rem contributor license agreements. See the NOTICE file distributed with
|
||||||
|
rem this work for additional information regarding copyright ownership.
|
||||||
|
rem The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
rem (the "License"); you may not use this file except in compliance with
|
||||||
|
rem the License. You may obtain a copy of the License at
|
||||||
|
rem
|
||||||
|
rem http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
rem
|
||||||
|
rem Unless required by applicable law or agreed to in writing, software
|
||||||
|
rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
rem See the License for the specific language governing permissions and
|
||||||
|
rem limitations under the License.
|
||||||
|
|
||||||
|
rem ---------------------------------------------------------------------------
|
||||||
|
rem Version script for the CATALINA Server
|
||||||
|
rem ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
setlocal
|
||||||
|
|
||||||
|
rem Guess CATALINA_HOME if not defined
|
||||||
|
set "CURRENT_DIR=%cd%"
|
||||||
|
if not "%CATALINA_HOME%" == "" goto gotHome
|
||||||
|
set "CATALINA_HOME=%CURRENT_DIR%"
|
||||||
|
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
|
||||||
|
cd ..
|
||||||
|
set "CATALINA_HOME=%cd%"
|
||||||
|
cd "%CURRENT_DIR%"
|
||||||
|
:gotHome
|
||||||
|
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
|
||||||
|
echo The CATALINA_HOME environment variable is not defined correctly
|
||||||
|
echo This environment variable is needed to run this program
|
||||||
|
goto end
|
||||||
|
:okHome
|
||||||
|
|
||||||
|
set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"
|
||||||
|
|
||||||
|
rem Check that target executable exists
|
||||||
|
if exist "%EXECUTABLE%" goto okExec
|
||||||
|
echo Cannot find "%EXECUTABLE%"
|
||||||
|
echo This file is needed to run this program
|
||||||
|
goto end
|
||||||
|
:okExec
|
||||||
|
|
||||||
|
rem Get remaining unshifted command line arguments and save them in the
|
||||||
|
set CMD_LINE_ARGS=
|
||||||
|
:setArgs
|
||||||
|
if ""%1""=="""" goto doneSetArgs
|
||||||
|
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
|
||||||
|
shift
|
||||||
|
goto setArgs
|
||||||
|
:doneSetArgs
|
||||||
|
|
||||||
|
call "%EXECUTABLE%" version %CMD_LINE_ARGS%
|
||||||
|
|
||||||
|
:end
|
||||||
60
centos8_tomcat/apache-tomcat-7.0.108/bin/version.sh
Executable file
60
centos8_tomcat/apache-tomcat-7.0.108/bin/version.sh
Executable file
@ -0,0 +1,60 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
# contributor license agreements. See the NOTICE file distributed with
|
||||||
|
# this work for additional information regarding copyright ownership.
|
||||||
|
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
# (the "License"); you may not use this file except in compliance with
|
||||||
|
# the License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Version Script for the CATALINA Server
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Better OS/400 detection: see Bugzilla 31132
|
||||||
|
os400=false
|
||||||
|
case "`uname`" in
|
||||||
|
OS400*) os400=true;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# resolve links - $0 may be a softlink
|
||||||
|
PRG="$0"
|
||||||
|
|
||||||
|
while [ -h "$PRG" ] ; do
|
||||||
|
ls=`ls -ld "$PRG"`
|
||||||
|
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||||
|
if expr "$link" : '/.*' > /dev/null; then
|
||||||
|
PRG="$link"
|
||||||
|
else
|
||||||
|
PRG=`dirname "$PRG"`/"$link"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
PRGDIR=`dirname "$PRG"`
|
||||||
|
EXECUTABLE=catalina.sh
|
||||||
|
|
||||||
|
# Check that target executable exists
|
||||||
|
if $os400; then
|
||||||
|
# -x will Only work on the os400 if the files are:
|
||||||
|
# 1. owned by the user
|
||||||
|
# 2. owned by the PRIMARY group of the user
|
||||||
|
# this will not work if the user belongs in secondary groups
|
||||||
|
eval
|
||||||
|
else
|
||||||
|
if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
|
||||||
|
echo "Cannot find $PRGDIR/$EXECUTABLE"
|
||||||
|
echo "The file is absent or does not have execute permission"
|
||||||
|
echo "This file is needed to run this program"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec "$PRGDIR"/"$EXECUTABLE" version "$@"
|
||||||
268
centos8_tomcat/apache-tomcat-7.0.108/conf/catalina.policy
Normal file
268
centos8_tomcat/apache-tomcat-7.0.108/conf/catalina.policy
Normal file
@ -0,0 +1,268 @@
|
|||||||
|
// Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
// contributor license agreements. See the NOTICE file distributed with
|
||||||
|
// this work for additional information regarding copyright ownership.
|
||||||
|
// The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
// (the "License"); you may not use this file except in compliance with
|
||||||
|
// the License. You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
// catalina.policy - Security Policy Permissions for Tomcat 7
|
||||||
|
//
|
||||||
|
// This file contains a default set of security policies to be enforced (by the
|
||||||
|
// JVM) when Catalina is executed with the "-security" option. In addition
|
||||||
|
// to the permissions granted here, the following additional permissions are
|
||||||
|
// granted to each web application:
|
||||||
|
//
|
||||||
|
// * Read access to the web application's document root directory
|
||||||
|
// * Read, write and delete access to the web application's working directory
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
|
|
||||||
|
// ========== SYSTEM CODE PERMISSIONS =========================================
|
||||||
|
|
||||||
|
|
||||||
|
// These permissions apply to javac
|
||||||
|
grant codeBase "file:${java.home}/lib/-" {
|
||||||
|
permission java.security.AllPermission;
|
||||||
|
};
|
||||||
|
|
||||||
|
// These permissions apply to all shared system extensions
|
||||||
|
grant codeBase "file:${java.home}/jre/lib/ext/-" {
|
||||||
|
permission java.security.AllPermission;
|
||||||
|
};
|
||||||
|
|
||||||
|
// These permissions apply to javac when ${java.home} points at $JAVA_HOME/jre
|
||||||
|
grant codeBase "file:${java.home}/../lib/-" {
|
||||||
|
permission java.security.AllPermission;
|
||||||
|
};
|
||||||
|
|
||||||
|
// These permissions apply to all shared system extensions when
|
||||||
|
// ${java.home} points at $JAVA_HOME/jre
|
||||||
|
grant codeBase "file:${java.home}/lib/ext/-" {
|
||||||
|
permission java.security.AllPermission;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// ========== CATALINA CODE PERMISSIONS =======================================
|
||||||
|
|
||||||
|
|
||||||
|
// These permissions apply to the daemon code
|
||||||
|
grant codeBase "file:${catalina.home}/bin/commons-daemon.jar" {
|
||||||
|
permission java.security.AllPermission;
|
||||||
|
};
|
||||||
|
|
||||||
|
// These permissions apply to the logging API
|
||||||
|
// Note: If tomcat-juli.jar is in ${catalina.base} and not in ${catalina.home},
|
||||||
|
// update this section accordingly.
|
||||||
|
// grant codeBase "file:${catalina.base}/bin/tomcat-juli.jar" {..}
|
||||||
|
grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar" {
|
||||||
|
permission java.io.FilePermission
|
||||||
|
"${java.home}${file.separator}lib${file.separator}logging.properties", "read";
|
||||||
|
|
||||||
|
permission java.io.FilePermission
|
||||||
|
"${catalina.base}${file.separator}conf${file.separator}logging.properties", "read";
|
||||||
|
permission java.io.FilePermission
|
||||||
|
"${catalina.base}${file.separator}logs", "read, write";
|
||||||
|
permission java.io.FilePermission
|
||||||
|
"${catalina.base}${file.separator}logs${file.separator}*", "read, write, delete";
|
||||||
|
|
||||||
|
permission java.lang.RuntimePermission "shutdownHooks";
|
||||||
|
permission java.lang.RuntimePermission "getClassLoader";
|
||||||
|
permission java.lang.RuntimePermission "setContextClassLoader";
|
||||||
|
|
||||||
|
permission java.util.logging.LoggingPermission "control";
|
||||||
|
|
||||||
|
permission java.util.PropertyPermission "java.util.logging.config.class", "read";
|
||||||
|
permission java.util.PropertyPermission "java.util.logging.config.file", "read";
|
||||||
|
permission java.util.PropertyPermission "org.apache.juli.ClassLoaderLogManager.debug", "read";
|
||||||
|
permission java.util.PropertyPermission "catalina.base", "read";
|
||||||
|
|
||||||
|
// Note: To enable per context logging configuration, permit read access to
|
||||||
|
// the appropriate file. Be sure that the logging configuration is
|
||||||
|
// secure before enabling such access.
|
||||||
|
// E.g. for the examples web application (uncomment and unwrap
|
||||||
|
// the following to be on a single line):
|
||||||
|
// permission java.io.FilePermission "${catalina.base}${file.separator}
|
||||||
|
// webapps${file.separator}examples${file.separator}WEB-INF
|
||||||
|
// ${file.separator}classes${file.separator}logging.properties", "read";
|
||||||
|
};
|
||||||
|
|
||||||
|
// These permissions apply to the server startup code
|
||||||
|
grant codeBase "file:${catalina.home}/bin/bootstrap.jar" {
|
||||||
|
permission java.security.AllPermission;
|
||||||
|
};
|
||||||
|
|
||||||
|
// These permissions apply to the servlet API classes
|
||||||
|
// and those that are shared across all class loaders
|
||||||
|
// located in the "lib" directory
|
||||||
|
grant codeBase "file:${catalina.home}/lib/-" {
|
||||||
|
permission java.security.AllPermission;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// If using a per instance lib directory, i.e. ${catalina.base}/lib,
|
||||||
|
// then the following permission will need to be uncommented
|
||||||
|
// grant codeBase "file:${catalina.base}/lib/-" {
|
||||||
|
// permission java.security.AllPermission;
|
||||||
|
// };
|
||||||
|
|
||||||
|
|
||||||
|
// ========== WEB APPLICATION PERMISSIONS =====================================
|
||||||
|
|
||||||
|
|
||||||
|
// These permissions are granted by default to all web applications
|
||||||
|
// In addition, a web application will be given a read FilePermission
|
||||||
|
// and JndiPermission for all files and directories in its document root.
|
||||||
|
grant {
|
||||||
|
// Required for JNDI lookup of named JDBC DataSource's and
|
||||||
|
// javamail named MimePart DataSource used to send mail
|
||||||
|
permission java.util.PropertyPermission "java.home", "read";
|
||||||
|
permission java.util.PropertyPermission "java.naming.*", "read";
|
||||||
|
permission java.util.PropertyPermission "javax.sql.*", "read";
|
||||||
|
|
||||||
|
// OS Specific properties to allow read access
|
||||||
|
permission java.util.PropertyPermission "os.name", "read";
|
||||||
|
permission java.util.PropertyPermission "os.version", "read";
|
||||||
|
permission java.util.PropertyPermission "os.arch", "read";
|
||||||
|
permission java.util.PropertyPermission "file.separator", "read";
|
||||||
|
permission java.util.PropertyPermission "path.separator", "read";
|
||||||
|
permission java.util.PropertyPermission "line.separator", "read";
|
||||||
|
|
||||||
|
// JVM properties to allow read access
|
||||||
|
permission java.util.PropertyPermission "java.version", "read";
|
||||||
|
permission java.util.PropertyPermission "java.vendor", "read";
|
||||||
|
permission java.util.PropertyPermission "java.vendor.url", "read";
|
||||||
|
permission java.util.PropertyPermission "java.class.version", "read";
|
||||||
|
permission java.util.PropertyPermission "java.specification.version", "read";
|
||||||
|
permission java.util.PropertyPermission "java.specification.vendor", "read";
|
||||||
|
permission java.util.PropertyPermission "java.specification.name", "read";
|
||||||
|
|
||||||
|
permission java.util.PropertyPermission "java.vm.specification.version", "read";
|
||||||
|
permission java.util.PropertyPermission "java.vm.specification.vendor", "read";
|
||||||
|
permission java.util.PropertyPermission "java.vm.specification.name", "read";
|
||||||
|
permission java.util.PropertyPermission "java.vm.version", "read";
|
||||||
|
permission java.util.PropertyPermission "java.vm.vendor", "read";
|
||||||
|
permission java.util.PropertyPermission "java.vm.name", "read";
|
||||||
|
|
||||||
|
// Required for OpenJMX
|
||||||
|
permission java.lang.RuntimePermission "getAttribute";
|
||||||
|
|
||||||
|
// Allow read of JAXP compliant XML parser debug
|
||||||
|
permission java.util.PropertyPermission "jaxp.debug", "read";
|
||||||
|
|
||||||
|
// All JSPs need to be able to read this package
|
||||||
|
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat";
|
||||||
|
|
||||||
|
// Precompiled JSPs need access to these packages.
|
||||||
|
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.el";
|
||||||
|
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.runtime";
|
||||||
|
permission java.lang.RuntimePermission
|
||||||
|
"accessClassInPackage.org.apache.jasper.runtime.*";
|
||||||
|
|
||||||
|
// Precompiled JSPs need access to these system properties.
|
||||||
|
|
||||||
|
// The following two permissions are no longer needed since Tomcat 7.0.88
|
||||||
|
// They are here for historic reasons. There is no harm in keeping them.
|
||||||
|
permission java.util.PropertyPermission
|
||||||
|
"org.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER", "read";
|
||||||
|
permission java.util.PropertyPermission
|
||||||
|
"org.apache.el.parser.COERCE_TO_ZERO", "read";
|
||||||
|
|
||||||
|
// The cookie code needs these.
|
||||||
|
permission java.util.PropertyPermission
|
||||||
|
"org.apache.catalina.STRICT_SERVLET_COMPLIANCE", "read";
|
||||||
|
permission java.util.PropertyPermission
|
||||||
|
"org.apache.tomcat.util.http.ServerCookie.STRICT_NAMING", "read";
|
||||||
|
permission java.util.PropertyPermission
|
||||||
|
"org.apache.tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR", "read";
|
||||||
|
|
||||||
|
// Applications using Comet need to be able to access this package
|
||||||
|
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.comet";
|
||||||
|
|
||||||
|
// Applications using the legacy WebSocket implementation need to be able to access this package
|
||||||
|
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.websocket";
|
||||||
|
|
||||||
|
// Applications using the JSR-356 WebSocket implementation need to be able to access these packages
|
||||||
|
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket";
|
||||||
|
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket.server";
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// The Manager application needs access to the following packages to support the
|
||||||
|
// session display functionality. It also requires the custom Tomcat
|
||||||
|
// DeployXmlPermission to enable the use of META-INF/context.xml
|
||||||
|
// These settings support the following configurations:
|
||||||
|
// - default CATALINA_HOME == CATALINA_BASE
|
||||||
|
// - CATALINA_HOME != CATALINA_BASE, per instance Manager in CATALINA_BASE
|
||||||
|
// - CATALINA_HOME != CATALINA_BASE, shared Manager in CATALINA_HOME
|
||||||
|
grant codeBase "file:${catalina.base}/webapps/manager/-" {
|
||||||
|
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina";
|
||||||
|
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.ha.session";
|
||||||
|
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager";
|
||||||
|
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager.util";
|
||||||
|
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.util";
|
||||||
|
permission org.apache.catalina.security.DeployXmlPermission "manager";
|
||||||
|
};
|
||||||
|
grant codeBase "file:${catalina.home}/webapps/manager/-" {
|
||||||
|
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina";
|
||||||
|
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.ha.session";
|
||||||
|
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager";
|
||||||
|
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager.util";
|
||||||
|
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.util";
|
||||||
|
permission org.apache.catalina.security.DeployXmlPermission "manager";
|
||||||
|
};
|
||||||
|
|
||||||
|
// The Host Manager application needs the custom Tomcat DeployXmlPermission to
|
||||||
|
// enable the use of META-INF/context.xml
|
||||||
|
// These settings support the following configurations:
|
||||||
|
// - default CATALINA_HOME == CATALINA_BASE
|
||||||
|
// - CATALINA_HOME != CATALINA_BASE, per instance Host Manager in CATALINA_BASE
|
||||||
|
// - CATALINA_HOME != CATALINA_BASE, shared Host Manager in CATALINA_HOME
|
||||||
|
grant codeBase "file:${catalina.base}/webapps/host-manager/-" {
|
||||||
|
permission org.apache.catalina.security.DeployXmlPermission "host-manager";
|
||||||
|
};
|
||||||
|
grant codeBase "file:${catalina.home}/webapps/host-manager/-" {
|
||||||
|
permission org.apache.catalina.security.DeployXmlPermission "host-manager";
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// You can assign additional permissions to particular web applications by
|
||||||
|
// adding additional "grant" entries here, based on the code base for that
|
||||||
|
// application, /WEB-INF/classes/, or /WEB-INF/lib/ jar files.
|
||||||
|
//
|
||||||
|
// Different permissions can be granted to JSP pages, classes loaded from
|
||||||
|
// the /WEB-INF/classes/ directory, all jar files in the /WEB-INF/lib/
|
||||||
|
// directory, or even to individual jar files in the /WEB-INF/lib/ directory.
|
||||||
|
//
|
||||||
|
// For instance, assume that the standard "examples" application
|
||||||
|
// included a JDBC driver that needed to establish a network connection to the
|
||||||
|
// corresponding database and used the scrape taglib to get the weather from
|
||||||
|
// the NOAA web server. You might create a "grant" entries like this:
|
||||||
|
//
|
||||||
|
// The permissions granted to the context root directory apply to JSP pages.
|
||||||
|
// grant codeBase "file:${catalina.base}/webapps/examples/-" {
|
||||||
|
// permission java.net.SocketPermission "dbhost.mycompany.com:5432", "connect";
|
||||||
|
// permission java.net.SocketPermission "*.noaa.gov:80", "connect";
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// The permissions granted to the context WEB-INF/classes directory
|
||||||
|
// grant codeBase "file:${catalina.base}/webapps/examples/WEB-INF/classes/-" {
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// The permission granted to your JDBC driver
|
||||||
|
// grant codeBase "jar:file:${catalina.base}/webapps/examples/WEB-INF/lib/driver.jar!/-" {
|
||||||
|
// permission java.net.SocketPermission "dbhost.mycompany.com:5432", "connect";
|
||||||
|
// };
|
||||||
|
// The permission granted to the scrape taglib
|
||||||
|
// grant codeBase "jar:file:${catalina.base}/webapps/examples/WEB-INF/lib/scrape.jar!/-" {
|
||||||
|
// permission java.net.SocketPermission "*.noaa.gov:80", "connect";
|
||||||
|
// };
|
||||||
|
|
||||||
195
centos8_tomcat/apache-tomcat-7.0.108/conf/catalina.properties
Normal file
195
centos8_tomcat/apache-tomcat-7.0.108/conf/catalina.properties
Normal file
@ -0,0 +1,195 @@
|
|||||||
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
# contributor license agreements. See the NOTICE file distributed with
|
||||||
|
# this work for additional information regarding copyright ownership.
|
||||||
|
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
# (the "License"); you may not use this file except in compliance with
|
||||||
|
# the License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.jasper.,\
|
||||||
|
org.apache.naming.resources.,org.apache.tomcat.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
package.definition=sun.,java.,org.apache.catalina.,org.apache.coyote.,\
|
||||||
|
org.apache.jasper.,org.apache.naming.,org.apache.tomcat.
|
||||||
|
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# 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.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/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=
|
||||||
|
|
||||||
|
#
|
||||||
|
# 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
|
||||||
|
# Please note that for single jars, e.g. bar.jar, you need the URL form
|
||||||
|
# starting with file:.
|
||||||
|
shared.loader=
|
||||||
|
|
||||||
|
# List of JAR files that should not be scanned using the JarScanner
|
||||||
|
# functionality. This is typically used to scan JARs for configuration
|
||||||
|
# information. JARs that do not contain such information may be excluded from
|
||||||
|
# the scan to speed up the scanning process. This is the default list. JARs on
|
||||||
|
# this list are excluded from all scans. Scan specific lists (to exclude JARs
|
||||||
|
# from individual scans) follow this. The list must be a comma separated list of
|
||||||
|
# JAR file names.
|
||||||
|
# The JARs listed below include:
|
||||||
|
# - Tomcat Bootstrap JARs
|
||||||
|
# - Tomcat API JARs
|
||||||
|
# - Catalina JARs
|
||||||
|
# - Jasper JARs
|
||||||
|
# - Tomcat JARs
|
||||||
|
# - Common non-Tomcat JARs
|
||||||
|
# - Test JARs (JUnit, Cobertura and dependencies)
|
||||||
|
tomcat.util.scan.DefaultJarScanner.jarsToSkip=\
|
||||||
|
annotations-api.jar,\
|
||||||
|
ant-junit*.jar,\
|
||||||
|
ant-launcher.jar,\
|
||||||
|
ant.jar,\
|
||||||
|
asm-*.jar,\
|
||||||
|
aspectj*.jar,\
|
||||||
|
bootstrap.jar,\
|
||||||
|
catalina-ant.jar,\
|
||||||
|
catalina-ha.jar,\
|
||||||
|
catalina-jmx-remote.jar,\
|
||||||
|
catalina-tribes.jar,\
|
||||||
|
catalina-ws.jar,\
|
||||||
|
catalina.jar,\
|
||||||
|
cobertura-*.jar,\
|
||||||
|
commons-beanutils*.jar,\
|
||||||
|
commons-codec*.jar,\
|
||||||
|
commons-collections*.jar,\
|
||||||
|
commons-daemon.jar,\
|
||||||
|
commons-dbcp*.jar,\
|
||||||
|
commons-digester*.jar,\
|
||||||
|
commons-fileupload*.jar,\
|
||||||
|
commons-httpclient*.jar,\
|
||||||
|
commons-io*.jar,\
|
||||||
|
commons-lang*.jar,\
|
||||||
|
commons-logging*.jar,\
|
||||||
|
commons-math*.jar,\
|
||||||
|
commons-pool*.jar,\
|
||||||
|
dom4j-*.jar,\
|
||||||
|
ecj-*.jar,\
|
||||||
|
el-api.jar,\
|
||||||
|
geronimo-spec-jaxrpc*.jar,\
|
||||||
|
h2*.jar,\
|
||||||
|
hamcrest-*.jar,\
|
||||||
|
hibernate*.jar,\
|
||||||
|
httpclient*.jar,\
|
||||||
|
icu4j-*.jar,\
|
||||||
|
jasper-el.jar,\
|
||||||
|
jasper.jar,\
|
||||||
|
jaxb-*.jar,\
|
||||||
|
jaxen-*.jar,\
|
||||||
|
jdom-*.jar,\
|
||||||
|
jetty-*.jar,\
|
||||||
|
jmx-tools.jar,\
|
||||||
|
jmx.jar,\
|
||||||
|
jsp-api.jar,\
|
||||||
|
jstl.jar,\
|
||||||
|
jta*.jar,\
|
||||||
|
junit-*.jar,\
|
||||||
|
junit.jar,\
|
||||||
|
log4j-1*.jar,\
|
||||||
|
log4j*.jar,\
|
||||||
|
mail*.jar,\
|
||||||
|
org.hamcrest.*.jar,\
|
||||||
|
oraclepki.jar,\
|
||||||
|
oro-*.jar,\
|
||||||
|
servlet-api-*.jar,\
|
||||||
|
servlet-api.jar,\
|
||||||
|
slf4j*.jar,\
|
||||||
|
taglibs-standard-spec-*.jar,\
|
||||||
|
tagsoup-*.jar,\
|
||||||
|
tomcat-api.jar,\
|
||||||
|
tomcat-coyote.jar,\
|
||||||
|
tomcat-dbcp.jar,\
|
||||||
|
tomcat-i18n-*.jar,\
|
||||||
|
tomcat-jdbc.jar,\
|
||||||
|
tomcat-jni.jar,\
|
||||||
|
tomcat-juli-adapters.jar,\
|
||||||
|
tomcat-juli.jar,\
|
||||||
|
tomcat-spdy.jar,\
|
||||||
|
tomcat-util.jar,\
|
||||||
|
tools.jar,\
|
||||||
|
websocket-api.jar,\
|
||||||
|
wsdl4j*.jar,\
|
||||||
|
xercesImpl.jar,\
|
||||||
|
xml-apis.jar,\
|
||||||
|
xmlParserAPIs-*.jar,\
|
||||||
|
xmlParserAPIs.jar,\
|
||||||
|
xom-*.jar
|
||||||
|
|
||||||
|
# Additional JARs (over and above the default JARs listed above) to skip when
|
||||||
|
# scanning for Servlet 3.0 pluggability features. These features include web
|
||||||
|
# fragments, annotations, SCIs and classes that match @HandlesTypes. The list
|
||||||
|
# must be a comma separated list of JAR file names.
|
||||||
|
org.apache.catalina.startup.ContextConfig.jarsToSkip=
|
||||||
|
|
||||||
|
# Additional JARs (over and above the default JARs listed above) to skip when
|
||||||
|
# scanning for TLDs. The list must be a comma separated list of JAR file names.
|
||||||
|
org.apache.catalina.startup.TldConfig.jarsToSkip=tomcat7-websocket.jar
|
||||||
|
|
||||||
|
#
|
||||||
|
# String cache configuration.
|
||||||
|
tomcat.util.buf.StringCache.byte.enabled=true
|
||||||
|
#tomcat.util.buf.StringCache.char.enabled=true
|
||||||
|
#tomcat.util.buf.StringCache.trainThreshold=500000
|
||||||
|
#tomcat.util.buf.StringCache.cacheSize=5000
|
||||||
|
|
||||||
|
# This system property is deprecated. Use the relaxedPathChars relaxedQueryChars
|
||||||
|
# attributes of the Connector instead. These attributes permit a wider range of
|
||||||
|
# characters to be configured as valid.
|
||||||
|
# Allow for changes to HTTP request validation
|
||||||
|
# WARNING: Using this option may expose the server to CVE-2016-6816
|
||||||
|
#tomcat.util.http.parser.HttpParser.requestTargetAllow=|
|
||||||
46
centos8_tomcat/apache-tomcat-7.0.108/conf/context.xml
Normal file
46
centos8_tomcat/apache-tomcat-7.0.108/conf/context.xml
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
<!-- The contents of this file will be loaded for each web application -->
|
||||||
|
<Context reloadable="true">
|
||||||
|
|
||||||
|
<!-- Default set of monitored resources -->
|
||||||
|
<WatchedResource>WEB-INF/web.xml</WatchedResource>
|
||||||
|
|
||||||
|
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
|
||||||
|
<!--
|
||||||
|
<Manager pathname="" />
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Uncomment this to enable Comet connection tacking (provides events
|
||||||
|
on session expiration as well as webapp lifecycle) -->
|
||||||
|
<!--
|
||||||
|
<Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
|
||||||
|
-->
|
||||||
|
<Resource
|
||||||
|
auth="Container"
|
||||||
|
name="jdbc/mysql"
|
||||||
|
type="javax.sql.DataSource"
|
||||||
|
maxTotal="8"
|
||||||
|
maxWaitMillis="-1"
|
||||||
|
driverClassName="com.mysql.jdbc.Driver"
|
||||||
|
factory="org.apache.commons.dbcp2.BasicDataSourceFactory"
|
||||||
|
url="jdbc:mysql://mariadb:3306/primeidc"
|
||||||
|
username="idc"
|
||||||
|
password="12clqkidc@!"
|
||||||
|
/>
|
||||||
|
</Context>
|
||||||
69
centos8_tomcat/apache-tomcat-7.0.108/conf/logging.properties
Normal file
69
centos8_tomcat/apache-tomcat-7.0.108/conf/logging.properties
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
# contributor license agreements. See the NOTICE file distributed with
|
||||||
|
# this work for additional information regarding copyright ownership.
|
||||||
|
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
# (the "License"); you may not use this file except in compliance with
|
||||||
|
# the License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
|
||||||
|
|
||||||
|
.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
|
||||||
|
|
||||||
|
############################################################
|
||||||
|
# Handler specific properties.
|
||||||
|
# Describes specific configuration info for Handlers.
|
||||||
|
############################################################
|
||||||
|
|
||||||
|
1catalina.org.apache.juli.FileHandler.level = FINE
|
||||||
|
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
|
||||||
|
1catalina.org.apache.juli.FileHandler.prefix = catalina.
|
||||||
|
1catalina.org.apache.juli.FileHandler.encoding = UTF-8
|
||||||
|
|
||||||
|
2localhost.org.apache.juli.FileHandler.level = FINE
|
||||||
|
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
|
||||||
|
2localhost.org.apache.juli.FileHandler.prefix = localhost.
|
||||||
|
2localhost.org.apache.juli.FileHandler.encoding = UTF-8
|
||||||
|
|
||||||
|
3manager.org.apache.juli.FileHandler.level = FINE
|
||||||
|
3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
|
||||||
|
3manager.org.apache.juli.FileHandler.prefix = manager.
|
||||||
|
3manager.org.apache.juli.FileHandler.encoding = UTF-8
|
||||||
|
|
||||||
|
4host-manager.org.apache.juli.FileHandler.level = FINE
|
||||||
|
4host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
|
||||||
|
4host-manager.org.apache.juli.FileHandler.prefix = host-manager.
|
||||||
|
4host-manager.org.apache.juli.FileHandler.encoding = UTF-8
|
||||||
|
|
||||||
|
java.util.logging.ConsoleHandler.level = FINE
|
||||||
|
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
|
||||||
|
java.util.logging.ConsoleHandler.encoding = UTF-8
|
||||||
|
|
||||||
|
|
||||||
|
############################################################
|
||||||
|
# Facility specific properties.
|
||||||
|
# Provides extra control for each logger.
|
||||||
|
############################################################
|
||||||
|
|
||||||
|
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
|
||||||
|
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler
|
||||||
|
|
||||||
|
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
|
||||||
|
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.FileHandler
|
||||||
|
|
||||||
|
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO
|
||||||
|
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.FileHandler
|
||||||
|
|
||||||
|
# For example, set the org.apache.catalina.util.LifecycleBase logger to log
|
||||||
|
# each component that extends LifecycleBase changing state:
|
||||||
|
#org.apache.catalina.util.LifecycleBase.level = FINE
|
||||||
|
|
||||||
|
# To see debug messages in TldLocationsCache, uncomment the following line:
|
||||||
|
#org.apache.jasper.compiler.TldLocationsCache.level = FINE
|
||||||
149
centos8_tomcat/apache-tomcat-7.0.108/conf/server.xml
Normal file
149
centos8_tomcat/apache-tomcat-7.0.108/conf/server.xml
Normal file
@ -0,0 +1,149 @@
|
|||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
<!-- Note: A "Server" is not itself a "Container", so you may not
|
||||||
|
define subcomponents such as "Valves" at this level.
|
||||||
|
Documentation at /docs/config/server.html
|
||||||
|
-->
|
||||||
|
<Server port="8005" shutdown="SHUTDOWN">
|
||||||
|
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
|
||||||
|
<!-- Security listener. Documentation at /docs/config/listeners.html
|
||||||
|
<Listener className="org.apache.catalina.security.SecurityListener" />
|
||||||
|
-->
|
||||||
|
<!--APR library loader. Documentation at /docs/apr.html -->
|
||||||
|
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
|
||||||
|
<!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->
|
||||||
|
<Listener className="org.apache.catalina.core.JasperListener" />
|
||||||
|
<!-- Prevent memory leaks due to use of particular java/javax APIs-->
|
||||||
|
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
|
||||||
|
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
|
||||||
|
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
|
||||||
|
|
||||||
|
<!-- Global JNDI resources
|
||||||
|
Documentation at /docs/jndi-resources-howto.html
|
||||||
|
-->
|
||||||
|
<GlobalNamingResources>
|
||||||
|
<!-- Editable user database that can also be used by
|
||||||
|
UserDatabaseRealm to authenticate users
|
||||||
|
-->
|
||||||
|
<Resource name="UserDatabase" auth="Container"
|
||||||
|
type="org.apache.catalina.UserDatabase"
|
||||||
|
description="User database that can be updated and saved"
|
||||||
|
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
|
||||||
|
pathname="conf/tomcat-users.xml" />
|
||||||
|
</GlobalNamingResources>
|
||||||
|
|
||||||
|
<!-- A "Service" is a collection of one or more "Connectors" that share
|
||||||
|
a single "Container" Note: A "Service" is not itself a "Container",
|
||||||
|
so you may not define subcomponents such as "Valves" at this level.
|
||||||
|
Documentation at /docs/config/service.html
|
||||||
|
-->
|
||||||
|
<Service name="Catalina">
|
||||||
|
|
||||||
|
<!--The connectors can use a shared executor, you can define one or more named thread pools-->
|
||||||
|
<!--
|
||||||
|
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
|
||||||
|
maxThreads="150" minSpareThreads="4"/>
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- A "Connector" represents an endpoint by which requests are received
|
||||||
|
and responses are returned. Documentation at :
|
||||||
|
Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
|
||||||
|
Java AJP Connector: /docs/config/ajp.html
|
||||||
|
APR (HTTP/AJP) Connector: /docs/apr.html
|
||||||
|
Define a non-SSL HTTP/1.1 Connector on port 8080
|
||||||
|
-->
|
||||||
|
<Connector executor="tomcatThreadPool"
|
||||||
|
port="8080" protocol="HTTP/1.1"
|
||||||
|
connectionTimeout="20000"
|
||||||
|
redirectPort="8443"
|
||||||
|
URIEncoding="UTF-8" />
|
||||||
|
<!-- A "Connector" using the shared thread pool-->
|
||||||
|
<!--
|
||||||
|
<Connector executor="tomcatThreadPool"
|
||||||
|
port="8080" protocol="HTTP/1.1"
|
||||||
|
connectionTimeout="20000"
|
||||||
|
redirectPort="8443" />
|
||||||
|
-->
|
||||||
|
<!-- Define an SSL HTTP/1.1 Connector on port 8443
|
||||||
|
This connector uses the BIO implementation that requires the JSSE
|
||||||
|
style configuration. When using the APR/native implementation, the
|
||||||
|
OpenSSL style configuration is required as described in the APR/native
|
||||||
|
documentation -->
|
||||||
|
|
||||||
|
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
|
||||||
|
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
|
||||||
|
keystoreType="PKCS12"
|
||||||
|
keystoreFile="conf/tomcat_ssl.pfx"
|
||||||
|
keystorePass="12clqkidc@!"
|
||||||
|
clientAuth="false" sslProtocol="TLS" />
|
||||||
|
<!-- Define an AJP 1.3 Connector on port 8009 -->
|
||||||
|
<Connector protocol="AJP/1.3"
|
||||||
|
address="0.0.0.0"
|
||||||
|
port="8009"
|
||||||
|
redirectPort="8443" />
|
||||||
|
|
||||||
|
<!-- An Engine represents the entry point (within Catalina) that processes
|
||||||
|
every request. The Engine implementation for Tomcat stand alone
|
||||||
|
analyzes the HTTP headers included with the request, and passes them
|
||||||
|
on to the appropriate Host (virtual host).
|
||||||
|
Documentation at /docs/config/engine.html -->
|
||||||
|
|
||||||
|
<!-- You should set jvmRoute to support load-balancing via AJP ie :
|
||||||
|
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
|
||||||
|
-->
|
||||||
|
<Engine name="Catalina" defaultHost="localhost">
|
||||||
|
|
||||||
|
<!--For clustering, please take a look at documentation at:
|
||||||
|
/docs/cluster-howto.html (simple how to)
|
||||||
|
/docs/config/cluster.html (reference documentation) -->
|
||||||
|
<!--
|
||||||
|
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Use the LockOutRealm to prevent attempts to guess user passwords
|
||||||
|
via a brute-force attack -->
|
||||||
|
<Realm className="org.apache.catalina.realm.LockOutRealm">
|
||||||
|
<!-- This Realm uses the UserDatabase configured in the global JNDI
|
||||||
|
resources under the key "UserDatabase". Any edits
|
||||||
|
that are performed against this UserDatabase are immediately
|
||||||
|
available for use by the Realm. -->
|
||||||
|
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
|
||||||
|
resourceName="UserDatabase"/>
|
||||||
|
</Realm>
|
||||||
|
|
||||||
|
<Host name="localhost" appBase="webapps"
|
||||||
|
unpackWARs="true" autoDeploy="true">
|
||||||
|
|
||||||
|
<!-- SingleSignOn valve, share authentication between web applications
|
||||||
|
Documentation at: /docs/config/valve.html -->
|
||||||
|
<!--
|
||||||
|
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Access log processes all example.
|
||||||
|
Documentation at: /docs/config/valve.html
|
||||||
|
Note: The pattern used is equivalent to using pattern="common" -->
|
||||||
|
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
|
||||||
|
prefix="localhost_access_log." suffix=".txt"
|
||||||
|
pattern="%h %l %u %t "%r" %s %b" />
|
||||||
|
|
||||||
|
</Host>
|
||||||
|
</Engine>
|
||||||
|
</Service>
|
||||||
|
</Server>
|
||||||
46
centos8_tomcat/apache-tomcat-7.0.108/conf/tomcat-users.xml
Normal file
46
centos8_tomcat/apache-tomcat-7.0.108/conf/tomcat-users.xml
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
<tomcat-users xmlns="http://tomcat.apache.org/xml"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
|
||||||
|
version="1.0">
|
||||||
|
<!--
|
||||||
|
NOTE: By default, no user is included in the "manager-gui" role required
|
||||||
|
to operate the "/manager/html" web application. If you wish to use this app,
|
||||||
|
you must define such a user - the username and password are arbitrary. It is
|
||||||
|
strongly recommended that you do NOT use one of the users in the commented out
|
||||||
|
section below since they are intended for use with the examples web
|
||||||
|
application.
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
NOTE: The sample user and role entries below are intended for use with the
|
||||||
|
examples web application. They are wrapped in a comment and thus are ignored
|
||||||
|
when reading this file. If you wish to configure these users for use with the
|
||||||
|
examples web application, do not forget to remove the <!.. ..> that surrounds
|
||||||
|
them. You will also need to set the passwords to something appropriate.
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
<role rolename="tomcat"/>
|
||||||
|
<role rolename="role1"/>
|
||||||
|
<user username="tomcat" password="<must-be-changed>" roles="tomcat"/>
|
||||||
|
<user username="both" password="<must-be-changed>" roles="tomcat,role1"/>
|
||||||
|
<user username="role1" password="<must-be-changed>" roles="role1"/>
|
||||||
|
-->
|
||||||
|
<role rolename="webadmin"/>
|
||||||
|
<user username="idcjp" password="12clqkidc@!" roles="webadmin"/>
|
||||||
|
</tomcat-users>
|
||||||
59
centos8_tomcat/apache-tomcat-7.0.108/conf/tomcat-users.xsd
Normal file
59
centos8_tomcat/apache-tomcat-7.0.108/conf/tomcat-users.xsd
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
<xs:schema xmlns="http://www.w3.org/2001/XMLSchema"
|
||||||
|
targetNamespace="http://tomcat.apache.org/xml"
|
||||||
|
xmlns:users="http://tomcat.apache.org/xml"
|
||||||
|
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||||
|
elementFormDefault="qualified"
|
||||||
|
attributeFormDefault="unqualified"
|
||||||
|
version="1.0">
|
||||||
|
<xs:element name="tomcat-users">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="role" minOccurs="0" maxOccurs="unbounded">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:attribute name="rolename" use="required" type="users:entityname" />
|
||||||
|
<xs:attribute name="description" type="xs:string" />
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="group" minOccurs="0" maxOccurs="unbounded">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:attribute name="groupname" use="required" type="users:entityname" />
|
||||||
|
<xs:attribute name="description" type="xs:string" />
|
||||||
|
<xs:attribute name="roles" type="xs:string" />
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="user" minOccurs="0" maxOccurs="unbounded">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:attribute name="username" use="required" type="users:entityname" />
|
||||||
|
<xs:attribute name="fullname" type="xs:string" />
|
||||||
|
<xs:attribute name="password" type="xs:string" />
|
||||||
|
<xs:attribute name="roles" type="xs:string" />
|
||||||
|
<xs:attribute name="groups" type="xs:string" />
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:attribute name="version" type="xs:string" />
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:simpleType name="entityname">
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="1"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
</xs:schema>
|
||||||
BIN
centos8_tomcat/apache-tomcat-7.0.108/conf/tomcat_ssl.pfx
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/conf/tomcat_ssl.pfx
Normal file
Binary file not shown.
4712
centos8_tomcat/apache-tomcat-7.0.108/conf/web.xml
Normal file
4712
centos8_tomcat/apache-tomcat-7.0.108/conf/web.xml
Normal file
File diff suppressed because it is too large
Load Diff
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/annotations-api.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/annotations-api.jar
Normal file
Binary file not shown.
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/catalina-ant.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/catalina-ant.jar
Normal file
Binary file not shown.
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/catalina-ha.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/catalina-ha.jar
Normal file
Binary file not shown.
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/catalina-tribes.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/catalina-tribes.jar
Normal file
Binary file not shown.
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/catalina.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/catalina.jar
Normal file
Binary file not shown.
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/commons-dbcp2-2.8.0.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/commons-dbcp2-2.8.0.jar
Normal file
Binary file not shown.
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/commons-logging-1.2.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/commons-logging-1.2.jar
Normal file
Binary file not shown.
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/commons-pool2-2.9.0.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/commons-pool2-2.9.0.jar
Normal file
Binary file not shown.
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/ecj-4.4.2.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/ecj-4.4.2.jar
Normal file
Binary file not shown.
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/el-api.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/el-api.jar
Normal file
Binary file not shown.
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/jasper-el.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/jasper-el.jar
Normal file
Binary file not shown.
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/jasper.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/jasper.jar
Normal file
Binary file not shown.
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/jsp-api.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/jsp-api.jar
Normal file
Binary file not shown.
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/servlet-api.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/servlet-api.jar
Normal file
Binary file not shown.
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/tomcat-api.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/tomcat-api.jar
Normal file
Binary file not shown.
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/tomcat-coyote.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/tomcat-coyote.jar
Normal file
Binary file not shown.
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/tomcat-dbcp.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/tomcat-dbcp.jar
Normal file
Binary file not shown.
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/tomcat-i18n-de.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/tomcat-i18n-de.jar
Normal file
Binary file not shown.
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/tomcat-i18n-es.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/tomcat-i18n-es.jar
Normal file
Binary file not shown.
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/tomcat-i18n-fr.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/tomcat-i18n-fr.jar
Normal file
Binary file not shown.
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/tomcat-i18n-ja.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/tomcat-i18n-ja.jar
Normal file
Binary file not shown.
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/tomcat-i18n-ko.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/tomcat-i18n-ko.jar
Normal file
Binary file not shown.
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/tomcat-i18n-ru.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/tomcat-i18n-ru.jar
Normal file
Binary file not shown.
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/tomcat-i18n-zh-CN.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/tomcat-i18n-zh-CN.jar
Normal file
Binary file not shown.
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/tomcat-jdbc.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/tomcat-jdbc.jar
Normal file
Binary file not shown.
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/tomcat-util.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/tomcat-util.jar
Normal file
Binary file not shown.
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/tomcat7-websocket.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/tomcat7-websocket.jar
Normal file
Binary file not shown.
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/websocket-api.jar
Normal file
BIN
centos8_tomcat/apache-tomcat-7.0.108/lib/websocket-api.jar
Normal file
Binary file not shown.
522
centos8_tomcat/apache-tomcat-7.0.108/temp/docs/BUILDING.txt
Normal file
522
centos8_tomcat/apache-tomcat-7.0.108/temp/docs/BUILDING.txt
Normal file
@ -0,0 +1,522 @@
|
|||||||
|
================================================================================
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
================================================================================
|
||||||
|
|
||||||
|
====================================================
|
||||||
|
Building The Apache Tomcat 7.0 Servlet/JSP Container
|
||||||
|
====================================================
|
||||||
|
|
||||||
|
This subproject contains the source code for Tomcat 7.0, a container that
|
||||||
|
implements the Servlet 3.0, JSP 2.2, EL 2.2 and WebSocket 1.1 specifications
|
||||||
|
from the Java Community Process <https://www.jcp.org/>.
|
||||||
|
|
||||||
|
Note: If you just need to run Apache Tomcat, it is not necessary to build
|
||||||
|
it. You may simply download a binary distribution. It is cross-platform.
|
||||||
|
Read RUNNING.txt for the instruction on how to run it.
|
||||||
|
|
||||||
|
In order to build a binary distribution version of Apache Tomcat from a
|
||||||
|
source distribution, do the following:
|
||||||
|
|
||||||
|
|
||||||
|
(1) Download and Install a Java 6 and Java 7 Development Kit
|
||||||
|
|
||||||
|
1. If the JDKs are already installed, skip to (2).
|
||||||
|
|
||||||
|
2. Download a version 6 of the Java Development Kit (JDK) release (use the
|
||||||
|
latest update available for your chosen version) from
|
||||||
|
|
||||||
|
http://www.oracle.com/technetwork/java/javase/downloads/index.html
|
||||||
|
or from another JDK vendor.
|
||||||
|
|
||||||
|
Note regarding later versions of Java:
|
||||||
|
|
||||||
|
As documented elsewhere, one of the components in Apache Tomcat includes
|
||||||
|
a private copy of the Apache Commons DBCP 1.x library. The source code
|
||||||
|
for this library is downloaded, processed by the build script
|
||||||
|
(renaming the packages) and compiled.
|
||||||
|
|
||||||
|
Due to changes in JDBC interfaces implemented by the library between
|
||||||
|
versions of Java SE specification, the library has to target specific
|
||||||
|
version of Java and can be compiled only with the JDK version
|
||||||
|
implementing this version of specification. Therefore, the build Tomcat
|
||||||
|
build process must be executed with a Java 6 JDK.
|
||||||
|
|
||||||
|
See Apache Commons DBCP 1.x project web site for more details on
|
||||||
|
available versions of the library and its requirements,
|
||||||
|
|
||||||
|
https://commons.apache.org/dbcp/
|
||||||
|
|
||||||
|
If you really want to use a later version of JDK to build Tomcat,
|
||||||
|
several workarounds are possible. One of them is to skip building
|
||||||
|
the component (tomcat-dbcp.jar).
|
||||||
|
|
||||||
|
3. Install the Java 6 JDK according to the instructions included with the
|
||||||
|
release.
|
||||||
|
|
||||||
|
4. Set an environment variable JAVA_HOME to the pathname of the directory
|
||||||
|
into which you installed the JDK release.
|
||||||
|
|
||||||
|
5. Download a version 7 of the Java Development Kit (JDK) release (use the
|
||||||
|
latest update available for your chosen version) from
|
||||||
|
|
||||||
|
http://www.oracle.com/technetwork/java/javase/downloads/index.html
|
||||||
|
or from another JDK vendor.
|
||||||
|
|
||||||
|
6. Install the Java 7 JDK according to the instructions included with the
|
||||||
|
release.
|
||||||
|
|
||||||
|
* NOTE: The Java 7 JDK is only required if you wish to build Tomcat with
|
||||||
|
JSR-356 (Java WebSocket 1.1) support.
|
||||||
|
|
||||||
|
|
||||||
|
(2) Install Apache Ant version 1.9.1 or later on your computer
|
||||||
|
|
||||||
|
1. If Apache Ant version 1.9.1 or later is already installed on your computer, skip to (3).
|
||||||
|
|
||||||
|
2. Download a binary distribution of Ant from:
|
||||||
|
|
||||||
|
https://ant.apache.org/bindownload.cgi
|
||||||
|
|
||||||
|
3. Unpack the binary distribution into a convenient location so that the
|
||||||
|
Ant release resides in its own directory (conventionally named
|
||||||
|
"apache-ant-[version]").
|
||||||
|
|
||||||
|
For the purposes of the remainder of this document, the symbolic name
|
||||||
|
"${ant.home}" is used to refer to the full pathname of the release
|
||||||
|
directory.
|
||||||
|
|
||||||
|
4. Create an ANT_HOME environment variable to point the directory
|
||||||
|
${ant.home}.
|
||||||
|
|
||||||
|
5. Modify the PATH environment variable to include the directory
|
||||||
|
${ant.home}/bin in its list. This makes the "ant" command line script
|
||||||
|
available, which will be used to actually perform the build.
|
||||||
|
|
||||||
|
|
||||||
|
(3) Building Tomcat 7.0
|
||||||
|
|
||||||
|
(3.1) Checkout or obtain the source code for Tomcat 7.0
|
||||||
|
|
||||||
|
Clone the source using git, then checkout a specific major branch or
|
||||||
|
master for the latest code development, or download and unpack a source
|
||||||
|
package.
|
||||||
|
|
||||||
|
* Tomcat GitHub repository URL:
|
||||||
|
|
||||||
|
https://github.com/apache/tomcat
|
||||||
|
|
||||||
|
* Source packages can be downloaded from:
|
||||||
|
|
||||||
|
https://tomcat.apache.org/download-70.cgi
|
||||||
|
|
||||||
|
The location where the source has been placed will be further referred as
|
||||||
|
${tomcat.source}.
|
||||||
|
|
||||||
|
The Tomcat local build process does not modify line-endings. The svn repository
|
||||||
|
is configured so that all files will be checked out with the line-ending
|
||||||
|
appropriate for the current platform. When using a source package you should
|
||||||
|
ensure that you use the source package that has the appropriate line-ending
|
||||||
|
for your platform:
|
||||||
|
|
||||||
|
zip -> CRLF
|
||||||
|
tar.gz -> LF
|
||||||
|
|
||||||
|
Note that the release build process does modify line-endings to ensure that
|
||||||
|
each release package has the appropriate line-endings.
|
||||||
|
|
||||||
|
(3.2) Building
|
||||||
|
|
||||||
|
1. The build is controlled by creating a ${tomcat.source}/build.properties
|
||||||
|
file.
|
||||||
|
|
||||||
|
It is recommended to always create the file, because of unfortunate
|
||||||
|
default value of base.path property. You may start with the following
|
||||||
|
content for the file:
|
||||||
|
|
||||||
|
# ----- Default Base Path for Dependent Packages -----
|
||||||
|
# Replace this path with the directory path where dependencies binaries
|
||||||
|
# should be downloaded
|
||||||
|
base.path=/home/me/some-place-to-download-to
|
||||||
|
|
||||||
|
2. Configure base.path property by adding it to the
|
||||||
|
${tomcat.source}/build.properties file.
|
||||||
|
|
||||||
|
The base.path property specifies the place where Tomcat dependencies
|
||||||
|
required by the build are downloaded. It is recommended to place this
|
||||||
|
directory outside of the source tree, so that you do not waste your
|
||||||
|
time re-downloading the libraries.
|
||||||
|
|
||||||
|
* NOTE: The default value of the base.path property configures the build script
|
||||||
|
to download the libraries required to build Tomcat to the
|
||||||
|
${user.home}/tomcat-build-libs directory.
|
||||||
|
|
||||||
|
* NOTE: Users accessing the Internet through a proxy must use the properties
|
||||||
|
file to indicate to Ant the proxy configuration.
|
||||||
|
|
||||||
|
The following properties should be added to the ${tomcat.source}/build.properties
|
||||||
|
file.
|
||||||
|
|
||||||
|
proxy.use=on
|
||||||
|
proxy.host=proxy.domain
|
||||||
|
proxy.port=8080
|
||||||
|
proxy.user=username
|
||||||
|
proxy.password=password
|
||||||
|
|
||||||
|
See Apache Ant documentation for the <setproxy> task for details.
|
||||||
|
|
||||||
|
* NOTE: Users wishing to build Tomcat with JSR-356 (Java WebSocket 1.1) support
|
||||||
|
must also set the java.7.home build property to the location of the Java 7 JDK
|
||||||
|
installation.
|
||||||
|
|
||||||
|
3. Go to the sources directory and run Ant:
|
||||||
|
|
||||||
|
cd ${tomcat.source}
|
||||||
|
ant
|
||||||
|
|
||||||
|
This will execute the "deploy" target in build.xml.
|
||||||
|
|
||||||
|
Once the build has completed successfully, a usable Tomcat installation
|
||||||
|
will have been produced in the ${tomcat.source}/output/build directory,
|
||||||
|
and can be started and stopped with the usual scripts.
|
||||||
|
|
||||||
|
Note that the build includes Tomcat documentation, which can be found
|
||||||
|
in the output/build/webapps/docs directory.
|
||||||
|
|
||||||
|
The path of the output directory can be controlled by specifying the
|
||||||
|
"tomcat.output" property in the build.properties file.
|
||||||
|
|
||||||
|
* NOTE: Do not run the build as the root user. Building and running Tomcat
|
||||||
|
does not require root privileges.
|
||||||
|
|
||||||
|
|
||||||
|
(4) Updating sources and rebuilding
|
||||||
|
|
||||||
|
It is recommended that you regularly update the downloaded Tomcat 7.0
|
||||||
|
sources using your SVN client.
|
||||||
|
|
||||||
|
For a quick rebuild of only modified code you can use:
|
||||||
|
|
||||||
|
cd ${tomcat.source}
|
||||||
|
ant
|
||||||
|
|
||||||
|
|
||||||
|
(5) Special builds
|
||||||
|
|
||||||
|
There are several targets in Tomcat build files that are useful to be
|
||||||
|
called separately. They build components that you may want to build
|
||||||
|
quickly, or ones that are included in the full release and are not built
|
||||||
|
during the default "deploy" build.
|
||||||
|
|
||||||
|
(5.1) Building documentation
|
||||||
|
|
||||||
|
The documentation web application is built during the default "deploy"
|
||||||
|
build.
|
||||||
|
|
||||||
|
It can be built quickly by using the following commands:
|
||||||
|
|
||||||
|
cd ${tomcat.source}
|
||||||
|
ant build-docs
|
||||||
|
|
||||||
|
The output of this command will be found in the following directory:
|
||||||
|
|
||||||
|
output/build/webapps/docs
|
||||||
|
|
||||||
|
|
||||||
|
The API documentation (Javadoc) is built during a "release" build. It is
|
||||||
|
easy to build it separately by using the following commands:
|
||||||
|
|
||||||
|
cd ${tomcat.source}
|
||||||
|
ant javadoc
|
||||||
|
|
||||||
|
The output of this command will be found in the following directories:
|
||||||
|
|
||||||
|
output/dist/webapps/docs/api
|
||||||
|
output/dist/webapps/docs/elapi
|
||||||
|
output/dist/webapps/docs/jspapi
|
||||||
|
output/dist/webapps/docs/servletapi
|
||||||
|
|
||||||
|
|
||||||
|
(5.2) Building the extras (commons-logging, webservices etc.)
|
||||||
|
|
||||||
|
These components are documented on the "Additional Components"
|
||||||
|
(extras.html) page of documentation. They are built during a "release"
|
||||||
|
build.
|
||||||
|
|
||||||
|
You can build them by using the following commands:
|
||||||
|
|
||||||
|
cd ${tomcat.source}
|
||||||
|
ant extras
|
||||||
|
|
||||||
|
(5.3) Building the embedded packages
|
||||||
|
|
||||||
|
These are built during a "release" build.
|
||||||
|
|
||||||
|
You can build them by using the following commands:
|
||||||
|
|
||||||
|
cd ${tomcat.source}
|
||||||
|
ant embed
|
||||||
|
|
||||||
|
|
||||||
|
(6) Building a full release (as provided via the ASF download pages)
|
||||||
|
|
||||||
|
A full release includes the Windows installer which requires a Windows
|
||||||
|
environment to be available to create it. If not building in a Windows
|
||||||
|
environment, the build scripts assume that Wine is available. If this is not
|
||||||
|
the case, the skip.installer property may be set to skip the creation of the
|
||||||
|
Windows installer.
|
||||||
|
|
||||||
|
1. Configure GPG, if needed
|
||||||
|
|
||||||
|
If the released artifacts have to be cryptographically signed with a
|
||||||
|
PGP signature, like the official ASF releases are, the following
|
||||||
|
property can be added to the build.properties file:
|
||||||
|
|
||||||
|
# Location of GPG executable (used only for releases)
|
||||||
|
gpg.exec=/path/to/gpg
|
||||||
|
|
||||||
|
You do not need it if you do not plan to sign the release.
|
||||||
|
|
||||||
|
If "gpg.exec" property does not point to an existing file, it will be
|
||||||
|
ignored and this feature will be disabled.
|
||||||
|
|
||||||
|
You will be prompted for the GPG passphrase when the release build
|
||||||
|
starts, unless "gpg.passphrase" property is set.
|
||||||
|
|
||||||
|
2. Build the release:
|
||||||
|
|
||||||
|
cd ${tomcat.source}
|
||||||
|
ant release
|
||||||
|
|
||||||
|
|
||||||
|
(7) Tests
|
||||||
|
|
||||||
|
(7.1) Running Tomcat tests
|
||||||
|
|
||||||
|
Tomcat includes a number of junit tests. The tests are not run when a
|
||||||
|
release is built. There is separate command to run them.
|
||||||
|
|
||||||
|
To run the testsuite use the following command:
|
||||||
|
|
||||||
|
cd ${tomcat.source}
|
||||||
|
ant test
|
||||||
|
|
||||||
|
It is advisable to redirect output of the above command to a file for later
|
||||||
|
inspection.
|
||||||
|
|
||||||
|
The JUnit reports generated by the tests will be written to the following
|
||||||
|
directory:
|
||||||
|
|
||||||
|
output/build/logs
|
||||||
|
|
||||||
|
By default the testsuite is run three times to test 3 different
|
||||||
|
implementations of Tomcat connectors: BIO, NIO and APR. (If you are not
|
||||||
|
familiar with Tomcat connectors, see config/http.html in documentation for
|
||||||
|
details).
|
||||||
|
|
||||||
|
The 3 runs are enabled and disabled individually by the following
|
||||||
|
properties, which all are "true" by default:
|
||||||
|
|
||||||
|
execute.test.bio=true
|
||||||
|
execute.test.nio=true
|
||||||
|
execute.test.apr=true
|
||||||
|
|
||||||
|
The APR connector can be tested only if Tomcat-Native library binaries are
|
||||||
|
found by the testsuite. The "test.apr.loc" property specifies the directory
|
||||||
|
where the library binaries are located.
|
||||||
|
|
||||||
|
By default the "test.apr.loc" property specifies the following location:
|
||||||
|
|
||||||
|
output/build/bin/native/
|
||||||
|
|
||||||
|
If you are on Windows and want to test the APR connector you can put the
|
||||||
|
tcnative-1.dll file into ${tomcat.source}/bin/native/ and it will be copied
|
||||||
|
into the above directory when the build runs.
|
||||||
|
|
||||||
|
* NOTE: If you configured the build to use a Java 7 JDK (if the
|
||||||
|
"java.7.home" property has been defined) the tests will be run with Java 7.
|
||||||
|
|
||||||
|
The version of Java that was actually used to run the tests is reported by
|
||||||
|
"org.apache.catalina.util.TestServerInfo" test class.
|
||||||
|
|
||||||
|
|
||||||
|
(7.2) Running a single test
|
||||||
|
|
||||||
|
It is possible to run a single JUnit test class by adding the "test.entry"
|
||||||
|
property to the build.properties file. The property specifies the name of
|
||||||
|
the test class.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
test.entry=org.apache.catalina.util.TestServerInfo
|
||||||
|
|
||||||
|
It is possible to further limit such run to a number of selected test
|
||||||
|
methods by adding "test.entry.methods" property. The property specifies a
|
||||||
|
comma-separated list of test case methods.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
test.entry=org.apache.el.lang.TestELArithmetic
|
||||||
|
test.entry.methods=testMultiply01,testMultiply02
|
||||||
|
|
||||||
|
|
||||||
|
(7.3) Running a set of tests
|
||||||
|
|
||||||
|
It is possible to run a set of JUnit test classes by adding the "test.name"
|
||||||
|
property to the build.properties file. The property specifies an Ant
|
||||||
|
includes pattern for the fileset of test class files to run.
|
||||||
|
|
||||||
|
The default value is "**/Test*.java", so all test classes are being
|
||||||
|
executed (with few exceptions - see build.xml for several exclude patterns).
|
||||||
|
|
||||||
|
You can include multiple patterns by concatenating them with a comma (",")
|
||||||
|
as the separator.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
test.name=**/TestSsl.java,**/TestWebSocketFrameClientSSL.java
|
||||||
|
|
||||||
|
You can exclude specific JUnit test classes by adding the "test.exclude"
|
||||||
|
property to the build.properties file. The property specifies an Ant
|
||||||
|
excludes pattern for the fileset of test class files to exclude form the run.
|
||||||
|
The default value is empty, so no classes are excluded. The syntax is the same
|
||||||
|
as for the property "test.name".
|
||||||
|
|
||||||
|
|
||||||
|
(7.4) Other configuration options
|
||||||
|
|
||||||
|
1. It is possible to configure the directory where JUnit reports are
|
||||||
|
written to. It is configured by "test.reports" property. The default
|
||||||
|
value is
|
||||||
|
|
||||||
|
output/build/logs
|
||||||
|
|
||||||
|
2. It is possible to enable generation of access log file when the tests
|
||||||
|
are run. This is off by default and can be enabled by the following
|
||||||
|
property:
|
||||||
|
|
||||||
|
test.accesslog=true
|
||||||
|
|
||||||
|
The "access_log.<date>" file will be written to the same directory as
|
||||||
|
JUnit reports,
|
||||||
|
|
||||||
|
output/build/logs
|
||||||
|
|
||||||
|
3. The testsuite respects logging configuration as configured by
|
||||||
|
${tomcat.source}/conf/logging.properties
|
||||||
|
|
||||||
|
The log files will be written to the temporary directory used by the
|
||||||
|
tests,
|
||||||
|
|
||||||
|
output/test-tmp/logs
|
||||||
|
|
||||||
|
4. It is possible to configure formatter used by JUnit reports.
|
||||||
|
Configuration properties are "junit.formatter.type",
|
||||||
|
"junit.formatter.extension" and "junit.formatter.usefile".
|
||||||
|
|
||||||
|
For example the following property disables generation of separate report
|
||||||
|
files:
|
||||||
|
|
||||||
|
junit.formatter.usefile=false
|
||||||
|
|
||||||
|
5. Optional support is provided for the Cobertura code coverage tool.
|
||||||
|
|
||||||
|
* NOTE: Cobertura is licensed under GPL v2 with parts of it being under
|
||||||
|
Apache License v1.1. See http://cobertura.sf.net for details. Using it
|
||||||
|
during Tomcat build is optional and is off by default.
|
||||||
|
|
||||||
|
Cobertura can be enabled using the following property:
|
||||||
|
|
||||||
|
test.cobertura=true
|
||||||
|
|
||||||
|
The report files by default are written to
|
||||||
|
|
||||||
|
output/coverage
|
||||||
|
|
||||||
|
6. The performance tests are written to run reasonably powerful machines (such
|
||||||
|
as a developer may use day to day) assuming no other resource hungry
|
||||||
|
processes are running.
|
||||||
|
|
||||||
|
These assumptions are not always true (e.g. on CI systems running in a
|
||||||
|
virtual machine) so the performance tests may be disabled by using the
|
||||||
|
following property:
|
||||||
|
|
||||||
|
test.excludePerformance=true
|
||||||
|
|
||||||
|
7. Some tests include checks that the access log valve entries are as expected.
|
||||||
|
These checks include timings. On slower / loaded systems these checks will
|
||||||
|
often fail. The checks may be relaxed by using the following property:
|
||||||
|
|
||||||
|
test.relaxTiming=true
|
||||||
|
|
||||||
|
8. It is known that some platforms (e.g. OSX El Capitan) require IPv4 to
|
||||||
|
be the default for the multicast tests to work. This is configured by
|
||||||
|
the following property:
|
||||||
|
|
||||||
|
java.net.preferIPv4Stack=true
|
||||||
|
|
||||||
|
9. It is possible to control whether the output of the tests is displayed
|
||||||
|
on the console or not. By default it is displayed and can be disabled
|
||||||
|
by the following property:
|
||||||
|
|
||||||
|
test.verbose=true
|
||||||
|
|
||||||
|
(8) Source code checks
|
||||||
|
|
||||||
|
(8.1) Checkstyle
|
||||||
|
|
||||||
|
* NOTE: Checkstyle is licensed under LGPL. Using Checkstyle during Tomcat
|
||||||
|
build is optional and is off by default.
|
||||||
|
|
||||||
|
See http://checkstyle.sourceforge.net/ for more information.
|
||||||
|
|
||||||
|
Tomcat comes with a Checkstyle configuration that tests its source code
|
||||||
|
for certain conventions, like presence of the license header.
|
||||||
|
|
||||||
|
To enable Checkstyle, add the following property to build.properties file:
|
||||||
|
|
||||||
|
execute.validate=true
|
||||||
|
|
||||||
|
Once Checkstyle is enabled, the check will be performed automatically
|
||||||
|
during the build. The check is run before compilation of the source code.
|
||||||
|
|
||||||
|
To speed-up repeated runs of this check, a cache is configured. The cache
|
||||||
|
is located in the following directory:
|
||||||
|
|
||||||
|
output/res/checkstyle
|
||||||
|
|
||||||
|
It is possible to run the check separately by calling the "validate"
|
||||||
|
target. The command is:
|
||||||
|
|
||||||
|
cd ${tomcat.source}
|
||||||
|
ant -Dexecute.validate=true validate
|
||||||
|
|
||||||
|
|
||||||
|
(8.2) End-of-line conventions check
|
||||||
|
|
||||||
|
You usually would not need to run this check. You can skip this section.
|
||||||
|
|
||||||
|
Apache Tomcat project has convention that all of its textual source files,
|
||||||
|
stored in the Git repository, use Unix style LF line endings.
|
||||||
|
|
||||||
|
This test is used by developers to check that the source code adheres to
|
||||||
|
this convention. It verifies that the ends of lines in textual files are
|
||||||
|
appropriate. The idea is to run this check regularly and notify developers
|
||||||
|
when an inconsistency is detected.
|
||||||
|
|
||||||
|
The command to run this test is:
|
||||||
|
|
||||||
|
cd ${tomcat.source}
|
||||||
|
ant validate-eoln
|
||||||
237
centos8_tomcat/apache-tomcat-7.0.108/temp/docs/RELEASE-NOTES.txt
Normal file
237
centos8_tomcat/apache-tomcat-7.0.108/temp/docs/RELEASE-NOTES.txt
Normal file
@ -0,0 +1,237 @@
|
|||||||
|
================================================================================
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
================================================================================
|
||||||
|
|
||||||
|
|
||||||
|
Apache Tomcat Version 7.0.108
|
||||||
|
Release Notes
|
||||||
|
|
||||||
|
|
||||||
|
=========
|
||||||
|
CONTENTS:
|
||||||
|
=========
|
||||||
|
|
||||||
|
* Dependency Changes
|
||||||
|
* API Stability
|
||||||
|
* JNI Based Applications
|
||||||
|
* Bundled APIs
|
||||||
|
* Web application reloading and static fields in shared libraries
|
||||||
|
* Tomcat on Linux
|
||||||
|
* Enabling SSI and CGI Support
|
||||||
|
* Security manager URLs
|
||||||
|
* Symlinking static resources
|
||||||
|
* Viewing the Tomcat Change Log
|
||||||
|
* Cryptographic software notice
|
||||||
|
* When all else fails
|
||||||
|
|
||||||
|
|
||||||
|
===================
|
||||||
|
Dependency Changes:
|
||||||
|
===================
|
||||||
|
Tomcat 7.0 is designed to run on Java 6 and later.
|
||||||
|
|
||||||
|
In addition, Tomcat 7.0 uses the Eclipse JDT Java compiler for
|
||||||
|
compiling JSP pages. This means you no longer need to have the complete
|
||||||
|
Java Development Kit (JDK) to run Tomcat, but a Java Runtime Environment
|
||||||
|
(JRE) is sufficient. The Eclipse JDT Java compiler is bundled with the
|
||||||
|
binary Tomcat distributions. Tomcat can also be configured to use the
|
||||||
|
compiler from the JDK to compile JSPs, or any other Java compiler supported
|
||||||
|
by Apache Ant.
|
||||||
|
|
||||||
|
|
||||||
|
==============
|
||||||
|
API Stability:
|
||||||
|
==============
|
||||||
|
The public interfaces for the following classes are fixed and will not be
|
||||||
|
changed at all during the remaining lifetime of the 7.x series:
|
||||||
|
- javax/**/*
|
||||||
|
|
||||||
|
The public interfaces for the following classes may be added to in order to
|
||||||
|
resolve bugs and/or add new features. No existing interface will be removed or
|
||||||
|
changed although it may be deprecated.
|
||||||
|
- org/apache/catalina/*
|
||||||
|
- org/apache/catalina/comet/*
|
||||||
|
|
||||||
|
Note: As Tomcat 7 matures, the above list will be added to. The list is not
|
||||||
|
considered complete at this time.
|
||||||
|
|
||||||
|
The remaining classes are considered part of the Tomcat internals and may change
|
||||||
|
without notice between point releases.
|
||||||
|
|
||||||
|
|
||||||
|
=======================
|
||||||
|
JNI Based Applications:
|
||||||
|
=======================
|
||||||
|
Applications that require native libraries must ensure that the libraries have
|
||||||
|
been loaded prior to use. Typically, this is done with a call like:
|
||||||
|
|
||||||
|
static {
|
||||||
|
System.loadLibrary("path-to-library-file");
|
||||||
|
}
|
||||||
|
|
||||||
|
in some class. However, the application must also ensure that the library is
|
||||||
|
not loaded more than once. If the above code were placed in a class inside
|
||||||
|
the web application (i.e. under /WEB-INF/classes or /WEB-INF/lib), and the
|
||||||
|
application were reloaded, the loadLibrary() call would be attempted a second
|
||||||
|
time.
|
||||||
|
|
||||||
|
To avoid this problem, place classes that load native libraries outside of the
|
||||||
|
web application, and ensure that the loadLibrary() call is executed only once
|
||||||
|
during the lifetime of a particular JVM.
|
||||||
|
|
||||||
|
|
||||||
|
=============
|
||||||
|
Bundled APIs:
|
||||||
|
=============
|
||||||
|
A standard installation of Tomcat 7.0 makes all of the following APIs available
|
||||||
|
for use by web applications (by placing them in "lib"):
|
||||||
|
* annotations-api.jar (Common Annotations 1.1 package)
|
||||||
|
* catalina.jar (Tomcat Catalina implementation)
|
||||||
|
* catalina-ant.jar (Tomcat Catalina Ant tasks)
|
||||||
|
* catalina-ha.jar (High availability package)
|
||||||
|
* catalina-tribes.jar (Group communication)
|
||||||
|
* ecj-4.4.2.jar (Eclipse JDT Java compiler)
|
||||||
|
* el-api.jar (EL 2.2 API)
|
||||||
|
* jasper.jar (Jasper 2 Compiler and Runtime)
|
||||||
|
* jasper-el.jar (Jasper 2 EL implementation)
|
||||||
|
* jsp-api.jar (JSP 2.2 API)
|
||||||
|
* servlet-api.jar (Servlet 3.0 API)
|
||||||
|
* tomcat7-websocket.jar (WebSocket 1.1 implementation)
|
||||||
|
* tomcat-api.jar (Interfaces shared by Catalina and Jasper)
|
||||||
|
* tomcat-coyote.jar (Tomcat connectors and utility classes)
|
||||||
|
* tomcat-dbcp.jar (package renamed database connection pool based on Commons DBCP 1.x)
|
||||||
|
* tomcat-jdbc.jar (Tomcat's database connection pooling solution)
|
||||||
|
* tomcat-util.jar (Various utilities)
|
||||||
|
* websocket-api.jar (WebSocket 1.1 API)
|
||||||
|
|
||||||
|
You can make additional APIs available to all of your web applications by
|
||||||
|
putting unpacked classes into a "classes" directory (not created by default),
|
||||||
|
or by placing them in JAR files in the "lib" directory.
|
||||||
|
|
||||||
|
To override the XML parser implementation or interfaces, use the Endorsed
|
||||||
|
Standards Override mechanism of the JVM. The default configuration defines
|
||||||
|
JARs located in "$CATALINA_HOME/endorsed" as endorsed. This mechanism is
|
||||||
|
no longer supported with Java 9.
|
||||||
|
|
||||||
|
When running on Java 6, the Common Annotations 1.0 implementation provided
|
||||||
|
by the JRE will be used. To use the Common Annotations 1.1 provided by
|
||||||
|
Tomcat, use the Endorsed Standards Override mechanism of the JVM. The
|
||||||
|
default configuration defines JARs located in "$CATALINA_HOME/endorsed" as
|
||||||
|
endorsed.
|
||||||
|
|
||||||
|
|
||||||
|
================================================================
|
||||||
|
Web application reloading and static fields in shared libraries:
|
||||||
|
================================================================
|
||||||
|
Some shared libraries (many are part of the JDK) keep references to objects
|
||||||
|
instantiated by the web application. To avoid class loading related problems
|
||||||
|
(ClassCastExceptions, messages indicating that the classloader
|
||||||
|
is stopped, etc.), the shared libraries state should be reinitialized.
|
||||||
|
|
||||||
|
Something which might help is to avoid putting classes which would be
|
||||||
|
referenced by a shared static field in the web application classloader,
|
||||||
|
and putting them in the shared classloader instead (JARs should be put in the
|
||||||
|
"lib" folder, and classes should be put in the "classes" folder).
|
||||||
|
|
||||||
|
|
||||||
|
================
|
||||||
|
Tomcat on Linux:
|
||||||
|
================
|
||||||
|
GLIBC 2.2 / Linux 2.4 users should define an environment variable:
|
||||||
|
export LD_ASSUME_KERNEL=2.2.5
|
||||||
|
|
||||||
|
Redhat Linux 9.0 users should use the following setting to avoid
|
||||||
|
stability problems:
|
||||||
|
export LD_ASSUME_KERNEL=2.4.1
|
||||||
|
|
||||||
|
There are some Linux bugs reported against the NIO sendfile behavior, make sure you
|
||||||
|
have a JDK that is up to date, or disable sendfile behavior in the Connector.<br/>
|
||||||
|
6427312: (fc) FileChannel.transferTo() throws IOException "system call interrupted"<br/>
|
||||||
|
5103988: (fc) FileChannel.transferTo should return -1 for EAGAIN instead throws IOException<br/>
|
||||||
|
6253145: (fc) FileChannel.transferTo on Linux fails when going beyond 2GB boundary<br/>
|
||||||
|
6470086: (fc) FileChannel.transferTo(2147483647, 1, channel) cause "Value too large" exception<br/>
|
||||||
|
|
||||||
|
|
||||||
|
=============================
|
||||||
|
Enabling SSI and CGI Support:
|
||||||
|
=============================
|
||||||
|
Because of the security risks associated with CGI and SSI available
|
||||||
|
to web applications, these features are disabled by default.
|
||||||
|
|
||||||
|
To enable and configure CGI support, please see the cgi-howto.html page.
|
||||||
|
|
||||||
|
To enable and configure SSI support, please see the ssi-howto.html page.
|
||||||
|
|
||||||
|
|
||||||
|
======================
|
||||||
|
Security manager URLs:
|
||||||
|
======================
|
||||||
|
In order to grant security permissions to JARs located inside the
|
||||||
|
web application repository, use URLs of the following format
|
||||||
|
in your policy file:
|
||||||
|
|
||||||
|
file:${catalina.base}/webapps/examples/WEB-INF/lib/driver.jar
|
||||||
|
|
||||||
|
|
||||||
|
============================
|
||||||
|
Symlinking static resources:
|
||||||
|
============================
|
||||||
|
By default, Unix symlinks will not work when used in a web application to link
|
||||||
|
resources located outside the web application root directory.
|
||||||
|
|
||||||
|
This behavior is optional, and the "allowLinking" flag may be used to disable
|
||||||
|
the check.
|
||||||
|
|
||||||
|
|
||||||
|
==============================
|
||||||
|
Viewing the Tomcat Change Log:
|
||||||
|
==============================
|
||||||
|
See changelog.html in this directory.
|
||||||
|
|
||||||
|
|
||||||
|
=============================
|
||||||
|
Cryptographic software notice
|
||||||
|
=============================
|
||||||
|
This distribution includes cryptographic software. The country in
|
||||||
|
which you currently reside may have restrictions on the import,
|
||||||
|
possession, use, and/or re-export to another country, of
|
||||||
|
encryption software. BEFORE using any encryption software, please
|
||||||
|
check your country's laws, regulations and policies concerning the
|
||||||
|
import, possession, or use, and re-export of encryption software, to
|
||||||
|
see if this is permitted. See <http://www.wassenaar.org/> for more
|
||||||
|
information.
|
||||||
|
|
||||||
|
The U.S. Government Department of Commerce, Bureau of Industry and
|
||||||
|
Security (BIS), has classified this software as Export Commodity
|
||||||
|
Control Number (ECCN) 5D002.C.1, which includes information security
|
||||||
|
software using or performing cryptographic functions with asymmetric
|
||||||
|
algorithms. The form and manner of this Apache Software Foundation
|
||||||
|
distribution makes it eligible for export under the License Exception
|
||||||
|
ENC Technology Software Unrestricted (TSU) exception (see the BIS
|
||||||
|
Export Administration Regulations, Section 740.13) for both object
|
||||||
|
code and source code.
|
||||||
|
|
||||||
|
The following provides more details on the included cryptographic
|
||||||
|
software:
|
||||||
|
- Tomcat includes code designed to work with JSSE
|
||||||
|
- Tomcat includes code designed to work with OpenSSL
|
||||||
|
|
||||||
|
|
||||||
|
====================
|
||||||
|
When all else fails:
|
||||||
|
====================
|
||||||
|
See the FAQ
|
||||||
|
https://tomcat.apache.org/faq/
|
||||||
493
centos8_tomcat/apache-tomcat-7.0.108/temp/docs/RUNNING.txt
Normal file
493
centos8_tomcat/apache-tomcat-7.0.108/temp/docs/RUNNING.txt
Normal file
@ -0,0 +1,493 @@
|
|||||||
|
================================================================================
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
================================================================================
|
||||||
|
|
||||||
|
===================================================
|
||||||
|
Running The Apache Tomcat 7.0 Servlet/JSP Container
|
||||||
|
===================================================
|
||||||
|
|
||||||
|
Apache Tomcat 7.0 requires a Java Standard Edition Runtime
|
||||||
|
Environment (JRE) version 6 or later.
|
||||||
|
|
||||||
|
=============================
|
||||||
|
Running With JRE 6 Or Later
|
||||||
|
=============================
|
||||||
|
|
||||||
|
(1) Download and Install a Java SE Runtime Environment (JRE)
|
||||||
|
|
||||||
|
(1.1) Download a Java SE Runtime Environment (JRE),
|
||||||
|
release version 6 or later, from
|
||||||
|
http://www.oracle.com/technetwork/java/javase/downloads/index.html
|
||||||
|
|
||||||
|
NOTE: Java WebSocket API (JSR-356) is supported only when running
|
||||||
|
with Java 7 or later.
|
||||||
|
|
||||||
|
(1.2) Install the JRE according to the instructions included with the
|
||||||
|
release.
|
||||||
|
|
||||||
|
You may also use a full Java Development Kit (JDK) rather than just
|
||||||
|
a JRE.
|
||||||
|
|
||||||
|
(1.3) When running on Java 6, the Common Annotations 1.0 implementation
|
||||||
|
provided by the JRE will be used. To use the Common Annotations 1.1
|
||||||
|
provided by Tomcat, use the Endorsed Standards Override mechanism
|
||||||
|
of the JVM. The default configuration defines JARs located in
|
||||||
|
"$CATALINA_HOME/endorsed" as endorsed.
|
||||||
|
|
||||||
|
NOTE: Java 6 includes a subset of Common Annotations 1.0 classes.
|
||||||
|
|
||||||
|
The only known difference between versions 1.0 and 1.1 of those
|
||||||
|
classes is introduction of "lookup" element on Resource annotation.
|
||||||
|
|
||||||
|
Majority of web applications will not notice the difference.
|
||||||
|
|
||||||
|
(2) Download and Install Apache Tomcat
|
||||||
|
|
||||||
|
(2.1) Download a binary distribution of Tomcat from:
|
||||||
|
|
||||||
|
https://tomcat.apache.org/
|
||||||
|
|
||||||
|
(2.2) Unpack the binary distribution so that it resides in its own
|
||||||
|
directory (conventionally named "apache-tomcat-[version]").
|
||||||
|
|
||||||
|
For the purposes of the remainder of this document, the name
|
||||||
|
"CATALINA_HOME" is used to refer to the full pathname of that
|
||||||
|
directory.
|
||||||
|
|
||||||
|
NOTE: As an alternative to downloading a binary distribution, you can
|
||||||
|
create your own from the Tomcat source code, as described in
|
||||||
|
"BUILDING.txt". You can either
|
||||||
|
|
||||||
|
a) Do the full "release" build and find the created distribution in the
|
||||||
|
"output/release" directory and then proceed with unpacking as above, or
|
||||||
|
|
||||||
|
b) Do a simple build and use the "output/build" directory as
|
||||||
|
"CATALINA_HOME". Be warned that there are some differences between the
|
||||||
|
contents of the "output/build" directory and a full "release"
|
||||||
|
distribution.
|
||||||
|
|
||||||
|
|
||||||
|
(3) Configure Environment Variables
|
||||||
|
|
||||||
|
Tomcat is a Java application and does not use environment variables directly.
|
||||||
|
Environment variables are used by the Tomcat startup scripts. The scripts use
|
||||||
|
the environment variables to prepare the command that starts Tomcat.
|
||||||
|
|
||||||
|
(3.1) Set CATALINA_HOME (required) and CATALINA_BASE (optional)
|
||||||
|
|
||||||
|
The CATALINA_HOME environment variable should be set to the location of the
|
||||||
|
root directory of the "binary" distribution of Tomcat.
|
||||||
|
|
||||||
|
The Tomcat startup scripts have some logic to set this variable
|
||||||
|
automatically if it is absent, based on the location of the startup script
|
||||||
|
in *nix and on the current directory in Windows. That logic might not work
|
||||||
|
in all circumstances, so setting the variable explicitly is recommended.
|
||||||
|
|
||||||
|
The CATALINA_BASE environment variable specifies location of the root
|
||||||
|
directory of the "active configuration" of Tomcat. It is optional. It
|
||||||
|
defaults to be equal to CATALINA_HOME.
|
||||||
|
|
||||||
|
Using distinct values for the CATALINA_HOME and CATALINA_BASE variables is
|
||||||
|
recommended to simplify further upgrades and maintenance. It is documented
|
||||||
|
in the "Multiple Tomcat Instances" section below.
|
||||||
|
|
||||||
|
|
||||||
|
(3.2) Set JRE_HOME or JAVA_HOME (required)
|
||||||
|
|
||||||
|
These variables are used to specify location of a Java Runtime
|
||||||
|
Environment or of a Java Development Kit that is used to start Tomcat.
|
||||||
|
|
||||||
|
The JRE_HOME variable is used to specify location of a JRE. The JAVA_HOME
|
||||||
|
variable is used to specify location of a JDK.
|
||||||
|
|
||||||
|
Using JAVA_HOME provides access to certain additional startup options that
|
||||||
|
are not allowed when JRE_HOME is used.
|
||||||
|
|
||||||
|
If both JRE_HOME and JAVA_HOME are specified, JRE_HOME is used.
|
||||||
|
|
||||||
|
The recommended place to specify these variables is a "setenv" script. See
|
||||||
|
below.
|
||||||
|
|
||||||
|
|
||||||
|
(3.3) Other variables (optional)
|
||||||
|
|
||||||
|
Other environment variables exist, besides the four described above.
|
||||||
|
See the comments at the top of catalina.bat or catalina.sh scripts for
|
||||||
|
the list and a description of each of them.
|
||||||
|
|
||||||
|
One frequently used variable is CATALINA_OPTS. It allows specification of
|
||||||
|
additional options for the java command that starts Tomcat.
|
||||||
|
|
||||||
|
See the Java documentation for the options that affect the Java Runtime
|
||||||
|
Environment.
|
||||||
|
|
||||||
|
See the "System Properties" page in the Tomcat Configuration Reference for
|
||||||
|
the system properties that are specific to Tomcat.
|
||||||
|
|
||||||
|
A similar variable is JAVA_OPTS. It is used less frequently. It allows
|
||||||
|
specification of options that are used both to start and to stop Tomcat as well
|
||||||
|
as for other commands.
|
||||||
|
|
||||||
|
Note: Do not use JAVA_OPTS to specify memory limits. You do not need much
|
||||||
|
memory for a small process that is used to stop Tomcat. Those settings
|
||||||
|
belong to CATALINA_OPTS.
|
||||||
|
|
||||||
|
Another frequently used variable is CATALINA_PID (on *nix only). It
|
||||||
|
specifies the location of the file where process id of the forked Tomcat
|
||||||
|
java process will be written. This setting is optional. It will enable the
|
||||||
|
following features:
|
||||||
|
|
||||||
|
* better protection against duplicate start attempts and
|
||||||
|
* allows forceful termination of Tomcat process when it does not react to
|
||||||
|
the standard shutdown command.
|
||||||
|
|
||||||
|
|
||||||
|
(3.4) Using the "setenv" script (optional, recommended)
|
||||||
|
|
||||||
|
Apart from CATALINA_HOME and CATALINA_BASE, all environment variables can
|
||||||
|
be specified in the "setenv" script. The script is placed either into
|
||||||
|
CATALINA_BASE/bin or into CATALINA_HOME/bin directory and is named
|
||||||
|
setenv.bat (on Windows) or setenv.sh (on *nix). The file has to be
|
||||||
|
readable.
|
||||||
|
|
||||||
|
By default the setenv script file is absent. If the script file is present
|
||||||
|
both in CATALINA_BASE and in CATALINA_HOME, the one in CATALINA_BASE is
|
||||||
|
preferred.
|
||||||
|
|
||||||
|
For example, to configure the JRE_HOME and CATALINA_PID variables you can
|
||||||
|
create the following script file:
|
||||||
|
|
||||||
|
On Windows, %CATALINA_BASE%\bin\setenv.bat:
|
||||||
|
|
||||||
|
set "JRE_HOME=%ProgramFiles%\Java\jre6"
|
||||||
|
exit /b 0
|
||||||
|
|
||||||
|
On *nix, $CATALINA_BASE/bin/setenv.sh:
|
||||||
|
|
||||||
|
JRE_HOME=/usr/java/latest
|
||||||
|
CATALINA_PID="$CATALINA_BASE/tomcat.pid"
|
||||||
|
|
||||||
|
|
||||||
|
The CATALINA_HOME and CATALINA_BASE variables cannot be configured in the
|
||||||
|
setenv script, because they are used to locate that file.
|
||||||
|
|
||||||
|
All the environment variables described here and the "setenv" script are
|
||||||
|
used only if you use the standard scripts to launch Tomcat. For example, if
|
||||||
|
you have installed Tomcat as a service on Windows, the service wrapper
|
||||||
|
launches Java directly and does not use the script files.
|
||||||
|
|
||||||
|
|
||||||
|
(4) Start Up Tomcat
|
||||||
|
|
||||||
|
(4.1) Tomcat can be started by executing one of the following commands:
|
||||||
|
|
||||||
|
On Windows:
|
||||||
|
|
||||||
|
%CATALINA_HOME%\bin\startup.bat
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
%CATALINA_HOME%\bin\catalina.bat start
|
||||||
|
|
||||||
|
On *nix:
|
||||||
|
|
||||||
|
$CATALINA_HOME/bin/startup.sh
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
$CATALINA_HOME/bin/catalina.sh start
|
||||||
|
|
||||||
|
(4.2) After startup, the default web applications included with Tomcat will be
|
||||||
|
available by visiting:
|
||||||
|
|
||||||
|
http://localhost:8080/
|
||||||
|
|
||||||
|
(4.3) Further information about configuring and running Tomcat can be found in
|
||||||
|
the documentation included here, as well as on the Tomcat web site:
|
||||||
|
|
||||||
|
https://tomcat.apache.org/
|
||||||
|
|
||||||
|
|
||||||
|
(5) Shut Down Tomcat
|
||||||
|
|
||||||
|
(5.1) Tomcat can be shut down by executing one of the following commands:
|
||||||
|
|
||||||
|
On Windows:
|
||||||
|
|
||||||
|
%CATALINA_HOME%\bin\shutdown.bat
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
%CATALINA_HOME%\bin\catalina.bat stop
|
||||||
|
|
||||||
|
On *nix:
|
||||||
|
|
||||||
|
$CATALINA_HOME/bin/shutdown.sh
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
$CATALINA_HOME/bin/catalina.sh stop
|
||||||
|
|
||||||
|
==================================================
|
||||||
|
Advanced Configuration - Multiple Tomcat Instances
|
||||||
|
==================================================
|
||||||
|
|
||||||
|
In many circumstances, it is desirable to have a single copy of a Tomcat
|
||||||
|
binary distribution shared among multiple users on the same server. To make
|
||||||
|
this possible, you can set the CATALINA_BASE environment variable to the
|
||||||
|
directory that contains the files for your 'personal' Tomcat instance.
|
||||||
|
|
||||||
|
When running with a separate CATALINA_HOME and CATALINA_BASE, the files
|
||||||
|
and directories are split as following:
|
||||||
|
|
||||||
|
In CATALINA_BASE:
|
||||||
|
|
||||||
|
* bin - Only the following files:
|
||||||
|
|
||||||
|
* setenv.sh (*nix) or setenv.bat (Windows),
|
||||||
|
* tomcat-juli.jar
|
||||||
|
|
||||||
|
The setenv scripts were described above. The tomcat-juli library
|
||||||
|
is documented in the Logging chapter in the User Guide.
|
||||||
|
|
||||||
|
* conf - Server configuration files (including server.xml)
|
||||||
|
|
||||||
|
* lib - Libraries and classes, as explained below
|
||||||
|
|
||||||
|
* logs - Log and output files
|
||||||
|
|
||||||
|
* webapps - Automatically loaded web applications
|
||||||
|
|
||||||
|
* work - Temporary working directories for web applications
|
||||||
|
|
||||||
|
* temp - Directory used by the JVM for temporary files (java.io.tmpdir)
|
||||||
|
|
||||||
|
|
||||||
|
In CATALINA_HOME:
|
||||||
|
|
||||||
|
* bin - Startup and shutdown scripts
|
||||||
|
|
||||||
|
The following files will be used only if they are absent in
|
||||||
|
CATALINA_BASE/bin:
|
||||||
|
|
||||||
|
setenv.sh (*nix), setenv.bat (Windows), tomcat-juli.jar
|
||||||
|
|
||||||
|
* lib - Libraries and classes, as explained below
|
||||||
|
|
||||||
|
* endorsed - Libraries that override standard "Endorsed Standards"
|
||||||
|
libraries provided by JRE. See Classloading documentation
|
||||||
|
in the User Guide for details.
|
||||||
|
No longer supported with Java 9.
|
||||||
|
|
||||||
|
By default this "endorsed" directory is absent.
|
||||||
|
|
||||||
|
In the default configuration the JAR libraries and classes both in
|
||||||
|
CATALINA_BASE/lib and in CATALINA_HOME/lib will be added to the common
|
||||||
|
classpath, but the ones in CATALINA_BASE will be added first and thus will
|
||||||
|
be searched first.
|
||||||
|
|
||||||
|
The idea is that you may leave the standard Tomcat libraries in
|
||||||
|
CATALINA_HOME/lib and add other ones such as database drivers into
|
||||||
|
CATALINA_BASE/lib.
|
||||||
|
|
||||||
|
In general it is advised to never share libraries between web applications,
|
||||||
|
but put them into WEB-INF/lib directories inside the applications. See
|
||||||
|
Classloading documentation in the User Guide for details.
|
||||||
|
|
||||||
|
|
||||||
|
It might be useful to note that the values of CATALINA_HOME and
|
||||||
|
CATALINA_BASE can be referenced in the XML configuration files processed
|
||||||
|
by Tomcat as ${catalina.home} and ${catalina.base} respectively.
|
||||||
|
|
||||||
|
For example, the standard manager web application can be kept in
|
||||||
|
CATALINA_HOME/webapps/manager and loaded into CATALINA_BASE by copying
|
||||||
|
its deployment descriptor into the desired virtual host:
|
||||||
|
|
||||||
|
* Copy the CATALINA_HOME/webapps/manager/META-INF/context.xml
|
||||||
|
file as CATALINA_BASE/conf/Catalina/localhost/manager.xml
|
||||||
|
|
||||||
|
* Add docBase attribute as shown below.
|
||||||
|
|
||||||
|
The file will look like the following:
|
||||||
|
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Context docBase="${catalina.home}/webapps/manager"
|
||||||
|
antiResourceLocking="false" privileged="true" >
|
||||||
|
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
|
||||||
|
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
|
||||||
|
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
|
||||||
|
</Context>
|
||||||
|
|
||||||
|
See Deployer chapter in User Guide and Context and Host chapters in the
|
||||||
|
Configuration Reference for more information on contexts and web
|
||||||
|
application deployment.
|
||||||
|
|
||||||
|
|
||||||
|
================
|
||||||
|
Troubleshooting
|
||||||
|
================
|
||||||
|
|
||||||
|
There are only really 2 things likely to go wrong during the stand-alone
|
||||||
|
Tomcat install:
|
||||||
|
|
||||||
|
(1) The most common hiccup is when another web server (or any process for that
|
||||||
|
matter) has laid claim to port 8080. This is the default HTTP port that
|
||||||
|
Tomcat attempts to bind to at startup. To change this, open the file:
|
||||||
|
|
||||||
|
$CATALINA_HOME/conf/server.xml
|
||||||
|
|
||||||
|
and search for '8080'. Change it to a port that isn't in use, and is
|
||||||
|
greater than 1024, as ports less than or equal to 1024 require superuser
|
||||||
|
access to bind under UNIX.
|
||||||
|
|
||||||
|
Restart Tomcat and you're in business. Be sure that you replace the "8080"
|
||||||
|
in the URL you're using to access Tomcat. For example, if you change the
|
||||||
|
port to 1977, you would request the URL http://localhost:1977/ in your
|
||||||
|
browser.
|
||||||
|
|
||||||
|
(2) The 'localhost' machine isn't found. This could happen if you're behind a
|
||||||
|
proxy. If that's the case, make sure the proxy configuration for your
|
||||||
|
browser knows that you shouldn't be going through the proxy to access the
|
||||||
|
"localhost".
|
||||||
|
|
||||||
|
In Firefox, this is under Tools/Preferences -> Advanced/Network ->
|
||||||
|
Connection -> Settings..., and in Internet Explorer it is Tools ->
|
||||||
|
Internet Options -> Connections -> LAN Settings.
|
||||||
|
|
||||||
|
|
||||||
|
====================
|
||||||
|
Optional Components
|
||||||
|
====================
|
||||||
|
|
||||||
|
The following optional components may be included with the Apache Tomcat binary
|
||||||
|
distribution. If they are not included, you can install them separately.
|
||||||
|
|
||||||
|
1. Apache Tomcat Native library
|
||||||
|
|
||||||
|
2. Apache Commons Daemon service launcher
|
||||||
|
|
||||||
|
Both of them are implemented in C language and as such have to be compiled
|
||||||
|
into binary code. The binary code will be specific for a platform and CPU
|
||||||
|
architecture and it must match the Java Runtime Environment executables
|
||||||
|
that will be used to launch Tomcat.
|
||||||
|
|
||||||
|
The Windows-specific binary distributions of Apache Tomcat include binary
|
||||||
|
files for these components. On other platforms you would have to look for
|
||||||
|
binary versions elsewhere or compile them yourself.
|
||||||
|
|
||||||
|
If you are new to Tomcat, do not bother with these components to start with.
|
||||||
|
If you do use them, do not forget to read their documentation.
|
||||||
|
|
||||||
|
|
||||||
|
Apache Tomcat Native library
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
It is a library that allows to use the "Apr" variant of HTTP and AJP
|
||||||
|
protocol connectors in Apache Tomcat. It is built around OpenSSL and Apache
|
||||||
|
Portable Runtime (APR) libraries. Those are the same libraries as used by
|
||||||
|
Apache HTTPD Server project.
|
||||||
|
|
||||||
|
This feature was especially important in the old days when Java performance
|
||||||
|
was poor. It is less important nowadays, but it is still used and respected
|
||||||
|
by many. See Tomcat documentation for more details.
|
||||||
|
|
||||||
|
For further reading:
|
||||||
|
|
||||||
|
- Apache Tomcat documentation
|
||||||
|
|
||||||
|
* Documentation for APR/Native library in the Tomcat User's Guide
|
||||||
|
|
||||||
|
https://tomcat.apache.org/tomcat-7.0-doc/apr.html
|
||||||
|
|
||||||
|
* Documentation for the HTTP and AJP protocol connectors in the Tomcat
|
||||||
|
Configuration Reference
|
||||||
|
|
||||||
|
https://tomcat.apache.org/tomcat-7.0-doc/config/http.html
|
||||||
|
|
||||||
|
https://tomcat.apache.org/tomcat-7.0-doc/config/ajp.html
|
||||||
|
|
||||||
|
- Apache Tomcat Native project home
|
||||||
|
|
||||||
|
https://tomcat.apache.org/native-doc/
|
||||||
|
|
||||||
|
- Other projects
|
||||||
|
|
||||||
|
* OpenSSL
|
||||||
|
|
||||||
|
https://www.openssl.org/
|
||||||
|
|
||||||
|
* Apache Portable Runtime
|
||||||
|
|
||||||
|
https://apr.apache.org/
|
||||||
|
|
||||||
|
* Apache HTTP Server
|
||||||
|
|
||||||
|
https://httpd.apache.org/
|
||||||
|
|
||||||
|
To disable Apache Tomcat Native library:
|
||||||
|
|
||||||
|
- To disable Apache Tomcat Native library when it is installed, or
|
||||||
|
- To remove the warning that is logged during Tomcat startup when the
|
||||||
|
library is not installed:
|
||||||
|
|
||||||
|
Edit the "conf/server.xml" file and remove "AprLifecycleListener" from
|
||||||
|
it.
|
||||||
|
|
||||||
|
The binary file of Apache Tomcat Native library is usually named
|
||||||
|
|
||||||
|
- "tcnative-1.dll" on Windows
|
||||||
|
- "libtcnative-1.so" on *nix systems
|
||||||
|
|
||||||
|
|
||||||
|
Apache Commons Daemon
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
Apache Commons Daemon project provides wrappers that can be used to
|
||||||
|
install Apache Tomcat as a service on Windows or as a daemon on *nix
|
||||||
|
systems.
|
||||||
|
|
||||||
|
The Windows-specific implementation of Apache Commons Daemon is called
|
||||||
|
"procrun". The *nix-specific one is called "jsvc".
|
||||||
|
|
||||||
|
For further reading:
|
||||||
|
|
||||||
|
- Apache Commons Daemon project
|
||||||
|
|
||||||
|
https://commons.apache.org/daemon/
|
||||||
|
|
||||||
|
- Apache Tomcat documentation
|
||||||
|
|
||||||
|
* Installing Apache Tomcat
|
||||||
|
|
||||||
|
https://tomcat.apache.org/tomcat-7.0-doc/setup.html
|
||||||
|
|
||||||
|
* Windows service HOW-TO
|
||||||
|
|
||||||
|
https://tomcat.apache.org/tomcat-7.0-doc/windows-service-howto.html
|
||||||
|
|
||||||
|
The binary files of Apache Commons Daemon in Apache Tomcat distributions
|
||||||
|
for Windows are named:
|
||||||
|
|
||||||
|
- "tomcat7.exe"
|
||||||
|
- "tomcat7w.exe"
|
||||||
|
|
||||||
|
These files are renamed copies of "prunsrv.exe" and "prunmgr.exe" from
|
||||||
|
Apache Commons Daemon distribution. The file names have a meaning: they are
|
||||||
|
used as the service name to register the service in Windows, as well as the
|
||||||
|
key name to store distinct configuration for this installation of
|
||||||
|
"procrun". If you would like to install several instances of Tomcat 7.0
|
||||||
|
in parallel, you have to further rename those files, using the same naming
|
||||||
|
scheme.
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
|
||||||
|
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
|
||||||
|
version="3.0"
|
||||||
|
metadata-complete="true">
|
||||||
|
|
||||||
|
<display-name>Tomcat Documentation</display-name>
|
||||||
|
<description>
|
||||||
|
Tomcat Documentation.
|
||||||
|
</description>
|
||||||
|
</web-app>
|
||||||
392
centos8_tomcat/apache-tomcat-7.0.108/temp/docs/aio.html
Normal file
392
centos8_tomcat/apache-tomcat-7.0.108/temp/docs/aio.html
Normal file
@ -0,0 +1,392 @@
|
|||||||
|
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.108) - Advanced IO and Tomcat</title><meta name="author" content="Remy Maucherat"><style type="text/css" media="print">
|
||||||
|
.noPrint {display: none;}
|
||||||
|
td#mainBody {width: 100%;}
|
||||||
|
</style><style type="text/css">
|
||||||
|
code {background-color:rgb(224,255,255);padding:0 0.1em;}
|
||||||
|
code.attributeName, code.propertyName {background-color:transparent;}
|
||||||
|
|
||||||
|
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
table *:not(table) {
|
||||||
|
/* Prevent border-collapsing for table child elements like <div> */
|
||||||
|
border-collapse: separate;
|
||||||
|
}
|
||||||
|
|
||||||
|
th {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
div.codeBox {
|
||||||
|
overflow: auto;
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
div.codeBox pre {
|
||||||
|
margin: 0;
|
||||||
|
padding: 4px;
|
||||||
|
border: 1px solid #999;
|
||||||
|
border-radius: 5px;
|
||||||
|
background-color: #eff8ff;
|
||||||
|
display: table; /* To prevent <pre>s from taking the complete available width. */
|
||||||
|
/*
|
||||||
|
When it is officially supported, use the following CSS instead of display: table
|
||||||
|
to prevent big <pre>s from exceeding the browser window:
|
||||||
|
max-width: available;
|
||||||
|
width: min-content;
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
div.codeBox pre.wrap {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
table.defaultTable tr, table.detail-table tr {
|
||||||
|
border: 1px solid #CCC;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {
|
||||||
|
background-color: #FAFBFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {
|
||||||
|
background-color: #EEEFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable th, table.detail-table th {
|
||||||
|
background-color: #88b;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {
|
||||||
|
padding: 5px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
p.notice {
|
||||||
|
border: 1px solid rgb(255, 0, 0);
|
||||||
|
background-color: rgb(238, 238, 238);
|
||||||
|
color: rgb(0, 51, 102);
|
||||||
|
padding: 0.5em;
|
||||||
|
margin: 1em 2em 1em 1em;
|
||||||
|
}
|
||||||
|
</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="https://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="
|
||||||
|
The Apache Tomcat Servlet/JSP Container
|
||||||
|
" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.108, Jan 28 2021</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="https://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="host-manager-howto.html">6) Host Manager</a></li><li><a href="realm-howto.html">7) Realms and AAA</a></li><li><a href="security-manager-howto.html">8) Security Manager</a></li><li><a href="jndi-resources-howto.html">9) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">10) JDBC DataSources</a></li><li><a href="class-loader-howto.html">11) Classloading</a></li><li><a href="jasper-howto.html">12) JSPs</a></li><li><a href="ssl-howto.html">13) SSL/TLS</a></li><li><a href="ssi-howto.html">14) SSI</a></li><li><a href="cgi-howto.html">15) CGI</a></li><li><a href="proxy-howto.html">16) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">17) MBeans Descriptors</a></li><li><a href="default-servlet.html">18) Default Servlet</a></li><li><a href="cluster-howto.html">19) Clustering</a></li><li><a href="balancer-howto.html">20) Load Balancer</a></li><li><a href="connectors.html">21) Connectors</a></li><li><a href="monitoring.html">22) Monitoring and Management</a></li><li><a href="logging.html">23) Logging</a></li><li><a href="apr.html">24) APR/Native</a></li><li><a href="virtual-hosting-howto.html">25) Virtual Hosting</a></li><li><a href="aio.html">26) Advanced IO</a></li><li><a href="extras.html">27) Additional Components</a></li><li><a href="maven-jars.html">28) Mavenized</a></li><li><a href="security-howto.html">29) Security Considerations</a></li><li><a href="windows-service-howto.html">30) Windows Service</a></li><li><a href="windows-auth-howto.html">31) Windows Authentication</a></li><li><a href="jdbc-pool.html">32) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">33) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="annotationapi/index.html">Common Annotations 1.1 Javadocs</a></li><li><a href="https://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="https://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Advanced IO and Tomcat</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Comet_support">Comet support</a><ol><li><a href="#CometEvent">CometEvent</a></li><li><a href="#CometFilter">CometFilter</a></li><li><a href="#Example_code">Example code</a></li><li><a href="#Comet_timeouts">Comet timeouts</a></li></ol></li><li><a href="#Asynchronous_writes">Asynchronous writes</a></li></ul>
|
||||||
|
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
With usage of APR or NIO APIs as the basis of its connectors, Tomcat is
|
||||||
|
able to provide a number of extensions over the regular blocking IO
|
||||||
|
as provided with support for the Servlet API.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<b>IMPORTANT NOTE: Usage of these features requires using the APR or NIO
|
||||||
|
HTTP connectors. The classic java.io HTTP connector and the AJP connectors
|
||||||
|
do not support them.</b>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Comet support"><!--()--></a><a name="Comet_support"><strong>Comet support</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Comet support allows a servlet to process IO asynchronously, receiving
|
||||||
|
events when data is available for reading on the connection (rather than
|
||||||
|
always using a blocking read), and writing data back on connections
|
||||||
|
asynchronously (most likely responding to some event raised from some
|
||||||
|
other source).
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="CometEvent"><strong>CometEvent</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Servlets which implement the <code>org.apache.catalina.comet.CometProcessor</code>
|
||||||
|
interface will have their event method invoked rather than the usual service
|
||||||
|
method, according to the event which occurred. The event object gives
|
||||||
|
access to the usual request and response objects, which may be used in the
|
||||||
|
usual way. The main difference is that those objects remain valid and fully
|
||||||
|
functional at any time between processing of the BEGIN event until processing
|
||||||
|
an END or ERROR event.
|
||||||
|
The following event types exist:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>EventType.BEGIN: will be called at the beginning
|
||||||
|
of the processing of the connection. It can be used to initialize any relevant
|
||||||
|
fields using the request and response objects. Between the end of the processing
|
||||||
|
of this event, and the beginning of the processing of the end or error events,
|
||||||
|
it is possible to use the response object to write data on the open connection.
|
||||||
|
Note that the response object and dependent OutputStream and Writer are still
|
||||||
|
not synchronized, so when they are accessed by multiple threads,
|
||||||
|
synchronization is mandatory. After processing the initial event, the request
|
||||||
|
is considered to be committed.</li>
|
||||||
|
<li>EventType.READ: This indicates that input data is available, and that one read can be made
|
||||||
|
without blocking. The available and ready methods of the InputStream or
|
||||||
|
Reader may be used to determine if there is a risk of blocking: the servlet
|
||||||
|
should read while data is reported available. When encountering a read error,
|
||||||
|
the servlet should report it by propagating the exception properly. Throwing
|
||||||
|
an exception will cause the error event to be invoked, and the connection
|
||||||
|
will be closed.
|
||||||
|
Alternately, it is also possible to catch any exception, perform clean up
|
||||||
|
on any data structure the servlet may be using, and using the close method
|
||||||
|
of the event. It is not allowed to attempt reading data from the request
|
||||||
|
object outside of the execution of this method.<br>
|
||||||
|
On some platforms, like Windows, a client disconnect is indicated by a READ event.
|
||||||
|
Reading from the stream may result in -1, an IOException or an EOFException.
|
||||||
|
Make sure you properly handle all these three cases.
|
||||||
|
If you don't catch the IOException, Tomcat will instantly invoke your event chain with an ERROR as
|
||||||
|
it catches the error for you, and you will be notified of the error at that time.
|
||||||
|
</li>
|
||||||
|
<li>EventType.END: End may be called to end the processing of the request. Fields that have
|
||||||
|
been initialized in the begin method should be reset. After this event has
|
||||||
|
been processed, the request and response objects, as well as all their dependent
|
||||||
|
objects will be recycled and used to process other requests. End will also be
|
||||||
|
called when data is available and the end of file is reached on the request input
|
||||||
|
(this usually indicates the client has pipelined a request).</li>
|
||||||
|
<li>EventType.ERROR: Error will be called by the container in the case where an IO exception
|
||||||
|
or a similar unrecoverable error occurs on the connection. Fields that have
|
||||||
|
been initialized in the begin method should be reset. After this event has
|
||||||
|
been processed, the request and response objects, as well as all their dependent
|
||||||
|
objects will be recycled and used to process other requests.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
There are some event subtypes which allow finer processing of events (note: some of these
|
||||||
|
events require usage of the org.apache.catalina.valves.CometConnectionManagerValve valve):
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>EventSubType.TIMEOUT: The connection timed out (sub type of ERROR); note that this ERROR
|
||||||
|
type is not fatal, and the connection will not be closed unless the servlet uses the close
|
||||||
|
method of the event.
|
||||||
|
</li>
|
||||||
|
<li>EventSubType.CLIENT_DISCONNECT: The client connection was closed (sub type of ERROR).
|
||||||
|
</li>
|
||||||
|
<li>EventSubType.IOEXCEPTION: An IO exception occurred, such as invalid content, for example,
|
||||||
|
an invalid chunk block (sub type of ERROR).
|
||||||
|
</li>
|
||||||
|
<li>EventSubType.WEBAPP_RELOAD: The web application is being reloaded (sub type of END).
|
||||||
|
</li>
|
||||||
|
<li>EventSubType.SESSION_END: The servlet ended the session (sub type of END).
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
As described above, the typical lifecycle of a Comet request will consist in a series of
|
||||||
|
events such as: BEGIN -> READ -> READ -> READ -> ERROR/TIMEOUT. At any time, the servlet
|
||||||
|
may end processing of the request by using the close method of the event object.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="CometFilter"><strong>CometFilter</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Similar to regular filters, a filter chain is invoked when comet events are processed.
|
||||||
|
These filters should implement the CometFilter interface (which works in the same way as
|
||||||
|
the regular Filter interface), and should be declared and mapped in the deployment
|
||||||
|
descriptor in the same way as a regular filter. The filter chain when processing an event
|
||||||
|
will only include filters which match all the usual mapping rules, and also implement
|
||||||
|
the CometFiler interface.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Example code"><!--()--></a><a name="Example_code"><strong>Example code</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The following pseudo code servlet implements asynchronous chat functionality using the API
|
||||||
|
described above:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="codeBox"><pre><code>public class ChatServlet
|
||||||
|
extends HttpServlet implements CometProcessor {
|
||||||
|
|
||||||
|
protected ArrayList<HttpServletResponse> connections =
|
||||||
|
new ArrayList<HttpServletResponse>();
|
||||||
|
protected MessageSender messageSender = null;
|
||||||
|
|
||||||
|
public void init() throws ServletException {
|
||||||
|
messageSender = new MessageSender();
|
||||||
|
Thread messageSenderThread =
|
||||||
|
new Thread(messageSender, "MessageSender[" + getServletContext().getContextPath() + "]");
|
||||||
|
messageSenderThread.setDaemon(true);
|
||||||
|
messageSenderThread.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void destroy() {
|
||||||
|
connections.clear();
|
||||||
|
messageSender.stop();
|
||||||
|
messageSender = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Process the given Comet event.
|
||||||
|
*
|
||||||
|
* @param event The Comet event that will be processed
|
||||||
|
* @throws IOException
|
||||||
|
* @throws ServletException
|
||||||
|
*/
|
||||||
|
public void event(CometEvent event)
|
||||||
|
throws IOException, ServletException {
|
||||||
|
HttpServletRequest request = event.getHttpServletRequest();
|
||||||
|
HttpServletResponse response = event.getHttpServletResponse();
|
||||||
|
if (event.getEventType() == CometEvent.EventType.BEGIN) {
|
||||||
|
log("Begin for session: " + request.getSession(true).getId());
|
||||||
|
PrintWriter writer = response.getWriter();
|
||||||
|
writer.println("<!DOCTYPE html>");
|
||||||
|
writer.println("<head><title>JSP Chat</title></head><body>");
|
||||||
|
writer.flush();
|
||||||
|
synchronized(connections) {
|
||||||
|
connections.add(response);
|
||||||
|
}
|
||||||
|
} else if (event.getEventType() == CometEvent.EventType.ERROR) {
|
||||||
|
log("Error for session: " + request.getSession(true).getId());
|
||||||
|
synchronized(connections) {
|
||||||
|
connections.remove(response);
|
||||||
|
}
|
||||||
|
event.close();
|
||||||
|
} else if (event.getEventType() == CometEvent.EventType.END) {
|
||||||
|
log("End for session: " + request.getSession(true).getId());
|
||||||
|
synchronized(connections) {
|
||||||
|
connections.remove(response);
|
||||||
|
}
|
||||||
|
PrintWriter writer = response.getWriter();
|
||||||
|
writer.println("</body></html>");
|
||||||
|
event.close();
|
||||||
|
} else if (event.getEventType() == CometEvent.EventType.READ) {
|
||||||
|
InputStream is = request.getInputStream();
|
||||||
|
byte[] buf = new byte[512];
|
||||||
|
do {
|
||||||
|
int n = is.read(buf); //can throw an IOException
|
||||||
|
if (n > 0) {
|
||||||
|
log("Read " + n + " bytes: " + new String(buf, 0, n)
|
||||||
|
+ " for session: " + request.getSession(true).getId());
|
||||||
|
} else if (n < 0) {
|
||||||
|
error(event, request, response);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} while (is.available() > 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class MessageSender implements Runnable {
|
||||||
|
|
||||||
|
protected boolean running = true;
|
||||||
|
protected ArrayList<String> messages = new ArrayList<String>();
|
||||||
|
|
||||||
|
public MessageSender() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void stop() {
|
||||||
|
running = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add message for sending.
|
||||||
|
*/
|
||||||
|
public void send(String user, String message) {
|
||||||
|
synchronized (messages) {
|
||||||
|
messages.add("[" + user + "]: " + message);
|
||||||
|
messages.notify();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void run() {
|
||||||
|
|
||||||
|
while (running) {
|
||||||
|
|
||||||
|
if (messages.size() == 0) {
|
||||||
|
try {
|
||||||
|
synchronized (messages) {
|
||||||
|
messages.wait();
|
||||||
|
}
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
// Ignore
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
synchronized (connections) {
|
||||||
|
String[] pendingMessages = null;
|
||||||
|
synchronized (messages) {
|
||||||
|
pendingMessages = messages.toArray(new String[0]);
|
||||||
|
messages.clear();
|
||||||
|
}
|
||||||
|
// Send any pending message on all the open connections
|
||||||
|
for (int i = 0; i < connections.size(); i++) {
|
||||||
|
try {
|
||||||
|
PrintWriter writer = connections.get(i).getWriter();
|
||||||
|
for (int j = 0; j < pendingMessages.length; j++) {
|
||||||
|
writer.println(pendingMessages[j] + "<br>");
|
||||||
|
}
|
||||||
|
writer.flush();
|
||||||
|
} catch (IOException e) {
|
||||||
|
log("IOExeption sending message", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}</code></pre></div>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Comet timeouts"><!--()--></a><a name="Comet_timeouts"><strong>Comet timeouts</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
<p>If you are using the NIO connector, you can set individual timeouts for your different comet connections.
|
||||||
|
To set a timeout, simply set a request attribute like the following code shows:</p>
|
||||||
|
<div class="codeBox"><pre><code>CometEvent event.... event.setTimeout(30*1000);</code></pre></div>
|
||||||
|
<p>or</p>
|
||||||
|
<div class="codeBox"><pre><code>event.getHttpServletRequest().setAttribute("org.apache.tomcat.comet.timeout", new Integer(30 * 1000));</code></pre></div>
|
||||||
|
<p>
|
||||||
|
This sets the timeout to 30 seconds.
|
||||||
|
Important note: in order to set this timeout, it has to be done on the <code>BEGIN</code> event.
|
||||||
|
The default value is <code>soTimeout</code>
|
||||||
|
</p>
|
||||||
|
<p>If you are using the APR connector, all Comet connections will have the same timeout value. It is <code>soTimeout*50</code>
|
||||||
|
</p>
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Asynchronous writes"><!--()--></a><a name="Asynchronous_writes"><strong>Asynchronous writes</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
When APR or NIO is enabled, Tomcat supports using sendfile to send large static files.
|
||||||
|
These writes, as soon as the system load increases, will be performed
|
||||||
|
asynchronously in the most efficient way. Instead of sending a large response using
|
||||||
|
blocking writes, it is possible to write content to a static file, and write it
|
||||||
|
using a sendfile code. A caching valve could take advantage of this to cache the
|
||||||
|
response data in a file rather than store it in memory. Sendfile support is
|
||||||
|
available if the request attribute <code>org.apache.tomcat.sendfile.support</code>
|
||||||
|
is set to <code>Boolean.TRUE</code>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Any servlet can instruct Tomcat to perform a sendfile call by setting the appropriate
|
||||||
|
request attributes. It is also necessary to correctly set the content length
|
||||||
|
for the response. When using sendfile, it is best to ensure that neither the
|
||||||
|
request or response have been wrapped, since as the response body will be sent later
|
||||||
|
by the connector itself, it cannot be filtered. Other than setting the 3 needed
|
||||||
|
request attributes, the servlet should not send any response data, but it may use
|
||||||
|
any method which will result in modifying the response header (like setting cookies).
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><code>org.apache.tomcat.sendfile.filename</code>: Canonical filename of the file which will be sent as
|
||||||
|
a String</li>
|
||||||
|
<li><code>org.apache.tomcat.sendfile.start</code>: Start offset as a Long</li>
|
||||||
|
<li><code>org.apache.tomcat.sendfile.end</code>: End offset as a Long</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>
|
||||||
|
Copyright © 1999-2021, Apache Software Foundation
|
||||||
|
</em></font></div></td></tr></table></body></html>
|
||||||
@ -0,0 +1,34 @@
|
|||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<title>API docs</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
The Annotation API Javadoc is not installed by default. Download and install
|
||||||
|
the "fulldocs" package to get it.
|
||||||
|
|
||||||
|
You can also access the javadoc online in the Tomcat
|
||||||
|
<a href="https://tomcat.apache.org/tomcat-7.0-doc/">
|
||||||
|
documentation bundle</a>.
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@ -0,0 +1,34 @@
|
|||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
<!doctype html public "-//w3c//dtd html 4.0 transitional//en" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||||
|
<title>API docs</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
Tomcat's internal javadoc is not installed by default. Download and install
|
||||||
|
the "fulldocs" package to get it.
|
||||||
|
|
||||||
|
You can also access the javadoc online in the Tomcat
|
||||||
|
<a href="https://tomcat.apache.org/tomcat-7.0-doc/">
|
||||||
|
documentation bundle</a>.
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@ -0,0 +1,512 @@
|
|||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
General purpose build script for web applications and web services,
|
||||||
|
including enhanced support for deploying directly to a Tomcat
|
||||||
|
based server.
|
||||||
|
|
||||||
|
This build script assumes that the source code of your web application
|
||||||
|
is organized into the following subdirectories underneath the source
|
||||||
|
code directory from which you execute the build script:
|
||||||
|
|
||||||
|
docs Static documentation files to be copied to
|
||||||
|
the "docs" subdirectory of your distribution.
|
||||||
|
|
||||||
|
src Java source code (and associated resource files)
|
||||||
|
to be compiled to the "WEB-INF/classes"
|
||||||
|
subdirectory of your web application.
|
||||||
|
|
||||||
|
web Static HTML, JSP, and other content (such as
|
||||||
|
image files), including the WEB-INF subdirectory
|
||||||
|
and its configuration file contents.
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- A "project" describes a set of targets that may be requested
|
||||||
|
when Ant is executed. The "default" attribute defines the
|
||||||
|
target which is executed if no specific target is requested,
|
||||||
|
and the "basedir" attribute defines the current working directory
|
||||||
|
from which Ant executes the requested task. This is normally
|
||||||
|
set to the current working directory.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<project name="My Project" default="compile" basedir=".">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ===================== Property Definitions =========================== -->
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
Each of the following properties are used in the build script.
|
||||||
|
Values for these properties are set by the first place they are
|
||||||
|
defined, from the following list:
|
||||||
|
|
||||||
|
* Definitions on the "ant" command line (ant -Dfoo=bar compile).
|
||||||
|
|
||||||
|
* Definitions from a "build.properties" file in the top level
|
||||||
|
source directory of this application.
|
||||||
|
|
||||||
|
* Definitions from a "build.properties" file in the developer's
|
||||||
|
home directory.
|
||||||
|
|
||||||
|
* Default definitions in this build.xml file.
|
||||||
|
|
||||||
|
You will note below that property values can be composed based on the
|
||||||
|
contents of previously defined properties. This is a powerful technique
|
||||||
|
that helps you minimize the number of changes required when your development
|
||||||
|
environment is modified. Note that property composition is allowed within
|
||||||
|
"build.properties" files as well as in the "build.xml" script.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<property file="build.properties"/>
|
||||||
|
<property file="${user.home}/build.properties"/>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ==================== File and Directory Names ======================== -->
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
These properties generally define file and directory names (or paths) that
|
||||||
|
affect where the build process stores its outputs.
|
||||||
|
|
||||||
|
app.name Base name of this application, used to
|
||||||
|
construct filenames and directories.
|
||||||
|
Defaults to "myapp".
|
||||||
|
|
||||||
|
app.path Context path to which this application should be
|
||||||
|
deployed (defaults to "/" plus the value of the
|
||||||
|
"app.name" property).
|
||||||
|
|
||||||
|
app.version Version number of this iteration of the application.
|
||||||
|
|
||||||
|
build.home The directory into which the "prepare" and
|
||||||
|
"compile" targets will generate their output.
|
||||||
|
Defaults to "build".
|
||||||
|
|
||||||
|
catalina.home The directory in which you have installed
|
||||||
|
a binary distribution of Tomcat. This will
|
||||||
|
be used by the "deploy" target.
|
||||||
|
|
||||||
|
dist.home The name of the base directory in which
|
||||||
|
distribution files are created.
|
||||||
|
Defaults to "dist".
|
||||||
|
|
||||||
|
manager.password The login password of a user that is assigned the
|
||||||
|
"manager-script" role (so that he or she can execute
|
||||||
|
commands via the "/manager" web application)
|
||||||
|
|
||||||
|
manager.url The URL of the "/manager" web application on the
|
||||||
|
Tomcat installation to which we will deploy web
|
||||||
|
applications and web services.
|
||||||
|
|
||||||
|
manager.username The login username of a user that is assigned the
|
||||||
|
"manager-script" role (so that he or she can execute
|
||||||
|
commands via the "/manager" web application)
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<property name="app.name" value="myapp"/>
|
||||||
|
<property name="app.path" value="/${app.name}"/>
|
||||||
|
<property name="app.version" value="0.1-dev"/>
|
||||||
|
<property name="build.home" value="${basedir}/build"/>
|
||||||
|
<property name="catalina.home" value="../../../.."/> <!-- UPDATE THIS! -->
|
||||||
|
<property name="dist.home" value="${basedir}/dist"/>
|
||||||
|
<property name="docs.home" value="${basedir}/docs"/>
|
||||||
|
<property name="manager.url" value="http://localhost:8080/manager/text"/>
|
||||||
|
<property name="src.home" value="${basedir}/src"/>
|
||||||
|
<property name="web.home" value="${basedir}/web"/>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ==================== External Dependencies =========================== -->
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
Use property values to define the locations of external JAR files on which
|
||||||
|
your application will depend. In general, these values will be used for
|
||||||
|
two purposes:
|
||||||
|
* Inclusion on the classpath that is passed to the Javac compiler
|
||||||
|
* Being copied into the "/WEB-INF/lib" directory during execution
|
||||||
|
of the "deploy" target.
|
||||||
|
|
||||||
|
Because we will automatically include all of the Java classes that Tomcat
|
||||||
|
exposes to web applications, we will not need to explicitly list any of those
|
||||||
|
dependencies. You only need to worry about external dependencies for JAR
|
||||||
|
files that you are going to include inside your "/WEB-INF/lib" directory.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Dummy external dependency -->
|
||||||
|
<!--
|
||||||
|
<property name="foo.jar"
|
||||||
|
value="/path/to/foo.jar"/>
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ==================== Compilation Classpath =========================== -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
Rather than relying on the CLASSPATH environment variable, Ant includes
|
||||||
|
features that makes it easy to dynamically construct the classpath you
|
||||||
|
need for each compilation. The example below constructs the compile
|
||||||
|
classpath to include the servlet.jar file, as well as the other components
|
||||||
|
that Tomcat makes available to web applications automatically, plus anything
|
||||||
|
that you explicitly added.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<path id="compile.classpath">
|
||||||
|
|
||||||
|
<!-- Include all JAR files that will be included in /WEB-INF/lib -->
|
||||||
|
<!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** -->
|
||||||
|
<!--
|
||||||
|
<pathelement location="${foo.jar}"/>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Include all elements that Tomcat exposes to applications -->
|
||||||
|
<fileset dir="${catalina.home}/bin">
|
||||||
|
<include name="*.jar"/>
|
||||||
|
</fileset>
|
||||||
|
<pathelement location="${catalina.home}/lib"/>
|
||||||
|
<fileset dir="${catalina.home}/lib">
|
||||||
|
<include name="*.jar"/>
|
||||||
|
</fileset>
|
||||||
|
|
||||||
|
</path>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ================== Custom Ant Task Definitions ======================= -->
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
These properties define custom tasks for the Ant build tool that interact
|
||||||
|
with the "/manager" web application installed with Tomcat. Before they
|
||||||
|
can be successfully utilized, you must perform the following steps:
|
||||||
|
|
||||||
|
- Copy the file "lib/catalina-ant.jar" from your Tomcat
|
||||||
|
installation into the "lib" directory of your Ant installation.
|
||||||
|
|
||||||
|
- Create a "build.properties" file in your application's top-level
|
||||||
|
source directory (or your user login home directory) that defines
|
||||||
|
appropriate values for the "manager.password", "manager.url", and
|
||||||
|
"manager.username" properties described above.
|
||||||
|
|
||||||
|
For more information about the Manager web application, and the functionality
|
||||||
|
of these tasks, see <http://localhost:8080/tomcat-docs/manager-howto.html>.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<taskdef resource="org/apache/catalina/ant/catalina.tasks"
|
||||||
|
classpathref="compile.classpath"/>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ==================== Compilation Control Options ==================== -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
These properties control option settings on the Javac compiler when it
|
||||||
|
is invoked using the <javac> task.
|
||||||
|
|
||||||
|
compile.debug Should compilation include the debug option?
|
||||||
|
|
||||||
|
compile.deprecation Should compilation include the deprecation option?
|
||||||
|
|
||||||
|
compile.optimize Should compilation include the optimize option?
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<property name="compile.debug" value="true"/>
|
||||||
|
<property name="compile.deprecation" value="false"/>
|
||||||
|
<property name="compile.optimize" value="true"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ==================== All Target ====================================== -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
The "all" target is a shortcut for running the "clean" target followed
|
||||||
|
by the "compile" target, to force a complete recompile.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<target name="all" depends="clean,compile"
|
||||||
|
description="Clean build and dist directories, then compile"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ==================== Clean Target ==================================== -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
The "clean" target deletes any previous "build" and "dist" directory,
|
||||||
|
so that you can be ensured the application can be built from scratch.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<target name="clean"
|
||||||
|
description="Delete old build and dist directories">
|
||||||
|
<delete dir="${build.home}"/>
|
||||||
|
<delete dir="${dist.home}"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ==================== Compile Target ================================== -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
The "compile" target transforms source files (from your "src" directory)
|
||||||
|
into object files in the appropriate location in the build directory.
|
||||||
|
This example assumes that you will be including your classes in an
|
||||||
|
unpacked directory hierarchy under "/WEB-INF/classes".
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<target name="compile" depends="prepare"
|
||||||
|
description="Compile Java sources">
|
||||||
|
|
||||||
|
<!-- Compile Java classes as necessary -->
|
||||||
|
<mkdir dir="${build.home}/WEB-INF/classes"/>
|
||||||
|
<javac srcdir="${src.home}"
|
||||||
|
destdir="${build.home}/WEB-INF/classes"
|
||||||
|
debug="${compile.debug}"
|
||||||
|
deprecation="${compile.deprecation}"
|
||||||
|
optimize="${compile.optimize}">
|
||||||
|
<classpath refid="compile.classpath"/>
|
||||||
|
</javac>
|
||||||
|
|
||||||
|
<!-- Copy application resources -->
|
||||||
|
<copy todir="${build.home}/WEB-INF/classes">
|
||||||
|
<fileset dir="${src.home}" excludes="**/*.java"/>
|
||||||
|
</copy>
|
||||||
|
|
||||||
|
</target>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ==================== Dist Target ===================================== -->
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
The "dist" target creates a binary distribution of your application
|
||||||
|
in a directory structure ready to be archived in a tar.gz or zip file.
|
||||||
|
Note that this target depends on two others:
|
||||||
|
|
||||||
|
* "compile" so that the entire web application (including external
|
||||||
|
dependencies) will have been assembled
|
||||||
|
|
||||||
|
* "javadoc" so that the application Javadocs will have been created
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<target name="dist" depends="compile,javadoc"
|
||||||
|
description="Create binary distribution">
|
||||||
|
|
||||||
|
<!-- Copy documentation subdirectories -->
|
||||||
|
<mkdir dir="${dist.home}/docs"/>
|
||||||
|
<copy todir="${dist.home}/docs">
|
||||||
|
<fileset dir="${docs.home}"/>
|
||||||
|
</copy>
|
||||||
|
|
||||||
|
<!-- Create application JAR file -->
|
||||||
|
<jar jarfile="${dist.home}/${app.name}-${app.version}.war"
|
||||||
|
basedir="${build.home}"/>
|
||||||
|
|
||||||
|
<!-- Copy additional files to ${dist.home} as necessary -->
|
||||||
|
|
||||||
|
</target>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ==================== Install Target ================================== -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
The "install" target tells the specified Tomcat installation to dynamically
|
||||||
|
install this web application and make it available for execution. It does
|
||||||
|
*not* cause the existence of this web application to be remembered across
|
||||||
|
Tomcat restarts; if you restart the server, you will need to re-install all
|
||||||
|
this web application.
|
||||||
|
|
||||||
|
If you have already installed this application, and simply want Tomcat to
|
||||||
|
recognize that you have updated Java classes (or the web.xml file), use the
|
||||||
|
"reload" target instead.
|
||||||
|
|
||||||
|
NOTE: This target will only succeed if it is run from the same server that
|
||||||
|
Tomcat is running on.
|
||||||
|
|
||||||
|
NOTE: This is the logical opposite of the "remove" target.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<target name="install" depends="compile"
|
||||||
|
description="Install application to servlet container">
|
||||||
|
|
||||||
|
<deploy url="${manager.url}"
|
||||||
|
username="${manager.username}"
|
||||||
|
password="${manager.password}"
|
||||||
|
path="${app.path}"
|
||||||
|
localWar="file://${build.home}"/>
|
||||||
|
|
||||||
|
</target>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ==================== Javadoc Target ================================== -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
The "javadoc" target creates Javadoc API documentation for the Java
|
||||||
|
classes included in your application. Normally, this is only required
|
||||||
|
when preparing a distribution release, but is available as a separate
|
||||||
|
target in case the developer wants to create Javadocs independently.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<target name="javadoc" depends="compile"
|
||||||
|
description="Create Javadoc API documentation">
|
||||||
|
|
||||||
|
<mkdir dir="${dist.home}/docs/api"/>
|
||||||
|
<javadoc sourcepath="${src.home}"
|
||||||
|
destdir="${dist.home}/docs/api"
|
||||||
|
packagenames="*">
|
||||||
|
<classpath refid="compile.classpath"/>
|
||||||
|
</javadoc>
|
||||||
|
|
||||||
|
</target>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ====================== List Target =================================== -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
The "list" target asks the specified Tomcat installation to list the
|
||||||
|
currently running web applications, either loaded at startup time or
|
||||||
|
installed dynamically. It is useful to determine whether or not the
|
||||||
|
application you are currently developing has been installed.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<target name="list"
|
||||||
|
description="List installed applications on servlet container">
|
||||||
|
|
||||||
|
<list url="${manager.url}"
|
||||||
|
username="${manager.username}"
|
||||||
|
password="${manager.password}"/>
|
||||||
|
|
||||||
|
</target>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ==================== Prepare Target ================================== -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
The "prepare" target is used to create the "build" destination directory,
|
||||||
|
and copy the static contents of your web application to it. If you need
|
||||||
|
to copy static files from external dependencies, you can customize the
|
||||||
|
contents of this task.
|
||||||
|
|
||||||
|
Normally, this task is executed indirectly when needed.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<target name="prepare">
|
||||||
|
|
||||||
|
<!-- Create build directories as needed -->
|
||||||
|
<mkdir dir="${build.home}"/>
|
||||||
|
<mkdir dir="${build.home}/WEB-INF"/>
|
||||||
|
<mkdir dir="${build.home}/WEB-INF/classes"/>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Copy static content of this web application -->
|
||||||
|
<copy todir="${build.home}">
|
||||||
|
<fileset dir="${web.home}"/>
|
||||||
|
</copy>
|
||||||
|
|
||||||
|
<!-- Copy external dependencies as required -->
|
||||||
|
<!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** -->
|
||||||
|
<mkdir dir="${build.home}/WEB-INF/lib"/>
|
||||||
|
<!--
|
||||||
|
<copy todir="${build.home}/WEB-INF/lib" file="${foo.jar}"/>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Copy static files from external dependencies as needed -->
|
||||||
|
<!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** -->
|
||||||
|
|
||||||
|
</target>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ==================== Reload Target =================================== -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
The "reload" signals the specified application Tomcat to shut itself down
|
||||||
|
and reload. This can be useful when the web application context is not
|
||||||
|
reloadable and you have updated classes or property files in the
|
||||||
|
/WEB-INF/classes directory or when you have added or updated jar files in the
|
||||||
|
/WEB-INF/lib directory.
|
||||||
|
|
||||||
|
NOTE: The /WEB-INF/web.xml web application configuration file is not reread
|
||||||
|
on a reload. If you have made changes to your web.xml file you must stop
|
||||||
|
then start the web application.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<target name="reload" depends="compile"
|
||||||
|
description="Reload application on servlet container">
|
||||||
|
|
||||||
|
<reload url="${manager.url}"
|
||||||
|
username="${manager.username}"
|
||||||
|
password="${manager.password}"
|
||||||
|
path="${app.path}"/>
|
||||||
|
|
||||||
|
</target>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ==================== Remove Target =================================== -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
The "remove" target tells the specified Tomcat installation to dynamically
|
||||||
|
remove this web application from service.
|
||||||
|
|
||||||
|
NOTE: This is the logical opposite of the "install" target.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<target name="remove"
|
||||||
|
description="Remove application on servlet container">
|
||||||
|
|
||||||
|
<undeploy url="${manager.url}"
|
||||||
|
username="${manager.username}"
|
||||||
|
password="${manager.password}"
|
||||||
|
path="${app.path}"/>
|
||||||
|
|
||||||
|
</target>
|
||||||
|
|
||||||
|
|
||||||
|
</project>
|
||||||
@ -0,0 +1,279 @@
|
|||||||
|
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (7.0.108) - Deployment</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">
|
||||||
|
.noPrint {display: none;}
|
||||||
|
td#mainBody {width: 100%;}
|
||||||
|
</style><style type="text/css">
|
||||||
|
code {background-color:rgb(224,255,255);padding:0 0.1em;}
|
||||||
|
code.attributeName, code.propertyName {background-color:transparent;}
|
||||||
|
|
||||||
|
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
table *:not(table) {
|
||||||
|
/* Prevent border-collapsing for table child elements like <div> */
|
||||||
|
border-collapse: separate;
|
||||||
|
}
|
||||||
|
|
||||||
|
th {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
div.codeBox {
|
||||||
|
overflow: auto;
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
div.codeBox pre {
|
||||||
|
margin: 0;
|
||||||
|
padding: 4px;
|
||||||
|
border: 1px solid #999;
|
||||||
|
border-radius: 5px;
|
||||||
|
background-color: #eff8ff;
|
||||||
|
display: table; /* To prevent <pre>s from taking the complete available width. */
|
||||||
|
/*
|
||||||
|
When it is officially supported, use the following CSS instead of display: table
|
||||||
|
to prevent big <pre>s from exceeding the browser window:
|
||||||
|
max-width: available;
|
||||||
|
width: min-content;
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
div.codeBox pre.wrap {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
table.defaultTable tr, table.detail-table tr {
|
||||||
|
border: 1px solid #CCC;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {
|
||||||
|
background-color: #FAFBFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {
|
||||||
|
background-color: #EEEFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable th, table.detail-table th {
|
||||||
|
background-color: #88b;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {
|
||||||
|
padding: 5px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
p.notice {
|
||||||
|
border: 1px solid rgb(255, 0, 0);
|
||||||
|
background-color: rgb(238, 238, 238);
|
||||||
|
color: rgb(0, 51, 102);
|
||||||
|
padding: 0.5em;
|
||||||
|
margin: 1em 2em 1em 1em;
|
||||||
|
}
|
||||||
|
</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="https://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="
|
||||||
|
The Apache Tomcat Servlet/JSP Container
|
||||||
|
" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.108, Jan 28 2021</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">App Dev Guide Home</a></li><li><a href="https://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Deployment</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
<ul><li><a href="#Background">Background</a></li><li><a href="#Standard_Directory_Layout">Standard Directory Layout</a></li><li><a href="#Shared_Library_Files">Shared Library Files</a></li><li><a href="#Web_Application_Deployment_Descriptor">Web Application Deployment Descriptor</a></li><li><a href="#Tomcat_Context_Descriptor">Tomcat Context Descriptor</a></li><li><a href="#Deployment_With_Tomcat">Deployment With Tomcat</a></li></ul>
|
||||||
|
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Background"><strong>Background</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>Before describing how to organize your source code directories,
|
||||||
|
it is useful to examine the runtime organization of a web application.
|
||||||
|
Prior to the Servlet API Specification, version 2.2, there was little
|
||||||
|
consistency between server platforms. However, servers that conform
|
||||||
|
to the 2.2 (or later) specification are required to accept a
|
||||||
|
<em>Web Application Archive</em> in a standard format, which is discussed
|
||||||
|
further below.</p>
|
||||||
|
|
||||||
|
<p>A web application is defined as a hierarchy of directories and files
|
||||||
|
in a standard layout. Such a hierarchy can be accessed in its "unpacked"
|
||||||
|
form, where each directory and file exists in the filesystem separately,
|
||||||
|
or in a "packed" form known as a Web ARchive, or WAR file. The former format
|
||||||
|
is more useful during development, while the latter is used when you
|
||||||
|
distribute your application to be installed.</p>
|
||||||
|
|
||||||
|
<p>The top-level directory of your web application hierarchy is also the
|
||||||
|
<em>document root</em> of your application. Here, you will place the HTML
|
||||||
|
files and JSP pages that comprise your application's user interface. When the
|
||||||
|
system administrator deploys your application into a particular server, he
|
||||||
|
or she assigns a <em>context path</em> to your application (a later section
|
||||||
|
of this manual describes deployment on Tomcat). Thus, if the
|
||||||
|
system administrator assigns your application to the context path
|
||||||
|
<code>/catalog</code>, then a request URI referring to
|
||||||
|
<code>/catalog/index.html</code> will retrieve the <code>index.html</code>
|
||||||
|
file from your document root.</p>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Standard Directory Layout"><!--()--></a><a name="Standard_Directory_Layout"><strong>Standard Directory Layout</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>To facilitate creation of a Web Application Archive file in the required
|
||||||
|
format, it is convenient to arrange the "executable" files of your web
|
||||||
|
application (that is, the files that Tomcat actually uses when executing
|
||||||
|
your app) in the same organization as required by the WAR format itself.
|
||||||
|
To do this, you will end up with the following contents in your
|
||||||
|
application's "document root" directory:</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>*.html, *.jsp, etc.</strong> - The HTML and JSP pages, along
|
||||||
|
with other files that must be visible to the client browser (such as
|
||||||
|
JavaScript, stylesheet files, and images) for your application.
|
||||||
|
In larger applications you may choose to divide these files into
|
||||||
|
a subdirectory hierarchy, but for smaller apps, it is generally
|
||||||
|
much simpler to maintain only a single directory for these files.
|
||||||
|
<br><br></li>
|
||||||
|
<li><strong>/WEB-INF/web.xml</strong> - The <em>Web Application Deployment
|
||||||
|
Descriptor</em> for your application. This is an XML file describing
|
||||||
|
the servlets and other components that make up your application,
|
||||||
|
along with any initialization parameters and container-managed
|
||||||
|
security constraints that you want the server to enforce for you.
|
||||||
|
This file is discussed in more detail in the following subsection.
|
||||||
|
<br><br></li>
|
||||||
|
<li><strong>/WEB-INF/classes/</strong> - This directory contains any Java
|
||||||
|
class files (and associated resources) required for your application,
|
||||||
|
including both servlet and non-servlet classes, that are not combined
|
||||||
|
into JAR files. If your classes are organized into Java packages,
|
||||||
|
you must reflect this in the directory hierarchy under
|
||||||
|
<code>/WEB-INF/classes/</code>. For example, a Java class named
|
||||||
|
<code>com.mycompany.mypackage.MyServlet</code>
|
||||||
|
would need to be stored in a file named
|
||||||
|
<code>/WEB-INF/classes/com/mycompany/mypackage/MyServlet.class</code>.
|
||||||
|
<br><br></li>
|
||||||
|
<li><strong>/WEB-INF/lib/</strong> - This directory contains JAR files that
|
||||||
|
contain Java class files (and associated resources) required for your
|
||||||
|
application, such as third party class libraries or JDBC drivers.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>When you install an application into Tomcat (or any other 2.2 or later
|
||||||
|
Servlet container), the classes in the <code>WEB-INF/classes/</code>
|
||||||
|
directory, as well as all classes in JAR files found in the
|
||||||
|
<code>WEB-INF/lib/</code> directory, are made visible to other classes
|
||||||
|
within your particular web application. Thus, if
|
||||||
|
you include all of the required library classes in one of these places (be
|
||||||
|
sure to check licenses for redistribution rights for any third party libraries
|
||||||
|
you utilize), you will simplify the installation of your web application --
|
||||||
|
no adjustment to the system class path (or installation of global library
|
||||||
|
files in your server) will be necessary.</p>
|
||||||
|
|
||||||
|
<p>Much of this information was extracted from Chapter 9 of the Servlet
|
||||||
|
API Specification, version 2.3, which you should consult for more details.</p>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Shared Library Files"><!--()--></a><a name="Shared_Library_Files"><strong>Shared Library Files</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>Like most servlet containers, Tomcat also supports mechanisms to install
|
||||||
|
library JAR files (or unpacked classes) once, and make them visible to all
|
||||||
|
installed web applications (without having to be included inside the web
|
||||||
|
application itself). The details of how Tomcat locates and shares such
|
||||||
|
classes are described in the
|
||||||
|
<a href="../class-loader-howto.html">Class Loader HOW-TO</a> documentation.
|
||||||
|
The location commonly used within a Tomcat installation for shared code is
|
||||||
|
<strong>$CATALINA_HOME/lib</strong>. JAR files placed here are visible both to
|
||||||
|
web applications and internal Tomcat code. This is a good place to put JDBC
|
||||||
|
drivers that are required for both your application or internal Tomcat use
|
||||||
|
(such as for a DataSourceRealm).</p>
|
||||||
|
|
||||||
|
<p>Out of the box, a standard Tomcat installation includes a variety
|
||||||
|
of pre-installed shared library files, including:</p>
|
||||||
|
<ul>
|
||||||
|
<li>The <em>Servlet 3.0</em> and <em>JSP 2.2</em> APIs that are fundamental
|
||||||
|
to writing servlets and JavaServer Pages.<br><br></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Web Application Deployment Descriptor"><!--()--></a><a name="Web_Application_Deployment_Descriptor"><strong>Web Application Deployment Descriptor</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>As mentioned above, the <code>/WEB-INF/web.xml</code> file contains the
|
||||||
|
Web Application Deployment Descriptor for your application. As the filename
|
||||||
|
extension implies, this file is an XML document, and defines everything about
|
||||||
|
your application that a server needs to know (except the <em>context path</em>,
|
||||||
|
which is assigned by the system administrator when the application is
|
||||||
|
deployed).</p>
|
||||||
|
|
||||||
|
<p>The complete syntax and semantics for the deployment descriptor is defined
|
||||||
|
in Chapter 13 of the Servlet API Specification, version 2.3. Over time, it
|
||||||
|
is expected that development tools will be provided that create and edit the
|
||||||
|
deployment descriptor for you. In the meantime, to provide a starting point,
|
||||||
|
a <a href="web.xml.txt" target="_blank">basic web.xml file</a>
|
||||||
|
is provided. This file includes comments that describe the purpose of each
|
||||||
|
included element.</p>
|
||||||
|
|
||||||
|
<p><strong>NOTE</strong> - The Servlet Specification includes a Document
|
||||||
|
Type Descriptor (DTD) for the web application deployment descriptor, and
|
||||||
|
Tomcat enforces the rules defined here when processing your application's
|
||||||
|
<code>/WEB-INF/web.xml</code> file. In particular, you <strong>must</strong>
|
||||||
|
enter your descriptor elements (such as <code><filter></code>,
|
||||||
|
<code><servlet></code>, and <code><servlet-mapping></code> in
|
||||||
|
the order defined by the DTD (see Section 13.3).</p>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat Context Descriptor"><!--()--></a><a name="Tomcat_Context_Descriptor"><strong>Tomcat Context Descriptor</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>A /META-INF/context.xml file can be used to define Tomcat specific
|
||||||
|
configuration options, such as an access log, data sources, session manager
|
||||||
|
configuration and more. This XML file must contain one Context element, which
|
||||||
|
will be considered as if it was the child of the Host element corresponding
|
||||||
|
to the Host to which the web application is being deployed. The
|
||||||
|
<a href="../config/context.html">Tomcat configuration documentation</a> contains
|
||||||
|
information on the Context element.</p>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deployment With Tomcat"><!--()--></a><a name="Deployment_With_Tomcat"><strong>Deployment With Tomcat</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p><em>The description below uses the variable name $CATALINA_BASE to refer the
|
||||||
|
base directory against which most relative paths are resolved. If you have
|
||||||
|
not configured Tomcat for multiple instances by setting a CATALINA_BASE
|
||||||
|
directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME,
|
||||||
|
the directory into which you have installed Tomcat.</em></p>
|
||||||
|
|
||||||
|
<p>In order to be executed, a web application must be deployed on
|
||||||
|
a servlet container. This is true even during development.
|
||||||
|
We will describe using Tomcat to provide the execution environment.
|
||||||
|
A web application can be deployed in Tomcat by one of the following
|
||||||
|
approaches:</p>
|
||||||
|
<ul>
|
||||||
|
<li><em>Copy unpacked directory hierarchy into a subdirectory in directory
|
||||||
|
<code>$CATALINA_BASE/webapps/</code></em>. Tomcat will assign a
|
||||||
|
context path to your application based on the subdirectory name you
|
||||||
|
choose. We will use this technique in the <code>build.xml</code>
|
||||||
|
file that we construct, because it is the quickest and easiest approach
|
||||||
|
during development. Be sure to restart Tomcat after installing or
|
||||||
|
updating your application.
|
||||||
|
<br><br></li>
|
||||||
|
<li><em>Copy the web application archive file into directory
|
||||||
|
<code>$CATALINA_BASE/webapps/</code></em>. When Tomcat is started, it will
|
||||||
|
automatically expand the web application archive file into its unpacked
|
||||||
|
form, and execute the application that way. This approach would typically
|
||||||
|
be used to install an additional application, provided by a third party
|
||||||
|
vendor or by your internal development staff, into an existing
|
||||||
|
Tomcat installation. <strong>NOTE</strong> - If you use this approach,
|
||||||
|
and wish to update your application later, you must both replace the
|
||||||
|
web application archive file <strong>AND</strong> delete the expanded
|
||||||
|
directory that Tomcat created, and then restart Tomcat, in order to reflect
|
||||||
|
your changes.
|
||||||
|
<br><br></li>
|
||||||
|
<li><em>Use the Tomcat "Manager" web application to deploy and undeploy
|
||||||
|
web applications</em>. Tomcat includes a web application, deployed
|
||||||
|
by default on context path <code>/manager</code>, that allows you to
|
||||||
|
deploy and undeploy applications on a running Tomcat server without
|
||||||
|
restarting it. See <a href="../manager-howto.html">Manager App HOW-TO</a>
|
||||||
|
for more information on using the Manager web application.<br><br></li>
|
||||||
|
<li><em>Use "Manager" Ant Tasks In Your Build Script</em>. Tomcat
|
||||||
|
includes a set of custom task definitions for the <code>Ant</code>
|
||||||
|
build tool that allow you to automate the execution of commands to the
|
||||||
|
"Manager" web application. These tasks are used in the Tomcat deployer.
|
||||||
|
<br><br></li>
|
||||||
|
<li><em>Use the Tomcat Deployer</em>. Tomcat includes a packaged tool
|
||||||
|
bundling the Ant tasks, and can be used to automatically precompile JSPs
|
||||||
|
which are part of the web application before deployment to the server.
|
||||||
|
<br><br></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>Deploying your app on other servlet containers will be specific to each
|
||||||
|
container, but all containers compatible with the Servlet API Specification
|
||||||
|
(version 2.2 or later) are required to accept a web application archive file.
|
||||||
|
Note that other containers are <strong>NOT</strong> required to accept an
|
||||||
|
unpacked directory structure (as Tomcat does), or to provide mechanisms for
|
||||||
|
shared library files, but these features are commonly available.</p>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>
|
||||||
|
Copyright © 1999-2021, Apache Software Foundation
|
||||||
|
</em></font></div></td></tr></table></body></html>
|
||||||
122
centos8_tomcat/apache-tomcat-7.0.108/temp/docs/appdev/index.html
Normal file
122
centos8_tomcat/apache-tomcat-7.0.108/temp/docs/appdev/index.html
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (7.0.108) - Table of Contents</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">
|
||||||
|
.noPrint {display: none;}
|
||||||
|
td#mainBody {width: 100%;}
|
||||||
|
</style><style type="text/css">
|
||||||
|
code {background-color:rgb(224,255,255);padding:0 0.1em;}
|
||||||
|
code.attributeName, code.propertyName {background-color:transparent;}
|
||||||
|
|
||||||
|
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
table *:not(table) {
|
||||||
|
/* Prevent border-collapsing for table child elements like <div> */
|
||||||
|
border-collapse: separate;
|
||||||
|
}
|
||||||
|
|
||||||
|
th {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
div.codeBox {
|
||||||
|
overflow: auto;
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
div.codeBox pre {
|
||||||
|
margin: 0;
|
||||||
|
padding: 4px;
|
||||||
|
border: 1px solid #999;
|
||||||
|
border-radius: 5px;
|
||||||
|
background-color: #eff8ff;
|
||||||
|
display: table; /* To prevent <pre>s from taking the complete available width. */
|
||||||
|
/*
|
||||||
|
When it is officially supported, use the following CSS instead of display: table
|
||||||
|
to prevent big <pre>s from exceeding the browser window:
|
||||||
|
max-width: available;
|
||||||
|
width: min-content;
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
div.codeBox pre.wrap {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
table.defaultTable tr, table.detail-table tr {
|
||||||
|
border: 1px solid #CCC;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {
|
||||||
|
background-color: #FAFBFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {
|
||||||
|
background-color: #EEEFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable th, table.detail-table th {
|
||||||
|
background-color: #88b;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {
|
||||||
|
padding: 5px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
p.notice {
|
||||||
|
border: 1px solid rgb(255, 0, 0);
|
||||||
|
background-color: rgb(238, 238, 238);
|
||||||
|
color: rgb(0, 51, 102);
|
||||||
|
padding: 0.5em;
|
||||||
|
margin: 1em 2em 1em 1em;
|
||||||
|
}
|
||||||
|
</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="https://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="
|
||||||
|
The Apache Tomcat Servlet/JSP Container
|
||||||
|
" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.108, Jan 28 2021</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">App Dev Guide Home</a></li><li><a href="https://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Table of Contents</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Preface"><strong>Preface</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>This manual includes contributions from many members of the Tomcat Project
|
||||||
|
developer community. The following authors have provided significant content:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>Craig R. McClanahan
|
||||||
|
(<a href="mailto:craigmcc@apache.org">craigmcc@apache.org</a>)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>The information presented is divided into the following sections:</p>
|
||||||
|
<ul>
|
||||||
|
<li><a href="introduction.html"><strong>Introduction</strong></a> -
|
||||||
|
Briefly describes the information covered here, with
|
||||||
|
links and references to other sources of information.</li>
|
||||||
|
<li><a href="installation.html"><strong>Installation</strong></a> -
|
||||||
|
Covers acquiring and installing the required software
|
||||||
|
components to use Tomcat for web application development.</li>
|
||||||
|
<li><a href="deployment.html"><strong>Deployment Organization</strong></a> -
|
||||||
|
Discusses the standard directory layout for a web application
|
||||||
|
(defined in the Servlet API Specification), the Web Application
|
||||||
|
Deployment Descriptor, and options for integration with Tomcat
|
||||||
|
in your development environment.</li>
|
||||||
|
<li><a href="source.html"><strong>Source Organization</strong></a> -
|
||||||
|
Describes a useful approach to organizing the source code
|
||||||
|
directories for your project, and introduces the
|
||||||
|
<code>build.xml</code> used by Ant to manage compilation.</li>
|
||||||
|
<li><a href="processes.html"><strong>Development Processes</strong></a> -
|
||||||
|
Provides brief descriptions of typical development processes
|
||||||
|
utilizing the recommended deployment and source organizations.</li>
|
||||||
|
<li><a href="sample/" target="_blank"><strong>Example Application</strong></a> -
|
||||||
|
This directory contains a very simple, but functionally complete,
|
||||||
|
"Hello, World" application built according to the principles
|
||||||
|
described in this manual. You can use this application to
|
||||||
|
practice using the described techniques.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>
|
||||||
|
Copyright © 1999-2021, Apache Software Foundation
|
||||||
|
</em></font></div></td></tr></table></body></html>
|
||||||
@ -0,0 +1,150 @@
|
|||||||
|
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (7.0.108) - Installation</title><meta name="author" content="Craig R. McClanahan"><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">
|
||||||
|
.noPrint {display: none;}
|
||||||
|
td#mainBody {width: 100%;}
|
||||||
|
</style><style type="text/css">
|
||||||
|
code {background-color:rgb(224,255,255);padding:0 0.1em;}
|
||||||
|
code.attributeName, code.propertyName {background-color:transparent;}
|
||||||
|
|
||||||
|
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
table *:not(table) {
|
||||||
|
/* Prevent border-collapsing for table child elements like <div> */
|
||||||
|
border-collapse: separate;
|
||||||
|
}
|
||||||
|
|
||||||
|
th {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
div.codeBox {
|
||||||
|
overflow: auto;
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
div.codeBox pre {
|
||||||
|
margin: 0;
|
||||||
|
padding: 4px;
|
||||||
|
border: 1px solid #999;
|
||||||
|
border-radius: 5px;
|
||||||
|
background-color: #eff8ff;
|
||||||
|
display: table; /* To prevent <pre>s from taking the complete available width. */
|
||||||
|
/*
|
||||||
|
When it is officially supported, use the following CSS instead of display: table
|
||||||
|
to prevent big <pre>s from exceeding the browser window:
|
||||||
|
max-width: available;
|
||||||
|
width: min-content;
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
div.codeBox pre.wrap {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
table.defaultTable tr, table.detail-table tr {
|
||||||
|
border: 1px solid #CCC;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {
|
||||||
|
background-color: #FAFBFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {
|
||||||
|
background-color: #EEEFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable th, table.detail-table th {
|
||||||
|
background-color: #88b;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {
|
||||||
|
padding: 5px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
p.notice {
|
||||||
|
border: 1px solid rgb(255, 0, 0);
|
||||||
|
background-color: rgb(238, 238, 238);
|
||||||
|
color: rgb(0, 51, 102);
|
||||||
|
padding: 0.5em;
|
||||||
|
margin: 1em 2em 1em 1em;
|
||||||
|
}
|
||||||
|
</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="https://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="
|
||||||
|
The Apache Tomcat Servlet/JSP Container
|
||||||
|
" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.108, Jan 28 2021</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">App Dev Guide Home</a></li><li><a href="https://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Installation</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Installation"><strong>Installation</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>In order to use Tomcat for developing web applications, you must first
|
||||||
|
install it (and the software it depends on). The required steps are outlined
|
||||||
|
in the following subsections.</p>
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JDK"><strong>JDK</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>Tomcat 7.0 was designed to run on Java 6 or later.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>Compatible JDKs for many platforms (or links to where they can be found)
|
||||||
|
are available at
|
||||||
|
<a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">http://www.oracle.com/technetwork/java/javase/downloads/index.html</a>.</p>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat"><strong>Tomcat</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>Binary downloads of the <strong>Tomcat</strong> server are available from
|
||||||
|
<a href="https://tomcat.apache.org/">https://tomcat.apache.org/</a>.
|
||||||
|
This manual assumes you are using the most recent release
|
||||||
|
of Tomcat 7. Detailed instructions for downloading and installing
|
||||||
|
Tomcat are available <a href="../setup.html">here</a>.</p>
|
||||||
|
|
||||||
|
<p>In the remainder of this manual, example shell scripts assume that you have
|
||||||
|
set an environment variable <code>CATALINA_HOME</code> that contains the
|
||||||
|
pathname to the directory in which Tomcat has been installed. Optionally, if
|
||||||
|
Tomcat has been configured for multiple instances, each instance will have its
|
||||||
|
own <code>CATALINA_BASE</code> configured.</p>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Ant"><strong>Ant</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>Binary downloads of the <strong>Ant</strong> build tool are available from
|
||||||
|
<a href="https://ant.apache.org/">https://ant.apache.org/</a>.
|
||||||
|
This manual assumes you are using Ant 1.8 or later. The instructions may
|
||||||
|
also be compatible with other versions, but this has not been tested.</p>
|
||||||
|
|
||||||
|
<p>Download and install Ant.
|
||||||
|
Then, add the <code>bin</code> directory of the Ant distribution to your
|
||||||
|
<code>PATH</code> environment variable, following the standard practices for
|
||||||
|
your operating system platform. Once you have done this, you will be able to
|
||||||
|
execute the <code>ant</code> shell command directly.</p>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="CVS"><strong>CVS</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>Besides the required tools described above, you are strongly encouraged
|
||||||
|
to download and install a <em>source code control</em> system, such as the
|
||||||
|
<strong>Concurrent Version System</strong> (CVS), to maintain historical
|
||||||
|
versions of the source files that make up your web application. Besides
|
||||||
|
the server, you will also need appropriate client
|
||||||
|
tools to check out source code files, and check in modified versions.</p>
|
||||||
|
|
||||||
|
<p>Detailed instructions for installing and using source code control
|
||||||
|
applications is beyond the scope of this manual. However, CVS server and
|
||||||
|
client tools for many platforms (along with documentation) can be downloaded
|
||||||
|
from <a href="http://www.cvshome.org/">http://www.cvshome.org/</a>.</p>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
|
||||||
|
|
||||||
|
</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>
|
||||||
|
Copyright © 1999-2021, Apache Software Foundation
|
||||||
|
</em></font></div></td></tr></table></body></html>
|
||||||
@ -0,0 +1,135 @@
|
|||||||
|
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (7.0.108) - Introduction</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">
|
||||||
|
.noPrint {display: none;}
|
||||||
|
td#mainBody {width: 100%;}
|
||||||
|
</style><style type="text/css">
|
||||||
|
code {background-color:rgb(224,255,255);padding:0 0.1em;}
|
||||||
|
code.attributeName, code.propertyName {background-color:transparent;}
|
||||||
|
|
||||||
|
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
table *:not(table) {
|
||||||
|
/* Prevent border-collapsing for table child elements like <div> */
|
||||||
|
border-collapse: separate;
|
||||||
|
}
|
||||||
|
|
||||||
|
th {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
div.codeBox {
|
||||||
|
overflow: auto;
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
div.codeBox pre {
|
||||||
|
margin: 0;
|
||||||
|
padding: 4px;
|
||||||
|
border: 1px solid #999;
|
||||||
|
border-radius: 5px;
|
||||||
|
background-color: #eff8ff;
|
||||||
|
display: table; /* To prevent <pre>s from taking the complete available width. */
|
||||||
|
/*
|
||||||
|
When it is officially supported, use the following CSS instead of display: table
|
||||||
|
to prevent big <pre>s from exceeding the browser window:
|
||||||
|
max-width: available;
|
||||||
|
width: min-content;
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
div.codeBox pre.wrap {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
table.defaultTable tr, table.detail-table tr {
|
||||||
|
border: 1px solid #CCC;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {
|
||||||
|
background-color: #FAFBFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {
|
||||||
|
background-color: #EEEFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable th, table.detail-table th {
|
||||||
|
background-color: #88b;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {
|
||||||
|
padding: 5px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
p.notice {
|
||||||
|
border: 1px solid rgb(255, 0, 0);
|
||||||
|
background-color: rgb(238, 238, 238);
|
||||||
|
color: rgb(0, 51, 102);
|
||||||
|
padding: 0.5em;
|
||||||
|
margin: 1em 2em 1em 1em;
|
||||||
|
}
|
||||||
|
</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="https://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="
|
||||||
|
The Apache Tomcat Servlet/JSP Container
|
||||||
|
" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.108, Jan 28 2021</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">App Dev Guide Home</a></li><li><a href="https://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Introduction</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>Congratulations! You've decided to (or been told to) learn how to
|
||||||
|
build web applications using servlets and JSP pages, and picked the
|
||||||
|
Tomcat server to use for your learning and development. But now what
|
||||||
|
do you do?</p>
|
||||||
|
|
||||||
|
<p>This manual is a primer covering the basic steps of using Tomcat to
|
||||||
|
set up a development environment, organize your source code, and then
|
||||||
|
build and test your application. It does not discuss architectures or
|
||||||
|
recommended coding practices for web application development,
|
||||||
|
or provide in depth instructions on operating the development
|
||||||
|
tools that are discussed. References to sources of additional information
|
||||||
|
are included in the following subsections.</p>
|
||||||
|
|
||||||
|
<p>The discussion in this manual is aimed at developers who will be using
|
||||||
|
a text editor along with command line tools to develop and debug their
|
||||||
|
applications. As such, the recommendations are fairly generic – but you
|
||||||
|
should easily be able to apply them in either a Windows-based or Unix-based
|
||||||
|
development environment. If you are utilizing an Integrated Development
|
||||||
|
Environment (IDE) tool, you will need to adapt the advice given here to
|
||||||
|
the details of your particular environment.</p>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Links"><strong>Links</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>The following links provide access to selected sources of online
|
||||||
|
information, documentation, and software that is useful in developing
|
||||||
|
web applications with Tomcat.</p>
|
||||||
|
<ul>
|
||||||
|
<li><p><a href="https://jcp.org/aboutJava/communityprocess/mrel/jsr245/index.html">https://jcp.org/aboutJava/communityprocess/mrel/jsr245/</a> -
|
||||||
|
<i>JavaServer Pages (JSP) Specification, Version 2.2</i>. Describes
|
||||||
|
the programming environment provided by standard implementations
|
||||||
|
of the JavaServer Pages (JSP) technology. In conjunction with
|
||||||
|
the Servlet API Specification (see below), this document describes
|
||||||
|
what a portable API page is allowed to contain. Specific
|
||||||
|
information on scripting (Chapter 9), tag extensions (Chapter 7),
|
||||||
|
and packaging JSP pages (Appendix A) is useful. The Javadoc
|
||||||
|
API Documentation is included in the specification, and with the
|
||||||
|
Tomcat download.</p></li>
|
||||||
|
<li><p><a href="https://jcp.org/aboutJava/communityprocess/mrel/jsr315/index.html">https://jcp.org/aboutJava/communityprocess/mrel/jsr315/</a> -
|
||||||
|
<i>Servlet API Specification, Version 3.0</i>. Describes the
|
||||||
|
programming environment that must be provided by all servlet
|
||||||
|
containers conforming to this specification. In particular, you
|
||||||
|
will need this document to understand the web application
|
||||||
|
directory structure and deployment file (Chapter 10), methods of
|
||||||
|
mapping request URIs to servlets (Chapter 12), container managed
|
||||||
|
security (Chapter 13), and the syntax of the <code>web.xml</code>
|
||||||
|
Web Application Deployment Descriptor (Chapter 14). The Javadoc
|
||||||
|
API Documentation is included in the specification, and with the
|
||||||
|
Tomcat download.</p></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>
|
||||||
|
Copyright © 1999-2021, Apache Software Foundation
|
||||||
|
</em></font></div></td></tr></table></body></html>
|
||||||
@ -0,0 +1,350 @@
|
|||||||
|
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (7.0.108) - Development Processes</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">
|
||||||
|
.noPrint {display: none;}
|
||||||
|
td#mainBody {width: 100%;}
|
||||||
|
</style><style type="text/css">
|
||||||
|
code {background-color:rgb(224,255,255);padding:0 0.1em;}
|
||||||
|
code.attributeName, code.propertyName {background-color:transparent;}
|
||||||
|
|
||||||
|
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
table *:not(table) {
|
||||||
|
/* Prevent border-collapsing for table child elements like <div> */
|
||||||
|
border-collapse: separate;
|
||||||
|
}
|
||||||
|
|
||||||
|
th {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
div.codeBox {
|
||||||
|
overflow: auto;
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
div.codeBox pre {
|
||||||
|
margin: 0;
|
||||||
|
padding: 4px;
|
||||||
|
border: 1px solid #999;
|
||||||
|
border-radius: 5px;
|
||||||
|
background-color: #eff8ff;
|
||||||
|
display: table; /* To prevent <pre>s from taking the complete available width. */
|
||||||
|
/*
|
||||||
|
When it is officially supported, use the following CSS instead of display: table
|
||||||
|
to prevent big <pre>s from exceeding the browser window:
|
||||||
|
max-width: available;
|
||||||
|
width: min-content;
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
div.codeBox pre.wrap {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
table.defaultTable tr, table.detail-table tr {
|
||||||
|
border: 1px solid #CCC;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {
|
||||||
|
background-color: #FAFBFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {
|
||||||
|
background-color: #EEEFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable th, table.detail-table th {
|
||||||
|
background-color: #88b;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {
|
||||||
|
padding: 5px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
p.notice {
|
||||||
|
border: 1px solid rgb(255, 0, 0);
|
||||||
|
background-color: rgb(238, 238, 238);
|
||||||
|
color: rgb(0, 51, 102);
|
||||||
|
padding: 0.5em;
|
||||||
|
margin: 1em 2em 1em 1em;
|
||||||
|
}
|
||||||
|
</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="https://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="
|
||||||
|
The Apache Tomcat Servlet/JSP Container
|
||||||
|
" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.108, Jan 28 2021</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">App Dev Guide Home</a></li><li><a href="https://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Development Processes</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
<ul><li><a href="#Development_Processes">Development Processes</a><ol><li><a href="#One-Time_Setup_of_Ant_and_Tomcat_for_Development">One-Time Setup of Ant and Tomcat for Development</a></li><li><a href="#Create_Project_Source_Code_Directory">Create Project Source Code Directory</a></li><li><a href="#Edit_Source_Code_and_Pages">Edit Source Code and Pages</a></li><li><a href="#Build_the_Web_Application">Build the Web Application</a></li><li><a href="#Test_Your_Web_Application">Test Your Web Application</a></li><li><a href="#Creating_a_Release">Creating a Release</a></li></ol></li></ul>
|
||||||
|
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Development Processes"><!--()--></a><a name="Development_Processes"><strong>Development Processes</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>Although application development can take many forms, this manual proposes
|
||||||
|
a fairly generic process for creating web applications using Tomcat. The
|
||||||
|
following sections highlight the commands and tasks that you, as the developer
|
||||||
|
of the code, will perform. The same basic approach works when you have
|
||||||
|
multiple programmers involved, as long as you have an appropriate source code
|
||||||
|
control system and internal team rules about who is working on what parts
|
||||||
|
of the application at any given time.</p>
|
||||||
|
|
||||||
|
<p>The task descriptions below assume that you will be using CVS for source
|
||||||
|
code control, and that you have already configured access to the appropriate
|
||||||
|
CVS repository. Instructions for doing this are beyond the scope of this
|
||||||
|
manual. If you are using a different source code control environment, you
|
||||||
|
will need to figure out the corresponding commands for your system.</p>
|
||||||
|
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="One-Time Setup of Ant and Tomcat for Development"><!--()--></a><a name="One-Time_Setup_of_Ant_and_Tomcat_for_Development"><strong>One-Time Setup of Ant and Tomcat for Development</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>In order to take advantage of the special Ant tasks that interact with the
|
||||||
|
<em>Manager</em> web application, you need to perform the following tasks
|
||||||
|
once (no matter how many web applications you plan to develop).</p>
|
||||||
|
<ul>
|
||||||
|
<li><p><em>Configure the Ant custom tasks</em>. The implementation code for the
|
||||||
|
Ant custom tasks is in a JAR file named
|
||||||
|
<code>$CATALINA_HOME/lib/catalina-ant.jar</code>, which must be
|
||||||
|
copied in to the <code>lib</code> directory of your Ant installation.
|
||||||
|
</p></li>
|
||||||
|
<li><p><em>Define one or more Tomcat users</em>. The <em>Manager</em> web
|
||||||
|
application runs under a security constraint that requires a user to be
|
||||||
|
logged in, and have the security role <code>manager-script</code> assigned
|
||||||
|
to him or her. How such users are defined depends on which Realm you have
|
||||||
|
configured in Tomcat's <code>conf/server.xml</code> file -- see the
|
||||||
|
<a href="../realm-howto.html">Realm Configuration HOW-TO</a> for more
|
||||||
|
information. You may define any number of users (with any username
|
||||||
|
and password that you like) with the <code>manager-script</code> role.
|
||||||
|
</p></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Create Project Source Code Directory"><!--()--></a><a name="Create_Project_Source_Code_Directory"><strong>Create Project Source Code Directory</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>The first step is to create a new project source directory, and customize
|
||||||
|
the <code>build.xml</code> and <code>build.properties</code> files you will
|
||||||
|
be using. The directory structure is described in <a href="source.html">the
|
||||||
|
previous section</a>, or you can use the
|
||||||
|
<a href="sample/">sample application</a> as a starting point.</p>
|
||||||
|
|
||||||
|
<p>Create your project source directory, and define it within your CVS
|
||||||
|
repository. This might be done by a series of commands like this, where
|
||||||
|
<code>{project}</code> is the name under which your project should be
|
||||||
|
stored in the CVS repository, and {username} is your login username:</p>
|
||||||
|
<div class="codeBox"><pre><code>cd {my home directory}
|
||||||
|
mkdir myapp <-- Assumed "project source directory"
|
||||||
|
cd myapp
|
||||||
|
mkdir docs
|
||||||
|
mkdir src
|
||||||
|
mkdir web
|
||||||
|
mkdir web/WEB-INF
|
||||||
|
cvs import -m "Initial Project Creation" {project} \
|
||||||
|
{username} start</code></pre></div>
|
||||||
|
|
||||||
|
<p>Now, to verify that it was created correctly in CVS, we will perform a
|
||||||
|
checkout of the new project:</p>
|
||||||
|
<div class="codeBox"><pre><code>cd ..
|
||||||
|
mv myapp myapp.bu
|
||||||
|
cvs checkout {project}</code></pre></div>
|
||||||
|
|
||||||
|
<p>Next, you will need to create and check in an initial version of the
|
||||||
|
<code>build.xml</code> script to be used for development. For getting
|
||||||
|
started quickly and easily, base your <code>build.xml</code> on the
|
||||||
|
<a href="build.xml.txt">basic build.xml file</a>, included with this manual,
|
||||||
|
or code it from scratch.</p>
|
||||||
|
<div class="codeBox"><pre><code>cd {my home directory}
|
||||||
|
cd myapp
|
||||||
|
emacs build.xml <-- if you want a real editor :-)
|
||||||
|
cvs add build.xml
|
||||||
|
cvs commit</code></pre></div>
|
||||||
|
|
||||||
|
<p>Until you perform the CVS commit, your changes are local to your own
|
||||||
|
development directory. Committing makes those changes visible to other
|
||||||
|
developers on your team that are sharing the same CVS repository.</p>
|
||||||
|
|
||||||
|
<p>The next step is to customize the Ant <em>properties</em> that are
|
||||||
|
named in the <code>build.xml</code> script. This is done by creating a
|
||||||
|
file named <code>build.properties</code> in your project's top-level
|
||||||
|
directory. The supported properties are listed in the comments inside
|
||||||
|
the sample <code>build.xml</code> script. At a minimum, you will generally
|
||||||
|
need to define the <code>catalina.home</code> property defining where
|
||||||
|
Tomcat is installed, and the manager application username and password.
|
||||||
|
You might end up with something like this:</p>
|
||||||
|
<div class="codeBox"><pre><code># Context path to install this application on
|
||||||
|
app.path=/hello
|
||||||
|
|
||||||
|
# Tomcat 7 installation directory
|
||||||
|
catalina.home=/usr/local/apache-tomcat-7.0
|
||||||
|
|
||||||
|
# Manager webapp username and password
|
||||||
|
manager.username=myusername
|
||||||
|
manager.password=mypassword</code></pre></div>
|
||||||
|
|
||||||
|
<p>In general, you will <strong>not</strong> want to check the
|
||||||
|
<code>build.properties</code> file in to the CVS repository, because it
|
||||||
|
is unique to each developer's environment.</p>
|
||||||
|
|
||||||
|
<p>Now, create the initial version of the web application deployment
|
||||||
|
descriptor. You can base <code>web.xml</code> on the
|
||||||
|
<a href="web.xml.txt">basic web.xml file</a>, or code it from scratch.</p>
|
||||||
|
<div class="codeBox"><pre><code>cd {my home directory}
|
||||||
|
cd myapp/web/WEB-INF
|
||||||
|
emacs web.xml
|
||||||
|
cvs add web.xml
|
||||||
|
cvs commit</code></pre></div>
|
||||||
|
|
||||||
|
Note that this is only an example web.xml file. The full definition
|
||||||
|
of the deployment descriptor file is in the
|
||||||
|
<a href="https://wiki.apache.org/tomcat/Specifications">Servlet Specification.</a>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Edit Source Code and Pages"><!--()--></a><a name="Edit_Source_Code_and_Pages"><strong>Edit Source Code and Pages</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>The edit/build/test tasks will generally be your most common activities
|
||||||
|
during development and maintenance. The following general principles apply.
|
||||||
|
As described in <a href="source.html">Source Organization</a>, newly created
|
||||||
|
source files should be located in the appropriate subdirectory, under your
|
||||||
|
project source directory.</p>
|
||||||
|
|
||||||
|
<p>Whenever you wish to refresh your development directory to reflect the
|
||||||
|
work performed by other developers, you will ask CVS to do it for you:</p>
|
||||||
|
<div class="codeBox"><pre><code>cd {my home directory}
|
||||||
|
cd myapp
|
||||||
|
cvs update -dP</code></pre></div>
|
||||||
|
|
||||||
|
<p>To create a new file, go to the appropriate directory, create the file,
|
||||||
|
and register it with CVS. When you are satisfied with it's contents (after
|
||||||
|
building and testing is successful), commit the new file to the repository.
|
||||||
|
For example, to create a new JSP page:</p>
|
||||||
|
<div class="codeBox"><pre><code>cd {my home directory}
|
||||||
|
cd myapp/web <-- Ultimate destination is document root
|
||||||
|
emacs mypage.jsp
|
||||||
|
cvs add mypage.jsp
|
||||||
|
... build and test the application ...
|
||||||
|
cvs commit</code></pre></div>
|
||||||
|
|
||||||
|
<p>Java source code that is defined in packages must be organized in a
|
||||||
|
directory hierarchy (under the <strong>src/</strong> subdirectory) that
|
||||||
|
matches the package names. For example, a Java class named
|
||||||
|
<code>com.mycompany.mypackage.MyClass.java</code> should be stored in file
|
||||||
|
<code>src/com/mycompany/mypackage/MyClass.java</code>.
|
||||||
|
Whenever you create a new subdirectory, don't forget to
|
||||||
|
register it with CVS.</p>
|
||||||
|
|
||||||
|
<p>To edit an existing source file, you will generally just start editing
|
||||||
|
and testing, then commit the changed file when everything works. Although
|
||||||
|
CVS can be configured to required you to "check out" or "lock" a file you
|
||||||
|
are going to be modifying, this is generally not used.</p>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Build the Web Application"><!--()--></a><a name="Build_the_Web_Application"><strong>Build the Web Application</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>When you are ready to compile the application, issue the following
|
||||||
|
commands (generally, you will want a shell window open that is set to
|
||||||
|
the project source directory, so that only the last command is needed):</p>
|
||||||
|
<div class="codeBox"><pre><code>cd {my home directory}
|
||||||
|
cd myapp <-- Normally leave a window open here
|
||||||
|
ant</code></pre></div>
|
||||||
|
|
||||||
|
<p>The Ant tool will be execute the default "compile" target in your
|
||||||
|
<code>build.xml</code> file, which will compile any new or updated Java
|
||||||
|
code. If this is the first time you compile after a "build clean",
|
||||||
|
it will cause everything to be recompiled.</p>
|
||||||
|
|
||||||
|
<p>To force the recompilation of your entire application, do this instead:</p>
|
||||||
|
<div class="codeBox"><pre><code>cd {my home directory}
|
||||||
|
cd myapp
|
||||||
|
ant all</code></pre></div>
|
||||||
|
|
||||||
|
<p>This is a very good habit immediately before checking in changes, to
|
||||||
|
make sure that you have not introduced any subtle problems that Javac's
|
||||||
|
conditional checking did not catch.</p>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Test Your Web Application"><!--()--></a><a name="Test_Your_Web_Application"><strong>Test Your Web Application</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>To test your application, you will want to install it under Tomcat. The
|
||||||
|
quickest way to do that is to use the custom Ant tasks that are included in
|
||||||
|
the sample <code>build.xml</code> script. Using these commands might follow
|
||||||
|
a pattern like this:</p>
|
||||||
|
<ul>
|
||||||
|
<li><p><em>Start Tomcat if needed</em>. If Tomcat is not already running,
|
||||||
|
you will need to start it in the usual way.
|
||||||
|
</p></li>
|
||||||
|
<li><p><em>Compile your application</em>. Use the <code>ant compile</code>
|
||||||
|
command (or just <code>ant</code>, since this is the default). Make
|
||||||
|
sure that there are no compilation errors.
|
||||||
|
</p></li>
|
||||||
|
<li><p><em>Install the application</em>. Use the <code>ant install</code>
|
||||||
|
command. This tells Tomcat to immediately start running your app on
|
||||||
|
the context path defined in the <code>app.path</code> build property.
|
||||||
|
Tomcat does <strong>NOT</strong> have to be restarted for this to
|
||||||
|
take effect.
|
||||||
|
</p></li>
|
||||||
|
<li><p><em>Test the application</em>. Using your browser or other testing
|
||||||
|
tools, test the functionality of your application.
|
||||||
|
</p></li>
|
||||||
|
<li><p><em>Modify and rebuild as needed</em>. As you discover that changes
|
||||||
|
are required, make those changes in the original <strong>source</strong>
|
||||||
|
files, not in the output build directory, and re-issue the
|
||||||
|
<code>ant compile</code> command. This ensures that your changes will
|
||||||
|
be available to be saved (via <code>cvs commit</code>) later on --
|
||||||
|
the output build directory is deleted and recreated as necessary.
|
||||||
|
</p></li>
|
||||||
|
<li><p><em>Reload the application</em>. Tomcat will recognize changes in
|
||||||
|
JSP pages automatically, but it will continue to use the old versions
|
||||||
|
of any servlet or JavaBean classes until the application is reloaded.
|
||||||
|
You can trigger this by executing the <code>ant reload</code> command.
|
||||||
|
</p></li>
|
||||||
|
<li><p><em>Remove the application when you are done</em>. When you are through
|
||||||
|
working on this application, you can remove it from live execution by
|
||||||
|
running the <code>ant remove</code> command.
|
||||||
|
</p></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>Do not forget to commit your changes to the source code repository when
|
||||||
|
you have completed your testing!</p>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Creating a Release"><!--()--></a><a name="Creating_a_Release"><strong>Creating a Release</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>When you are through adding new functionality, and you've tested everything
|
||||||
|
(you DO test, don't you :-), it is time to create the distributable version
|
||||||
|
of your web application that can be deployed on the production server. The
|
||||||
|
following general steps are required:</p>
|
||||||
|
<ul>
|
||||||
|
<li><p>Issue the command <code>ant all</code> from the project source
|
||||||
|
directory, to rebuild everything from scratch one last time.
|
||||||
|
</p></li>
|
||||||
|
<li><p>Use the <code>cvs tag</code> command to create an identifier for
|
||||||
|
all of the source files utilized to create this release. This allows
|
||||||
|
you to reliably reconstruct a release (from sources) at a later
|
||||||
|
time.
|
||||||
|
</p></li>
|
||||||
|
<li><p>Issue the command <code>ant dist</code> to create a distributable
|
||||||
|
web application archive (WAR) file, as well as a JAR file containing
|
||||||
|
the corresponding source code.
|
||||||
|
</p></li>
|
||||||
|
<li><p>Package the contents of the <code>dist</code> directory using the
|
||||||
|
<strong>tar</strong> or <strong>zip</strong> utility, according to
|
||||||
|
the standard release procedures used by your organization.
|
||||||
|
</p></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
|
||||||
|
|
||||||
|
</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>
|
||||||
|
Copyright © 1999-2021, Apache Software Foundation
|
||||||
|
</em></font></div></td></tr></table></body></html>
|
||||||
@ -0,0 +1,512 @@
|
|||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
General purpose build script for web applications and web services,
|
||||||
|
including enhanced support for deploying directly to a Tomcat
|
||||||
|
based server.
|
||||||
|
|
||||||
|
This build script assumes that the source code of your web application
|
||||||
|
is organized into the following subdirectories underneath the source
|
||||||
|
code directory from which you execute the build script:
|
||||||
|
|
||||||
|
docs Static documentation files to be copied to
|
||||||
|
the "docs" subdirectory of your distribution.
|
||||||
|
|
||||||
|
src Java source code (and associated resource files)
|
||||||
|
to be compiled to the "WEB-INF/classes"
|
||||||
|
subdirectory of your web application.
|
||||||
|
|
||||||
|
web Static HTML, JSP, and other content (such as
|
||||||
|
image files), including the WEB-INF subdirectory
|
||||||
|
and its configuration file contents.
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- A "project" describes a set of targets that may be requested
|
||||||
|
when Ant is executed. The "default" attribute defines the
|
||||||
|
target which is executed if no specific target is requested,
|
||||||
|
and the "basedir" attribute defines the current working directory
|
||||||
|
from which Ant executes the requested task. This is normally
|
||||||
|
set to the current working directory.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<project name="My Project" default="compile" basedir=".">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ===================== Property Definitions =========================== -->
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
Each of the following properties are used in the build script.
|
||||||
|
Values for these properties are set by the first place they are
|
||||||
|
defined, from the following list:
|
||||||
|
|
||||||
|
* Definitions on the "ant" command line (ant -Dfoo=bar compile).
|
||||||
|
|
||||||
|
* Definitions from a "build.properties" file in the top level
|
||||||
|
source directory of this application.
|
||||||
|
|
||||||
|
* Definitions from a "build.properties" file in the developer's
|
||||||
|
home directory.
|
||||||
|
|
||||||
|
* Default definitions in this build.xml file.
|
||||||
|
|
||||||
|
You will note below that property values can be composed based on the
|
||||||
|
contents of previously defined properties. This is a powerful technique
|
||||||
|
that helps you minimize the number of changes required when your development
|
||||||
|
environment is modified. Note that property composition is allowed within
|
||||||
|
"build.properties" files as well as in the "build.xml" script.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<property file="build.properties"/>
|
||||||
|
<property file="${user.home}/build.properties"/>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ==================== File and Directory Names ======================== -->
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
These properties generally define file and directory names (or paths) that
|
||||||
|
affect where the build process stores its outputs.
|
||||||
|
|
||||||
|
app.name Base name of this application, used to
|
||||||
|
construct filenames and directories.
|
||||||
|
Defaults to "myapp".
|
||||||
|
|
||||||
|
app.path Context path to which this application should be
|
||||||
|
deployed (defaults to "/" plus the value of the
|
||||||
|
"app.name" property).
|
||||||
|
|
||||||
|
app.version Version number of this iteration of the application.
|
||||||
|
|
||||||
|
build.home The directory into which the "prepare" and
|
||||||
|
"compile" targets will generate their output.
|
||||||
|
Defaults to "build".
|
||||||
|
|
||||||
|
catalina.home The directory in which you have installed
|
||||||
|
a binary distribution of Tomcat. This will
|
||||||
|
be used by the "deploy" target.
|
||||||
|
|
||||||
|
dist.home The name of the base directory in which
|
||||||
|
distribution files are created.
|
||||||
|
Defaults to "dist".
|
||||||
|
|
||||||
|
manager.password The login password of a user that is assigned the
|
||||||
|
"manager-script" role (so that he or she can execute
|
||||||
|
commands via the "/manager" web application)
|
||||||
|
|
||||||
|
manager.url The URL of the "/manager" web application on the
|
||||||
|
Tomcat installation to which we will deploy web
|
||||||
|
applications and web services.
|
||||||
|
|
||||||
|
manager.username The login username of a user that is assigned the
|
||||||
|
"manager-script" role (so that he or she can execute
|
||||||
|
commands via the "/manager" web application)
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<property name="app.name" value="myapp"/>
|
||||||
|
<property name="app.path" value="/${app.name}"/>
|
||||||
|
<property name="app.version" value="0.1-dev"/>
|
||||||
|
<property name="build.home" value="${basedir}/build"/>
|
||||||
|
<property name="catalina.home" value="../../../.."/> <!-- UPDATE THIS! -->
|
||||||
|
<property name="dist.home" value="${basedir}/dist"/>
|
||||||
|
<property name="docs.home" value="${basedir}/docs"/>
|
||||||
|
<property name="manager.url" value="http://localhost:8080/manager/text"/>
|
||||||
|
<property name="src.home" value="${basedir}/src"/>
|
||||||
|
<property name="web.home" value="${basedir}/web"/>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ==================== External Dependencies =========================== -->
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
Use property values to define the locations of external JAR files on which
|
||||||
|
your application will depend. In general, these values will be used for
|
||||||
|
two purposes:
|
||||||
|
* Inclusion on the classpath that is passed to the Javac compiler
|
||||||
|
* Being copied into the "/WEB-INF/lib" directory during execution
|
||||||
|
of the "deploy" target.
|
||||||
|
|
||||||
|
Because we will automatically include all of the Java classes that Tomcat
|
||||||
|
exposes to web applications, we will not need to explicitly list any of those
|
||||||
|
dependencies. You only need to worry about external dependencies for JAR
|
||||||
|
files that you are going to include inside your "/WEB-INF/lib" directory.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Dummy external dependency -->
|
||||||
|
<!--
|
||||||
|
<property name="foo.jar"
|
||||||
|
value="/path/to/foo.jar"/>
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ==================== Compilation Classpath =========================== -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
Rather than relying on the CLASSPATH environment variable, Ant includes
|
||||||
|
features that makes it easy to dynamically construct the classpath you
|
||||||
|
need for each compilation. The example below constructs the compile
|
||||||
|
classpath to include the servlet.jar file, as well as the other components
|
||||||
|
that Tomcat makes available to web applications automatically, plus anything
|
||||||
|
that you explicitly added.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<path id="compile.classpath">
|
||||||
|
|
||||||
|
<!-- Include all JAR files that will be included in /WEB-INF/lib -->
|
||||||
|
<!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** -->
|
||||||
|
<!--
|
||||||
|
<pathelement location="${foo.jar}"/>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Include all elements that Tomcat exposes to applications -->
|
||||||
|
<fileset dir="${catalina.home}/bin">
|
||||||
|
<include name="*.jar"/>
|
||||||
|
</fileset>
|
||||||
|
<pathelement location="${catalina.home}/lib"/>
|
||||||
|
<fileset dir="${catalina.home}/lib">
|
||||||
|
<include name="*.jar"/>
|
||||||
|
</fileset>
|
||||||
|
|
||||||
|
</path>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ================== Custom Ant Task Definitions ======================= -->
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
These properties define custom tasks for the Ant build tool that interact
|
||||||
|
with the "/manager" web application installed with Tomcat. Before they
|
||||||
|
can be successfully utilized, you must perform the following steps:
|
||||||
|
|
||||||
|
- Copy the file "lib/catalina-ant.jar" from your Tomcat
|
||||||
|
installation into the "lib" directory of your Ant installation.
|
||||||
|
|
||||||
|
- Create a "build.properties" file in your application's top-level
|
||||||
|
source directory (or your user login home directory) that defines
|
||||||
|
appropriate values for the "manager.password", "manager.url", and
|
||||||
|
"manager.username" properties described above.
|
||||||
|
|
||||||
|
For more information about the Manager web application, and the functionality
|
||||||
|
of these tasks, see <http://localhost:8080/tomcat-docs/manager-howto.html>.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<taskdef resource="org/apache/catalina/ant/catalina.tasks"
|
||||||
|
classpathref="compile.classpath"/>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ==================== Compilation Control Options ==================== -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
These properties control option settings on the Javac compiler when it
|
||||||
|
is invoked using the <javac> task.
|
||||||
|
|
||||||
|
compile.debug Should compilation include the debug option?
|
||||||
|
|
||||||
|
compile.deprecation Should compilation include the deprecation option?
|
||||||
|
|
||||||
|
compile.optimize Should compilation include the optimize option?
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<property name="compile.debug" value="true"/>
|
||||||
|
<property name="compile.deprecation" value="false"/>
|
||||||
|
<property name="compile.optimize" value="true"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ==================== All Target ====================================== -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
The "all" target is a shortcut for running the "clean" target followed
|
||||||
|
by the "compile" target, to force a complete recompile.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<target name="all" depends="clean,compile"
|
||||||
|
description="Clean build and dist directories, then compile"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ==================== Clean Target ==================================== -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
The "clean" target deletes any previous "build" and "dist" directory,
|
||||||
|
so that you can be ensured the application can be built from scratch.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<target name="clean"
|
||||||
|
description="Delete old build and dist directories">
|
||||||
|
<delete dir="${build.home}"/>
|
||||||
|
<delete dir="${dist.home}"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ==================== Compile Target ================================== -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
The "compile" target transforms source files (from your "src" directory)
|
||||||
|
into object files in the appropriate location in the build directory.
|
||||||
|
This example assumes that you will be including your classes in an
|
||||||
|
unpacked directory hierarchy under "/WEB-INF/classes".
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<target name="compile" depends="prepare"
|
||||||
|
description="Compile Java sources">
|
||||||
|
|
||||||
|
<!-- Compile Java classes as necessary -->
|
||||||
|
<mkdir dir="${build.home}/WEB-INF/classes"/>
|
||||||
|
<javac srcdir="${src.home}"
|
||||||
|
destdir="${build.home}/WEB-INF/classes"
|
||||||
|
debug="${compile.debug}"
|
||||||
|
deprecation="${compile.deprecation}"
|
||||||
|
optimize="${compile.optimize}">
|
||||||
|
<classpath refid="compile.classpath"/>
|
||||||
|
</javac>
|
||||||
|
|
||||||
|
<!-- Copy application resources -->
|
||||||
|
<copy todir="${build.home}/WEB-INF/classes">
|
||||||
|
<fileset dir="${src.home}" excludes="**/*.java"/>
|
||||||
|
</copy>
|
||||||
|
|
||||||
|
</target>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ==================== Dist Target ===================================== -->
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
The "dist" target creates a binary distribution of your application
|
||||||
|
in a directory structure ready to be archived in a tar.gz or zip file.
|
||||||
|
Note that this target depends on two others:
|
||||||
|
|
||||||
|
* "compile" so that the entire web application (including external
|
||||||
|
dependencies) will have been assembled
|
||||||
|
|
||||||
|
* "javadoc" so that the application Javadocs will have been created
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<target name="dist" depends="compile,javadoc"
|
||||||
|
description="Create binary distribution">
|
||||||
|
|
||||||
|
<!-- Copy documentation subdirectories -->
|
||||||
|
<mkdir dir="${dist.home}/docs"/>
|
||||||
|
<copy todir="${dist.home}/docs">
|
||||||
|
<fileset dir="${docs.home}"/>
|
||||||
|
</copy>
|
||||||
|
|
||||||
|
<!-- Create application JAR file -->
|
||||||
|
<jar jarfile="${dist.home}/${app.name}-${app.version}.war"
|
||||||
|
basedir="${build.home}"/>
|
||||||
|
|
||||||
|
<!-- Copy additional files to ${dist.home} as necessary -->
|
||||||
|
|
||||||
|
</target>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ==================== Install Target ================================== -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
The "install" target tells the specified Tomcat installation to dynamically
|
||||||
|
install this web application and make it available for execution. It does
|
||||||
|
*not* cause the existence of this web application to be remembered across
|
||||||
|
Tomcat restarts; if you restart the server, you will need to re-install all
|
||||||
|
this web application.
|
||||||
|
|
||||||
|
If you have already installed this application, and simply want Tomcat to
|
||||||
|
recognize that you have updated Java classes (or the web.xml file), use the
|
||||||
|
"reload" target instead.
|
||||||
|
|
||||||
|
NOTE: This target will only succeed if it is run from the same server that
|
||||||
|
Tomcat is running on.
|
||||||
|
|
||||||
|
NOTE: This is the logical opposite of the "remove" target.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<target name="install" depends="compile"
|
||||||
|
description="Install application to servlet container">
|
||||||
|
|
||||||
|
<deploy url="${manager.url}"
|
||||||
|
username="${manager.username}"
|
||||||
|
password="${manager.password}"
|
||||||
|
path="${app.path}"
|
||||||
|
localWar="file://${build.home}"/>
|
||||||
|
|
||||||
|
</target>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ==================== Javadoc Target ================================== -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
The "javadoc" target creates Javadoc API documentation for the Java
|
||||||
|
classes included in your application. Normally, this is only required
|
||||||
|
when preparing a distribution release, but is available as a separate
|
||||||
|
target in case the developer wants to create Javadocs independently.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<target name="javadoc" depends="compile"
|
||||||
|
description="Create Javadoc API documentation">
|
||||||
|
|
||||||
|
<mkdir dir="${dist.home}/docs/api"/>
|
||||||
|
<javadoc sourcepath="${src.home}"
|
||||||
|
destdir="${dist.home}/docs/api"
|
||||||
|
packagenames="*">
|
||||||
|
<classpath refid="compile.classpath"/>
|
||||||
|
</javadoc>
|
||||||
|
|
||||||
|
</target>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ====================== List Target =================================== -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
The "list" target asks the specified Tomcat installation to list the
|
||||||
|
currently running web applications, either loaded at startup time or
|
||||||
|
installed dynamically. It is useful to determine whether or not the
|
||||||
|
application you are currently developing has been installed.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<target name="list"
|
||||||
|
description="List installed applications on servlet container">
|
||||||
|
|
||||||
|
<list url="${manager.url}"
|
||||||
|
username="${manager.username}"
|
||||||
|
password="${manager.password}"/>
|
||||||
|
|
||||||
|
</target>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ==================== Prepare Target ================================== -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
The "prepare" target is used to create the "build" destination directory,
|
||||||
|
and copy the static contents of your web application to it. If you need
|
||||||
|
to copy static files from external dependencies, you can customize the
|
||||||
|
contents of this task.
|
||||||
|
|
||||||
|
Normally, this task is executed indirectly when needed.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<target name="prepare">
|
||||||
|
|
||||||
|
<!-- Create build directories as needed -->
|
||||||
|
<mkdir dir="${build.home}"/>
|
||||||
|
<mkdir dir="${build.home}/WEB-INF"/>
|
||||||
|
<mkdir dir="${build.home}/WEB-INF/classes"/>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Copy static content of this web application -->
|
||||||
|
<copy todir="${build.home}">
|
||||||
|
<fileset dir="${web.home}"/>
|
||||||
|
</copy>
|
||||||
|
|
||||||
|
<!-- Copy external dependencies as required -->
|
||||||
|
<!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** -->
|
||||||
|
<mkdir dir="${build.home}/WEB-INF/lib"/>
|
||||||
|
<!--
|
||||||
|
<copy todir="${build.home}/WEB-INF/lib" file="${foo.jar}"/>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Copy static files from external dependencies as needed -->
|
||||||
|
<!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** -->
|
||||||
|
|
||||||
|
</target>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ==================== Reload Target =================================== -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
The "reload" signals the specified application Tomcat to shut itself down
|
||||||
|
and reload. This can be useful when the web application context is not
|
||||||
|
reloadable and you have updated classes or property files in the
|
||||||
|
/WEB-INF/classes directory or when you have added or updated jar files in the
|
||||||
|
/WEB-INF/lib directory.
|
||||||
|
|
||||||
|
NOTE: The /WEB-INF/web.xml web application configuration file is not reread
|
||||||
|
on a reload. If you have made changes to your web.xml file you must stop
|
||||||
|
then start the web application.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<target name="reload" depends="compile"
|
||||||
|
description="Reload application on servlet container">
|
||||||
|
|
||||||
|
<reload url="${manager.url}"
|
||||||
|
username="${manager.username}"
|
||||||
|
password="${manager.password}"
|
||||||
|
path="${app.path}"/>
|
||||||
|
|
||||||
|
</target>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ==================== Remove Target =================================== -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
The "remove" target tells the specified Tomcat installation to dynamically
|
||||||
|
remove this web application from service.
|
||||||
|
|
||||||
|
NOTE: This is the logical opposite of the "install" target.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<target name="remove"
|
||||||
|
description="Remove application on servlet container">
|
||||||
|
|
||||||
|
<undeploy url="${manager.url}"
|
||||||
|
username="${manager.username}"
|
||||||
|
password="${manager.password}"
|
||||||
|
path="${app.path}"/>
|
||||||
|
|
||||||
|
</target>
|
||||||
|
|
||||||
|
|
||||||
|
</project>
|
||||||
@ -0,0 +1,17 @@
|
|||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
This is a dummy README file for the sample
|
||||||
|
web application.
|
||||||
@ -0,0 +1,46 @@
|
|||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta name="author" content="Ben Souther" />
|
||||||
|
<title>Sample Application</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h2>Sample Application</h2>
|
||||||
|
<p>
|
||||||
|
The example app has been packaged as a war file and can be downloaded
|
||||||
|
<a href="sample.war">here</a> (Note: make sure your browser doesn't
|
||||||
|
change file extension or append a new one).
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The easiest way to run this application is simply to move the war file
|
||||||
|
to your <b>CATALINA_HOME/webapps</b> directory. Tomcat will automatically
|
||||||
|
expand and deploy the application for you. You can view it with the
|
||||||
|
following URL (assuming that you're running tomcat on port 8080
|
||||||
|
as is the default):
|
||||||
|
<br />
|
||||||
|
<a href="http://localhost:8080/sample">http://localhost:8080/sample</a>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
If you just want to browse the contents, you can unpack the war file
|
||||||
|
with the <b>jar</b> command.
|
||||||
|
</p>
|
||||||
|
<pre>
|
||||||
|
jar -xvf sample.war
|
||||||
|
</pre>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Binary file not shown.
@ -0,0 +1,84 @@
|
|||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
* contributor license agreements. See the NOTICE file distributed with
|
||||||
|
* this work for additional information regarding copyright ownership.
|
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
* (the "License"); you may not use this file except in compliance with
|
||||||
|
* the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package mypackage;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
|
||||||
|
import javax.servlet.ServletException;
|
||||||
|
import javax.servlet.http.HttpServlet;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Simple servlet to validate that the Hello, World example can
|
||||||
|
* execute servlets. In the web application deployment descriptor,
|
||||||
|
* this servlet must be mapped to correspond to the link in the
|
||||||
|
* "index.html" file.
|
||||||
|
*
|
||||||
|
* @author Craig R. McClanahan <Craig.McClanahan@eng.sun.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
public final class Hello extends HttpServlet {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Respond to a GET request for the content produced by
|
||||||
|
* this servlet.
|
||||||
|
*
|
||||||
|
* @param request The servlet request we are processing
|
||||||
|
* @param response The servlet response we are producing
|
||||||
|
*
|
||||||
|
* @exception IOException if an input/output error occurs
|
||||||
|
* @exception ServletException if a servlet error occurs
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void doGet(HttpServletRequest request,
|
||||||
|
HttpServletResponse response)
|
||||||
|
throws IOException, ServletException {
|
||||||
|
|
||||||
|
response.setContentType("text/html");
|
||||||
|
PrintWriter writer = response.getWriter();
|
||||||
|
|
||||||
|
writer.println("<html>");
|
||||||
|
writer.println("<head>");
|
||||||
|
writer.println("<title>Sample Application Servlet Page</title>");
|
||||||
|
writer.println("</head>");
|
||||||
|
writer.println("<body bgcolor=white>");
|
||||||
|
|
||||||
|
writer.println("<table border=\"0\">");
|
||||||
|
writer.println("<tr>");
|
||||||
|
writer.println("<td>");
|
||||||
|
writer.println("<img src=\"images/tomcat.gif\">");
|
||||||
|
writer.println("</td>");
|
||||||
|
writer.println("<td>");
|
||||||
|
writer.println("<h1>Sample Application Servlet</h1>");
|
||||||
|
writer.println("This is the output of a servlet that is part of");
|
||||||
|
writer.println("the Hello, World application.");
|
||||||
|
writer.println("</td>");
|
||||||
|
writer.println("</tr>");
|
||||||
|
writer.println("</table>");
|
||||||
|
|
||||||
|
writer.println("</body>");
|
||||||
|
writer.println("</html>");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,39 @@
|
|||||||
|
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
|
||||||
|
version="2.4">
|
||||||
|
|
||||||
|
<display-name>Hello, World Application</display-name>
|
||||||
|
<description>
|
||||||
|
This is a simple web application with a source code organization
|
||||||
|
based on the recommendations of the Application Developer's Guide.
|
||||||
|
</description>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>HelloServlet</servlet-name>
|
||||||
|
<servlet-class>mypackage.Hello</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>HelloServlet</servlet-name>
|
||||||
|
<url-pattern>/hello</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
</web-app>
|
||||||
@ -0,0 +1,39 @@
|
|||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Sample Application JSP Page</title>
|
||||||
|
</head>
|
||||||
|
<body bgcolor=white>
|
||||||
|
|
||||||
|
<table border="0">
|
||||||
|
<tr>
|
||||||
|
<td align=center>
|
||||||
|
<img src="images/tomcat.gif">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<h1>Sample Application JSP Page</h1>
|
||||||
|
This is the output of a JSP page that is part of the Hello, World
|
||||||
|
application.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<%= new String("Hello!") %>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 2.0 KiB |
@ -0,0 +1,44 @@
|
|||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Sample "Hello, World" Application</title>
|
||||||
|
</head>
|
||||||
|
<body bgcolor=white>
|
||||||
|
|
||||||
|
<table border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<img src="images/tomcat.gif">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<h1>Sample "Hello, World" Application</h1>
|
||||||
|
<p>This is the home page for a sample application used to illustrate the
|
||||||
|
source directory organization of a web application utilizing the principles
|
||||||
|
outlined in the Application Developer's Guide.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<p>To prove that they work, you can execute either of the following links:</p>
|
||||||
|
<ul>
|
||||||
|
<li>To a <a href="hello.jsp">JSP page</a>.</li>
|
||||||
|
<li>To a <a href="hello">servlet</a>.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@ -0,0 +1,356 @@
|
|||||||
|
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (7.0.108) - Source Organization</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">
|
||||||
|
.noPrint {display: none;}
|
||||||
|
td#mainBody {width: 100%;}
|
||||||
|
</style><style type="text/css">
|
||||||
|
code {background-color:rgb(224,255,255);padding:0 0.1em;}
|
||||||
|
code.attributeName, code.propertyName {background-color:transparent;}
|
||||||
|
|
||||||
|
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
table *:not(table) {
|
||||||
|
/* Prevent border-collapsing for table child elements like <div> */
|
||||||
|
border-collapse: separate;
|
||||||
|
}
|
||||||
|
|
||||||
|
th {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
div.codeBox {
|
||||||
|
overflow: auto;
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
div.codeBox pre {
|
||||||
|
margin: 0;
|
||||||
|
padding: 4px;
|
||||||
|
border: 1px solid #999;
|
||||||
|
border-radius: 5px;
|
||||||
|
background-color: #eff8ff;
|
||||||
|
display: table; /* To prevent <pre>s from taking the complete available width. */
|
||||||
|
/*
|
||||||
|
When it is officially supported, use the following CSS instead of display: table
|
||||||
|
to prevent big <pre>s from exceeding the browser window:
|
||||||
|
max-width: available;
|
||||||
|
width: min-content;
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
div.codeBox pre.wrap {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
table.defaultTable tr, table.detail-table tr {
|
||||||
|
border: 1px solid #CCC;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {
|
||||||
|
background-color: #FAFBFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {
|
||||||
|
background-color: #EEEFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable th, table.detail-table th {
|
||||||
|
background-color: #88b;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {
|
||||||
|
padding: 5px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
p.notice {
|
||||||
|
border: 1px solid rgb(255, 0, 0);
|
||||||
|
background-color: rgb(238, 238, 238);
|
||||||
|
color: rgb(0, 51, 102);
|
||||||
|
padding: 0.5em;
|
||||||
|
margin: 1em 2em 1em 1em;
|
||||||
|
}
|
||||||
|
</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="https://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="
|
||||||
|
The Apache Tomcat Servlet/JSP Container
|
||||||
|
" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.108, Jan 28 2021</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">App Dev Guide Home</a></li><li><a href="https://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Source Organization</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
<ul><li><a href="#Directory_Structure">Directory Structure</a><ol><li><a href="#External_Dependencies">External Dependencies</a></li></ol></li><li><a href="#Source_Code_Control">Source Code Control</a></li><li><a href="#BUILD.XML_Configuration_File">BUILD.XML Configuration File</a></li></ul>
|
||||||
|
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Directory Structure"><!--()--></a><a name="Directory_Structure"><strong>Directory Structure</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p><em>The description below uses the variable name $CATALINA_BASE to refer the
|
||||||
|
base directory against which most relative paths are resolved. If you have
|
||||||
|
not configured Tomcat for multiple instances by setting a CATALINA_BASE
|
||||||
|
directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME,
|
||||||
|
the directory into which you have installed Tomcat.</em></p>
|
||||||
|
|
||||||
|
<p>A key recommendation of this manual is to separate the directory
|
||||||
|
hierarchy containing your source code (described in this section) from
|
||||||
|
the directory hierarchy containing your deployable application
|
||||||
|
(described in the preceding section). Maintaining this separation has
|
||||||
|
the following advantages:</p>
|
||||||
|
<ul>
|
||||||
|
<li><p>The contents of the source directories can be more easily administered,
|
||||||
|
moved, and backed up if the "executable" version of the application
|
||||||
|
is not intermixed.
|
||||||
|
</p></li>
|
||||||
|
<li><p>Source code control is easier to manage on directories that contain
|
||||||
|
only source files.
|
||||||
|
</p></li>
|
||||||
|
<li><p>The files that make up an installable distribution of your
|
||||||
|
application are much easier to select when the deployment
|
||||||
|
hierarchy is separate.</p></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>As we will see, the <code>ant</code> development tool makes the creation
|
||||||
|
and processing of such directory hierarchies nearly painless.</p>
|
||||||
|
|
||||||
|
<p>The actual directory and file hierarchy used to contain the source code
|
||||||
|
of an application can be pretty much anything you like. However, the
|
||||||
|
following organization has proven to be quite generally applicable, and is
|
||||||
|
expected by the example <code>build.xml</code> configuration file that
|
||||||
|
is discussed below. All of these components exist under a top level
|
||||||
|
<em>project source directory</em> for your application:</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>docs/</strong> - Documentation for your application, in whatever
|
||||||
|
format your development team is using.<br><br></li>
|
||||||
|
<li><strong>src/</strong> - Java source files that generate the servlets,
|
||||||
|
beans, and other Java classes that are unique to your application.
|
||||||
|
If your source code is organized in packages (<strong>highly</strong>
|
||||||
|
recommended), the package hierarchy should be reflected as a directory
|
||||||
|
structure underneath this directory.<br><br></li>
|
||||||
|
<li><strong>web/</strong> - The static content of your web site (HTML pages,
|
||||||
|
JSP pages, JavaScript files, CSS stylesheet files, and images) that will
|
||||||
|
be accessible to application clients. This directory will be the
|
||||||
|
<em>document root</em> of your web application, and any subdirectory
|
||||||
|
structure found here will be reflected in the request URIs required to
|
||||||
|
access those files.<br><br></li>
|
||||||
|
<li><strong>web/WEB-INF/</strong> - The special configuration files required
|
||||||
|
for your application, including the web application deployment descriptor
|
||||||
|
(<code>web.xml</code>, defined in the
|
||||||
|
<a href="https://wiki.apache.org/tomcat/Specifications">Servlet Specification</a>),
|
||||||
|
tag library descriptors for custom tag libraries
|
||||||
|
you have created, and other resource files you wish to include within
|
||||||
|
your web application. Even though this directory appears to be a
|
||||||
|
subdirectory of your <em>document root</em>, the Servlet Specification
|
||||||
|
prohibits serving the contents of this directory (or any file it contains)
|
||||||
|
directly to a client request. Therefore, this is a good place to store
|
||||||
|
configuration information that is sensitive (such as database connection
|
||||||
|
usernames and passwords), but is required for your application to
|
||||||
|
operate successfully.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>During the development process, two additional directories will be
|
||||||
|
created on a temporary basis:</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>build/</strong> - When you execute a default build
|
||||||
|
(<code>ant</code>), this directory will contain an exact image
|
||||||
|
of the files in the web application archive for this application.
|
||||||
|
Tomcat allows you to deploy an application in an unpacked
|
||||||
|
directory like this, either by copying it to the
|
||||||
|
<code>$CATALINA_BASE/webapps</code> directory, or by <em>installing</em>
|
||||||
|
it via the "Manager" web application. The latter approach is very
|
||||||
|
useful during development, and will be illustrated below.
|
||||||
|
<br><br></li>
|
||||||
|
<li><strong>dist/</strong> - When you execute the <code>ant dist</code>
|
||||||
|
target, this directory will be created. It will create an exact image
|
||||||
|
of the binary distribution for your web application, including an license
|
||||||
|
information, documentation, and README files that you have prepared.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>Note that these two directories should <strong>NOT</strong> be archived in
|
||||||
|
your source code control system, because they are deleted and recreated (from
|
||||||
|
scratch) as needed during development. For that reason, you should not edit
|
||||||
|
any source files in these directories if you want to maintain a permanent
|
||||||
|
record of the changes, because the changes will be lost the next time that a
|
||||||
|
build is performed.</p>
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="External Dependencies"><!--()--></a><a name="External_Dependencies"><strong>External Dependencies</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>What do you do if your application requires JAR files (or other
|
||||||
|
resources) from external projects or packages? A common example is that
|
||||||
|
you need to include a JDBC driver in your web application, in order to
|
||||||
|
operate.</p>
|
||||||
|
|
||||||
|
<p>Different developers take different approaches to this problem.
|
||||||
|
Some will encourage checking a copy of the JAR files you depend on into
|
||||||
|
the source code control archives for every application that requires those
|
||||||
|
JAR files. However, this can cause significant management issues when you
|
||||||
|
use the same JAR in many applications - particular when faced with a need
|
||||||
|
to upgrade to a different version of that JAR file.</p>
|
||||||
|
|
||||||
|
<p>Therefore, this manual recommends that you <strong>NOT</strong> store
|
||||||
|
a copy of the packages you depend on inside the source control archives
|
||||||
|
of your applications. Instead, the external dependencies should be
|
||||||
|
integrated as part of the process of <strong>building</strong> your
|
||||||
|
application. In that way, you can always pick up the appropriate version
|
||||||
|
of the JAR files from wherever your development system administrator has
|
||||||
|
installed them, without having to worry about updating your application
|
||||||
|
every time the version of the dependent JAR file is changed.</p>
|
||||||
|
|
||||||
|
<p>In the example Ant <code>build.xml</code> file, we will demonstrate
|
||||||
|
how to define <em>build properties</em> that let you configure the locations
|
||||||
|
of the files to be copied, without having to modify <code>build.xml</code>
|
||||||
|
when these files change. The build properties used by a particular
|
||||||
|
developer can be customized on a per-application basis, or defaulted to
|
||||||
|
"standard" build properties stored in the developer's home directory.</p>
|
||||||
|
|
||||||
|
<p>In many cases, your development system administrator will have already
|
||||||
|
installed the required JAR files into the <code>lib</code> directory of Tomcat.
|
||||||
|
If this has been done, you need
|
||||||
|
to take no actions at all - the example <code>build.xml</code> file
|
||||||
|
automatically constructs a compile classpath that includes these files.</p>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Source Code Control"><!--()--></a><a name="Source_Code_Control"><strong>Source Code Control</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>As mentioned earlier, it is highly recommended that you place all of the
|
||||||
|
source files that comprise your application under the management of a
|
||||||
|
source code control system like the Concurrent Version System (CVS). If you
|
||||||
|
elect to do this, every directory and file in the source hierarchy should be
|
||||||
|
registered and saved -- but none of the generated files. If you register
|
||||||
|
binary format files (such as images or JAR libraries), be sure to indicate
|
||||||
|
this to your source code control system.</p>
|
||||||
|
|
||||||
|
<p>We recommended (in the previous section) that you should not store the
|
||||||
|
contents of the <code>build/</code> and <code>dist/</code> directories
|
||||||
|
created by your development process in the source code control system. An
|
||||||
|
easy way to tell CVS to ignore these directories is to create a file named
|
||||||
|
<code>.cvsignore</code> (note the leading period) in your top-level source
|
||||||
|
directory, with the following contents:</p>
|
||||||
|
<div class="codeBox"><pre><code>build
|
||||||
|
dist
|
||||||
|
build.properties</code></pre></div>
|
||||||
|
|
||||||
|
<p>The reason for mentioning <code>build.properties</code> here will be
|
||||||
|
explained in the <a href="processes.html">Processes</a> section.</p>
|
||||||
|
|
||||||
|
<p>Detailed instructions for your source code control environment are beyond
|
||||||
|
the scope of this manual. However, the following steps are followed when
|
||||||
|
using a command-line CVS client:</p>
|
||||||
|
<ul>
|
||||||
|
<li>To refresh the state of your source code to that stored in the
|
||||||
|
the source repository, go to your project source directory, and
|
||||||
|
execute <code>cvs update -dP</code>.
|
||||||
|
<br><br></li>
|
||||||
|
<li>When you create a new subdirectory in the source code hierarchy, register
|
||||||
|
it in CVS with a command like <code>cvs add {subdirname}</code>.
|
||||||
|
<br><br></li>
|
||||||
|
<li>When you first create a new source code file, navigate to the directory
|
||||||
|
that contains it, and register the new file with a command like
|
||||||
|
<code>cvs add {filename}</code>.
|
||||||
|
<br><br></li>
|
||||||
|
<li>If you no longer need a particular source code file, navigate to the
|
||||||
|
containing directory and remove the file. Then, deregister it in CVS
|
||||||
|
with a command like <code>cvs remove {filename}</code>.
|
||||||
|
<br><br></li>
|
||||||
|
<li>While you are creating, modifying, and deleting source files, changes
|
||||||
|
are not yet reflected in the server repository. To save your changes in
|
||||||
|
their current state, go to the project source directory
|
||||||
|
and execute <code>cvs commit</code>. You will be asked to write a brief
|
||||||
|
description of the changes you have just completed, which will be stored
|
||||||
|
with the new version of any updated source file.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>CVS, like other source code control systems, has many additional features
|
||||||
|
(such as the ability to tag the files that made up a particular release, and
|
||||||
|
support for multiple development branches that can later be merged). See the
|
||||||
|
links and references in the <a href="introduction.html">Introduction</a> for
|
||||||
|
more information.</p>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="BUILD.XML Configuration File"><!--()--></a><a name="BUILD.XML_Configuration_File"><strong>BUILD.XML Configuration File</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>We will be using the <strong>ant</strong> tool to manage the compilation of
|
||||||
|
our Java source code files, and creation of the deployment hierarchy. Ant
|
||||||
|
operates under the control of a build file, normally called
|
||||||
|
<code>build.xml</code>, that defines the processing steps required. This
|
||||||
|
file is stored in the top-level directory of your source code hierarchy, and
|
||||||
|
should be checked in to your source code control system.</p>
|
||||||
|
|
||||||
|
<p>Like a Makefile, the <code>build.xml</code> file provides several
|
||||||
|
"targets" that support optional development activities (such as creating
|
||||||
|
the associated Javadoc documentation, erasing the deployment home directory
|
||||||
|
so you can build your project from scratch, or creating the web application
|
||||||
|
archive file so you can distribute your application. A well-constructed
|
||||||
|
<code>build.xml</code> file will contain internal documentation describing
|
||||||
|
the targets that are designed for use by the developer, versus those targets
|
||||||
|
used internally. To ask Ant to display the project documentation, change to
|
||||||
|
the directory containing the <code>build.xml</code> file and type:</p>
|
||||||
|
<div class="codeBox"><pre><code>ant -projecthelp</code></pre></div>
|
||||||
|
|
||||||
|
<p>To give you a head start, a <a href="build.xml.txt">basic build.xml file</a>
|
||||||
|
is provided that you can customize and install in the project source directory
|
||||||
|
for your application. This file includes comments that describe the various
|
||||||
|
targets that can be executed. Briefly, the following targets are generally
|
||||||
|
provided:</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>clean</strong> - This target deletes any existing
|
||||||
|
<code>build</code> and <code>dist</code> directories, so that they
|
||||||
|
can be reconstructed from scratch. This allows you to guarantee that
|
||||||
|
you have not made source code modifications that will result in
|
||||||
|
problems at runtime due to not recompiling all affected classes.
|
||||||
|
<br><br></li>
|
||||||
|
<li><strong>compile</strong> - This target is used to compile any source code
|
||||||
|
that has been changed since the last time compilation took place. The
|
||||||
|
resulting class files are created in the <code>WEB-INF/classes</code>
|
||||||
|
subdirectory of your <code>build</code> directory, exactly where the
|
||||||
|
structure of a web application requires them to be. Because
|
||||||
|
this command is executed so often during development, it is normally
|
||||||
|
made the "default" target so that a simple <code>ant</code> command will
|
||||||
|
execute it.
|
||||||
|
<br><br></li>
|
||||||
|
<li><strong>all</strong> - This target is a short cut for running the
|
||||||
|
<code>clean</code> target, followed by the <code>compile</code> target.
|
||||||
|
Thus, it guarantees that you will recompile the entire application, to
|
||||||
|
ensure that you have not unknowingly introduced any incompatible changes.
|
||||||
|
<br><br></li>
|
||||||
|
<li><strong>javadoc</strong> - This target creates Javadoc API documentation
|
||||||
|
for the Java classes in this web application. The example
|
||||||
|
<code>build.xml</code> file assumes you want to include the API
|
||||||
|
documentation with your app distribution, so it generates the docs
|
||||||
|
in a subdirectory of the <code>dist</code> directory. Because you normally
|
||||||
|
do not need to generate the Javadocs on every compilation, this target is
|
||||||
|
usually a dependency of the <code>dist</code> target, but not of the
|
||||||
|
<code>compile</code> target.
|
||||||
|
<br><br></li>
|
||||||
|
<li><strong>dist</strong> - This target creates a distribution directory for
|
||||||
|
your application, including any required documentation, the Javadocs for
|
||||||
|
your Java classes, and a web application archive (WAR) file that will be
|
||||||
|
delivered to system administrators who wish to install your application.
|
||||||
|
Because this target also depends on the <code>deploy</code> target, the
|
||||||
|
web application archive will have also picked up any external dependencies
|
||||||
|
that were included at deployment time.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>For interactive development and testing of your web application using
|
||||||
|
Tomcat, the following additional targets are defined:</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>install</strong> - Tell the currently running Tomcat to make
|
||||||
|
the application you are developing immediately available for execution
|
||||||
|
and testing. This action does not require Tomcat to be restarted, but
|
||||||
|
it is also not remembered after Tomcat is restarted the next time.
|
||||||
|
<br><br></li>
|
||||||
|
<li><strong>reload</strong> - Once the application is installed, you can
|
||||||
|
continue to make changes and recompile using the <code>compile</code>
|
||||||
|
target. Tomcat will automatically recognize changes made to JSP pages,
|
||||||
|
but not to servlet or JavaBean classes - this command will tell Tomcat
|
||||||
|
to restart the currently installed application so that such changes are
|
||||||
|
recognized.
|
||||||
|
<br><br></li>
|
||||||
|
<li><strong>remove</strong> - When you have completed your development and
|
||||||
|
testing activities, you can optionally tell Tomcat to remove this
|
||||||
|
application from service.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>Using the development and testing targets requires some additional
|
||||||
|
one-time setup that is described on the next page.</p>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>
|
||||||
|
Copyright © 1999-2021, Apache Software Foundation
|
||||||
|
</em></font></div></td></tr></table></body></html>
|
||||||
@ -0,0 +1,166 @@
|
|||||||
|
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!DOCTYPE web-app
|
||||||
|
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
|
||||||
|
"http://java.sun.com/dtd/web-app_2_3.dtd">
|
||||||
|
|
||||||
|
<web-app>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- General description of your web application -->
|
||||||
|
|
||||||
|
<display-name>My Web Application</display-name>
|
||||||
|
<description>
|
||||||
|
This is version X.X of an application to perform
|
||||||
|
a wild and wonderful task, based on servlets and
|
||||||
|
JSP pages. It was written by Dave Developer
|
||||||
|
(dave@mycompany.com), who should be contacted for
|
||||||
|
more information.
|
||||||
|
</description>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Context initialization parameters that define shared
|
||||||
|
String constants used within your application, which
|
||||||
|
can be customized by the system administrator who is
|
||||||
|
installing your application. The values actually
|
||||||
|
assigned to these parameters can be retrieved in a
|
||||||
|
servlet or JSP page by calling:
|
||||||
|
|
||||||
|
String value =
|
||||||
|
getServletContext().getInitParameter("name");
|
||||||
|
|
||||||
|
where "name" matches the <param-name> element of
|
||||||
|
one of these initialization parameters.
|
||||||
|
|
||||||
|
You can define any number of context initialization
|
||||||
|
parameters, including zero.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<context-param>
|
||||||
|
<param-name>webmaster</param-name>
|
||||||
|
<param-value>myaddress@mycompany.com</param-value>
|
||||||
|
<description>
|
||||||
|
The EMAIL address of the administrator to whom questions
|
||||||
|
and comments about this application should be addressed.
|
||||||
|
</description>
|
||||||
|
</context-param>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Servlet definitions for the servlets that make up
|
||||||
|
your web application, including initialization
|
||||||
|
parameters. With Tomcat, you can also send requests
|
||||||
|
to servlets not listed here with a request like this:
|
||||||
|
|
||||||
|
http://localhost:8080/{context-path}/servlet/{classname}
|
||||||
|
|
||||||
|
but this usage is not guaranteed to be portable. It also
|
||||||
|
makes relative references to images and other resources
|
||||||
|
required by your servlet more complicated, so defining
|
||||||
|
all of your servlets (and defining a mapping to them with
|
||||||
|
a servlet-mapping element) is recommended.
|
||||||
|
|
||||||
|
Servlet initialization parameters can be retrieved in a
|
||||||
|
servlet or JSP page by calling:
|
||||||
|
|
||||||
|
String value =
|
||||||
|
getServletConfig().getInitParameter("name");
|
||||||
|
|
||||||
|
where "name" matches the <param-name> element of
|
||||||
|
one of these initialization parameters.
|
||||||
|
|
||||||
|
You can define any number of servlets, including zero.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>controller</servlet-name>
|
||||||
|
<description>
|
||||||
|
This servlet plays the "controller" role in the MVC architecture
|
||||||
|
used in this application. It is generally mapped to the ".do"
|
||||||
|
filename extension with a servlet-mapping element, and all form
|
||||||
|
submits in the app will be submitted to a request URI like
|
||||||
|
"saveCustomer.do", which will therefore be mapped to this servlet.
|
||||||
|
|
||||||
|
The initialization parameter names for this servlet are the
|
||||||
|
"servlet path" that will be received by this servlet (after the
|
||||||
|
filename extension is removed). The corresponding value is the
|
||||||
|
name of the action class that will be used to process this request.
|
||||||
|
</description>
|
||||||
|
<servlet-class>com.mycompany.mypackage.ControllerServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>listOrders</param-name>
|
||||||
|
<param-value>com.mycompany.myactions.ListOrdersAction</param-value>
|
||||||
|
</init-param>
|
||||||
|
<init-param>
|
||||||
|
<param-name>saveCustomer</param-name>
|
||||||
|
<param-value>com.mycompany.myactions.SaveCustomerAction</param-value>
|
||||||
|
</init-param>
|
||||||
|
<!-- Load this servlet at server startup time -->
|
||||||
|
<load-on-startup>5</load-on-startup>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>graph</servlet-name>
|
||||||
|
<description>
|
||||||
|
This servlet produces GIF images that are dynamically generated
|
||||||
|
graphs, based on the input parameters included on the request.
|
||||||
|
It is generally mapped to a specific request URI like "/graph".
|
||||||
|
</description>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Define mappings that are used by the servlet container to
|
||||||
|
translate a particular request URI (context-relative) to a
|
||||||
|
particular servlet. The examples below correspond to the
|
||||||
|
servlet descriptions above. Thus, a request URI like:
|
||||||
|
|
||||||
|
http://localhost:8080/{contextpath}/graph
|
||||||
|
|
||||||
|
will be mapped to the "graph" servlet, while a request like:
|
||||||
|
|
||||||
|
http://localhost:8080/{contextpath}/saveCustomer.do
|
||||||
|
|
||||||
|
will be mapped to the "controller" servlet.
|
||||||
|
|
||||||
|
You may define any number of servlet mappings, including zero.
|
||||||
|
It is also legal to define more than one mapping for the same
|
||||||
|
servlet, if you wish to.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>controller</servlet-name>
|
||||||
|
<url-pattern>*.do</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>graph</servlet-name>
|
||||||
|
<url-pattern>/graph</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Define the default session timeout for your application,
|
||||||
|
in minutes. From a servlet or JSP page, you can modify
|
||||||
|
the timeout for a particular session dynamically by using
|
||||||
|
HttpSession.getMaxInactiveInterval(). -->
|
||||||
|
|
||||||
|
<session-config>
|
||||||
|
<session-timeout>30</session-timeout> <!-- 30 minutes -->
|
||||||
|
</session-config>
|
||||||
|
|
||||||
|
|
||||||
|
</web-app>
|
||||||
221
centos8_tomcat/apache-tomcat-7.0.108/temp/docs/apr.html
Normal file
221
centos8_tomcat/apache-tomcat-7.0.108/temp/docs/apr.html
Normal file
@ -0,0 +1,221 @@
|
|||||||
|
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.108) - Apache Portable Runtime (APR) based Native library for Tomcat</title><meta name="author" content="Remy Maucherat"><style type="text/css" media="print">
|
||||||
|
.noPrint {display: none;}
|
||||||
|
td#mainBody {width: 100%;}
|
||||||
|
</style><style type="text/css">
|
||||||
|
code {background-color:rgb(224,255,255);padding:0 0.1em;}
|
||||||
|
code.attributeName, code.propertyName {background-color:transparent;}
|
||||||
|
|
||||||
|
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
table *:not(table) {
|
||||||
|
/* Prevent border-collapsing for table child elements like <div> */
|
||||||
|
border-collapse: separate;
|
||||||
|
}
|
||||||
|
|
||||||
|
th {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
div.codeBox {
|
||||||
|
overflow: auto;
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
div.codeBox pre {
|
||||||
|
margin: 0;
|
||||||
|
padding: 4px;
|
||||||
|
border: 1px solid #999;
|
||||||
|
border-radius: 5px;
|
||||||
|
background-color: #eff8ff;
|
||||||
|
display: table; /* To prevent <pre>s from taking the complete available width. */
|
||||||
|
/*
|
||||||
|
When it is officially supported, use the following CSS instead of display: table
|
||||||
|
to prevent big <pre>s from exceeding the browser window:
|
||||||
|
max-width: available;
|
||||||
|
width: min-content;
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
div.codeBox pre.wrap {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
table.defaultTable tr, table.detail-table tr {
|
||||||
|
border: 1px solid #CCC;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {
|
||||||
|
background-color: #FAFBFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {
|
||||||
|
background-color: #EEEFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable th, table.detail-table th {
|
||||||
|
background-color: #88b;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {
|
||||||
|
padding: 5px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
p.notice {
|
||||||
|
border: 1px solid rgb(255, 0, 0);
|
||||||
|
background-color: rgb(238, 238, 238);
|
||||||
|
color: rgb(0, 51, 102);
|
||||||
|
padding: 0.5em;
|
||||||
|
margin: 1em 2em 1em 1em;
|
||||||
|
}
|
||||||
|
</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="https://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="
|
||||||
|
The Apache Tomcat Servlet/JSP Container
|
||||||
|
" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.108, Jan 28 2021</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="https://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="host-manager-howto.html">6) Host Manager</a></li><li><a href="realm-howto.html">7) Realms and AAA</a></li><li><a href="security-manager-howto.html">8) Security Manager</a></li><li><a href="jndi-resources-howto.html">9) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">10) JDBC DataSources</a></li><li><a href="class-loader-howto.html">11) Classloading</a></li><li><a href="jasper-howto.html">12) JSPs</a></li><li><a href="ssl-howto.html">13) SSL/TLS</a></li><li><a href="ssi-howto.html">14) SSI</a></li><li><a href="cgi-howto.html">15) CGI</a></li><li><a href="proxy-howto.html">16) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">17) MBeans Descriptors</a></li><li><a href="default-servlet.html">18) Default Servlet</a></li><li><a href="cluster-howto.html">19) Clustering</a></li><li><a href="balancer-howto.html">20) Load Balancer</a></li><li><a href="connectors.html">21) Connectors</a></li><li><a href="monitoring.html">22) Monitoring and Management</a></li><li><a href="logging.html">23) Logging</a></li><li><a href="apr.html">24) APR/Native</a></li><li><a href="virtual-hosting-howto.html">25) Virtual Hosting</a></li><li><a href="aio.html">26) Advanced IO</a></li><li><a href="extras.html">27) Additional Components</a></li><li><a href="maven-jars.html">28) Mavenized</a></li><li><a href="security-howto.html">29) Security Considerations</a></li><li><a href="windows-service-howto.html">30) Windows Service</a></li><li><a href="windows-auth-howto.html">31) Windows Authentication</a></li><li><a href="jdbc-pool.html">32) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">33) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="annotationapi/index.html">Common Annotations 1.1 Javadocs</a></li><li><a href="https://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="https://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Portable Runtime (APR) based Native library for Tomcat</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Installation">Installation</a><ol><li><a href="#Windows">Windows</a></li><li><a href="#Linux">Linux</a></li></ol></li><li><a href="#APR_Components">APR Components</a></li><li><a href="#APR_Lifecycle_Listener_Configuration">APR Lifecycle Listener Configuration</a><ol><li><a href="#AprLifecycleListener">AprLifecycleListener</a></li></ol></li><li><a href="#APR_Connectors_Configuration">APR Connectors Configuration</a><ol><li><a href="#HTTP/HTTPS">HTTP/HTTPS</a></li><li><a href="#AJP">AJP</a></li></ol></li></ul>
|
||||||
|
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Tomcat can use the <a href="https://apr.apache.org/">Apache Portable Runtime</a> to
|
||||||
|
provide superior scalability, performance, and better integration with native server
|
||||||
|
technologies. The Apache Portable Runtime is a highly portable library that is at
|
||||||
|
the heart of Apache HTTP Server 2.x. APR has many uses, including access to advanced IO
|
||||||
|
functionality (such as sendfile, epoll and OpenSSL), OS level functionality (random number
|
||||||
|
generation, system status, etc), and native process handling (shared memory, NT
|
||||||
|
pipes and Unix sockets).
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
These features allows making Tomcat a general purpose webserver, will enable much better
|
||||||
|
integration with other native web technologies, and overall make Java much more viable as
|
||||||
|
a full fledged webserver platform rather than simply a backend focused technology.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Installation"><strong>Installation</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
APR support requires three main native components to be installed:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>APR library</li>
|
||||||
|
<li>JNI wrappers for APR used by Tomcat (libtcnative)</li>
|
||||||
|
<li>OpenSSL libraries</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Windows"><strong>Windows</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Windows binaries are provided for tcnative-1, which is a statically compiled .dll which includes
|
||||||
|
OpenSSL and APR. It can be downloaded from <a href="https://tomcat.apache.org/download-native.cgi">here</a>
|
||||||
|
as 32bit or AMD x86-64 binaries.
|
||||||
|
In security conscious production environments, it is recommended to use separate shared dlls
|
||||||
|
for OpenSSL, APR, and libtcnative-1, and update them as needed according to security bulletins.
|
||||||
|
Windows OpenSSL binaries are linked from the <a href="https://www.openssl.org">Official OpenSSL
|
||||||
|
website</a> (see related/binaries).
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Linux"><strong>Linux</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Most Linux distributions will ship packages for APR and OpenSSL. The JNI wrapper (libtcnative) will
|
||||||
|
then have to be compiled. It depends on APR, OpenSSL, and the Java headers.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Requirements:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>APR 1.2+ development headers (libapr1-dev package)</li>
|
||||||
|
<li>OpenSSL 0.9.7+ development headers (libssl-dev package)</li>
|
||||||
|
<li>JNI headers from Java compatible JDK 1.4+</li>
|
||||||
|
<li>GNU development environment (gcc, make)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The wrapper library sources are located in the Tomcat binary bundle, in the
|
||||||
|
<code>bin/tomcat-native.tar.gz</code> archive.
|
||||||
|
Once the build environment is installed and the source archive is extracted, the wrapper library
|
||||||
|
can be compiled using (from the folder containing the configure script):
|
||||||
|
</p>
|
||||||
|
<div class="codeBox"><pre><code>./configure && make && make install</code></pre></div>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="APR Components"><!--()--></a><a name="APR_Components"><strong>APR Components</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Once the libraries are properly installed and available to Java (if loading fails, the library path
|
||||||
|
will be displayed), the Tomcat connectors will automatically use APR. Configuration of the connectors
|
||||||
|
is similar to the regular connectors, but have a few extra attributes which are used to configure
|
||||||
|
APR components. Note that the defaults should be well tuned for most use cases, and additional
|
||||||
|
tweaking shouldn't be required.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
When APR is enabled, the following features are also enabled in Tomcat:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>Secure session ID generation by default on all platforms (platforms other than Linux required
|
||||||
|
random number generation using a configured entropy)</li>
|
||||||
|
<li>OS level statistics on memory usage and CPU usage by the Tomcat process are displayed by
|
||||||
|
the status servlet</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="APR Lifecycle Listener Configuration"><!--()--></a><a name="APR_Lifecycle_Listener_Configuration"><strong>APR Lifecycle Listener Configuration</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="AprLifecycleListener"><strong>AprLifecycleListener</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
<table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">SSLEngine</code></td><td align="left" valign="center">
|
||||||
|
<p>
|
||||||
|
Name of the SSLEngine to use. off: Do not use SSL, on: Use SSL but no specific ENGINE.
|
||||||
|
The default value is <b>on</b>.
|
||||||
|
This initializes the native SSL engine, then enable the use of this engine in the connector
|
||||||
|
using the <code>SSLEnabled</code> attribute. Example:
|
||||||
|
</p>
|
||||||
|
<div class="codeBox"><pre><code><Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /></code></pre></div>
|
||||||
|
|
||||||
|
<p>See the <a href="http://www.openssl.org">Official OpenSSL
|
||||||
|
website</a> for more details on SSL hardware engines and manufacturers.
|
||||||
|
</p>
|
||||||
|
</td></tr></table>
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="APR Connectors Configuration"><!--()--></a><a name="APR_Connectors_Configuration"><strong>APR Connectors Configuration</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="HTTP/HTTPS"><strong>HTTP/HTTPS</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>For HTTP configuration, see the <a href="config/http.html">HTTP</a>
|
||||||
|
connector configuration documentation.</p>
|
||||||
|
|
||||||
|
<p>For HTTPS configuration, see the
|
||||||
|
<a href="config/http.html#SSL_Support">HTTPS</a> connector configuration
|
||||||
|
documentation.</p>
|
||||||
|
|
||||||
|
<p>An example SSL Connector declaration is:</p>
|
||||||
|
<div class="codeBox"><pre><code><Connector port="443" maxHttpHeaderSize="8192"
|
||||||
|
maxThreads="150"
|
||||||
|
enableLookups="false" disableUploadTimeout="true"
|
||||||
|
acceptCount="100" scheme="https" secure="true"
|
||||||
|
SSLEnabled="true"
|
||||||
|
SSLCertificateFile="${catalina.base}/conf/localhost.crt"
|
||||||
|
SSLCertificateKeyFile="${catalina.base}/conf/localhost.key" /></code></pre></div>
|
||||||
|
|
||||||
|
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="AJP"><strong>AJP</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>For AJP configuration, see the <a href="config/ajp.html">AJP</a>
|
||||||
|
connector configuration documentation.</p>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>
|
||||||
|
Copyright © 1999-2021, Apache Software Foundation
|
||||||
|
</em></font></div></td></tr></table></body></html>
|
||||||
@ -0,0 +1,112 @@
|
|||||||
|
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Architecture (7.0.108) - Table of Contents</title><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">
|
||||||
|
.noPrint {display: none;}
|
||||||
|
td#mainBody {width: 100%;}
|
||||||
|
</style><style type="text/css">
|
||||||
|
code {background-color:rgb(224,255,255);padding:0 0.1em;}
|
||||||
|
code.attributeName, code.propertyName {background-color:transparent;}
|
||||||
|
|
||||||
|
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
table *:not(table) {
|
||||||
|
/* Prevent border-collapsing for table child elements like <div> */
|
||||||
|
border-collapse: separate;
|
||||||
|
}
|
||||||
|
|
||||||
|
th {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
div.codeBox {
|
||||||
|
overflow: auto;
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
div.codeBox pre {
|
||||||
|
margin: 0;
|
||||||
|
padding: 4px;
|
||||||
|
border: 1px solid #999;
|
||||||
|
border-radius: 5px;
|
||||||
|
background-color: #eff8ff;
|
||||||
|
display: table; /* To prevent <pre>s from taking the complete available width. */
|
||||||
|
/*
|
||||||
|
When it is officially supported, use the following CSS instead of display: table
|
||||||
|
to prevent big <pre>s from exceeding the browser window:
|
||||||
|
max-width: available;
|
||||||
|
width: min-content;
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
div.codeBox pre.wrap {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
table.defaultTable tr, table.detail-table tr {
|
||||||
|
border: 1px solid #CCC;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {
|
||||||
|
background-color: #FAFBFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {
|
||||||
|
background-color: #EEEFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable th, table.detail-table th {
|
||||||
|
background-color: #88b;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {
|
||||||
|
padding: 5px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
p.notice {
|
||||||
|
border: 1px solid rgb(255, 0, 0);
|
||||||
|
background-color: rgb(238, 238, 238);
|
||||||
|
color: rgb(0, 51, 102);
|
||||||
|
padding: 0.5em;
|
||||||
|
margin: 1em 2em 1em 1em;
|
||||||
|
}
|
||||||
|
</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="https://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="
|
||||||
|
The Apache Tomcat Servlet/JSP Container
|
||||||
|
" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.108, Jan 28 2021</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Architecture Home</a></li><li><a href="https://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="overview.html">Overview</a></li><li><a href="startup.html">Server Startup</a></li><li><a href="requestProcess.html">Request Process</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Table of Contents</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Preface"><strong>Preface</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>This section of the Tomcat documentation attempts to explain
|
||||||
|
the architecture and design of the Tomcat server. It includes significant
|
||||||
|
contributions from several tomcat developers:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>Yoav Shapira
|
||||||
|
(<a href="mailto:yoavs@apache.org">yoavs@apache.org</a>)</li>
|
||||||
|
<li>Jeanfrancois Arcand
|
||||||
|
(<a href="mailto:jfarcand@apache.org">jfarcand@apache.org</a>)</li>
|
||||||
|
<li>Filip Hanik
|
||||||
|
(<a href="mailto:fhanik@apache.org">fhanik@apache.org</a>)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>The information presented is divided into the following sections:</p>
|
||||||
|
<ul>
|
||||||
|
<li><a href="overview.html"><strong>Overview</strong></a> -
|
||||||
|
An overview of the Tomcat server architecture with key terms
|
||||||
|
and concepts.</li>
|
||||||
|
<li><a href="startup.html"><strong>Server Startup</strong></a> -
|
||||||
|
A detailed description, with sequence diagrams, of how the Tomcat
|
||||||
|
server starts up.</li>
|
||||||
|
<li><a href="requestProcess.html"><strong>Request Process Flow</strong></a> -
|
||||||
|
A detailed description of how Tomcat handles a request.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>
|
||||||
|
Copyright © 1999-2021, Apache Software Foundation
|
||||||
|
</em></font></div></td></tr></table></body></html>
|
||||||
@ -0,0 +1,181 @@
|
|||||||
|
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Architecture (7.0.108) - Architecture Overview</title><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">
|
||||||
|
.noPrint {display: none;}
|
||||||
|
td#mainBody {width: 100%;}
|
||||||
|
</style><style type="text/css">
|
||||||
|
code {background-color:rgb(224,255,255);padding:0 0.1em;}
|
||||||
|
code.attributeName, code.propertyName {background-color:transparent;}
|
||||||
|
|
||||||
|
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
table *:not(table) {
|
||||||
|
/* Prevent border-collapsing for table child elements like <div> */
|
||||||
|
border-collapse: separate;
|
||||||
|
}
|
||||||
|
|
||||||
|
th {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
div.codeBox {
|
||||||
|
overflow: auto;
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
div.codeBox pre {
|
||||||
|
margin: 0;
|
||||||
|
padding: 4px;
|
||||||
|
border: 1px solid #999;
|
||||||
|
border-radius: 5px;
|
||||||
|
background-color: #eff8ff;
|
||||||
|
display: table; /* To prevent <pre>s from taking the complete available width. */
|
||||||
|
/*
|
||||||
|
When it is officially supported, use the following CSS instead of display: table
|
||||||
|
to prevent big <pre>s from exceeding the browser window:
|
||||||
|
max-width: available;
|
||||||
|
width: min-content;
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
div.codeBox pre.wrap {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
table.defaultTable tr, table.detail-table tr {
|
||||||
|
border: 1px solid #CCC;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {
|
||||||
|
background-color: #FAFBFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {
|
||||||
|
background-color: #EEEFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable th, table.detail-table th {
|
||||||
|
background-color: #88b;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {
|
||||||
|
padding: 5px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
p.notice {
|
||||||
|
border: 1px solid rgb(255, 0, 0);
|
||||||
|
background-color: rgb(238, 238, 238);
|
||||||
|
color: rgb(0, 51, 102);
|
||||||
|
padding: 0.5em;
|
||||||
|
margin: 1em 2em 1em 1em;
|
||||||
|
}
|
||||||
|
</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="https://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="
|
||||||
|
The Apache Tomcat Servlet/JSP Container
|
||||||
|
" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.108, Jan 28 2021</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Architecture Home</a></li><li><a href="https://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="overview.html">Overview</a></li><li><a href="startup.html">Server Startup</a></li><li><a href="requestProcess.html">Request Process</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Architecture Overview</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
<p>
|
||||||
|
This page provides an overview of the Tomcat server architecture.
|
||||||
|
</p>
|
||||||
|
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Terms"><strong>Terms</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Server"><strong>Server</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
<p>
|
||||||
|
In the Tomcat world, a
|
||||||
|
<a href="../config/server.html">Server</a> represents the whole container.
|
||||||
|
Tomcat provides a default implementation of the
|
||||||
|
<a href="../api/org/apache/catalina/Server.html">Server interface</a>
|
||||||
|
which is rarely customized by users.
|
||||||
|
</p>
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Service"><strong>Service</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
<p>
|
||||||
|
A <a href="../config/service.html">Service</a> is an intermediate component
|
||||||
|
which lives inside a Server and ties one or more Connectors to exactly one
|
||||||
|
Engine. The Service element is rarely customized by users, as the default
|
||||||
|
implementation is simple and sufficient:
|
||||||
|
<a href="../api/org/apache/catalina/Service.html">Service interface</a>.
|
||||||
|
</p>
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Engine"><strong>Engine</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
<p>
|
||||||
|
An
|
||||||
|
<a href="../config/engine.html">Engine</a> represents request processing
|
||||||
|
pipeline for a specific Service. As a Service may have multiple Connectors,
|
||||||
|
the Engine receives and processes all requests from these connectors, handing
|
||||||
|
the response back to the appropriate connector for transmission to the client.
|
||||||
|
The <a href="../api/org/apache/catalina/Engine.html">Engine interface</a>
|
||||||
|
may be implemented to supply custom Engines, though this is uncommon.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Note that the Engine may be used for Tomcat server clustering via the
|
||||||
|
jvmRoute parameter. Read the Clustering documentation for more information.
|
||||||
|
</p>
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Host"><strong>Host</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
<p>
|
||||||
|
A <a href="../config/host.html">Host</a> is an association of a network name,
|
||||||
|
e.g. www.yourcompany.com, to the Tomcat server. An Engine may contain
|
||||||
|
multiple hosts, and the Host element also supports network aliases such as
|
||||||
|
yourcompany.com and abc.yourcompany.com. Users rarely create custom
|
||||||
|
<a href="../api/org/apache/catalina/Host.html">Hosts</a>
|
||||||
|
because the
|
||||||
|
<a href="../api/org/apache/catalina/core/StandardHost.html">StandardHost
|
||||||
|
implementation</a> provides significant additional functionality.
|
||||||
|
</p>
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Connector"><strong>Connector</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
<p>
|
||||||
|
A Connector handles communications with the client. There are multiple
|
||||||
|
connectors available with Tomcat. These include the
|
||||||
|
<a href="../config/http.html">HTTP connector</a> which is used for
|
||||||
|
most HTTP traffic, especially when running Tomcat as a standalone server,
|
||||||
|
and the <a href="../config/ajp.html">AJP connector</a> which implements
|
||||||
|
the AJP protocol used when connecting Tomcat to a web server such as
|
||||||
|
Apache HTTPD server. Creating a customized connector is a significant
|
||||||
|
effort.
|
||||||
|
</p>
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Context"><strong>Context</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
<p>
|
||||||
|
A
|
||||||
|
<a href="../config/context.html">Context</a>
|
||||||
|
represents a web application. A Host may contain multiple
|
||||||
|
contexts, each with a unique path. The
|
||||||
|
<a href="../api/org/apache/catalina/Context.html">Context
|
||||||
|
interface</a> may be implemented to create custom Contexts, but
|
||||||
|
this is rarely the case because the
|
||||||
|
<a href="../api/org/apache/catalina/core/StandardContext.html">
|
||||||
|
StandardContext</a> provides significant additional functionality.
|
||||||
|
</p>
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Comments"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
<p>
|
||||||
|
Tomcat is designed to be a fast and efficient implementation of the
|
||||||
|
Servlet Specification. Tomcat came about as the reference implementation
|
||||||
|
of this specification, and has remained rigorous in adhering to the
|
||||||
|
specification. At the same time, significant attention has been paid
|
||||||
|
to Tomcat's performance and it is now on par with other servlet containers,
|
||||||
|
including commercial ones.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
In recent releases of Tomcat, mostly starting with Tomcat 5,
|
||||||
|
we have begun efforts to make more aspects of Tomcat manageable via
|
||||||
|
JMX. In addition, the Manager and Admin webapps have been greatly
|
||||||
|
enhanced and improved. Manageability is a primary area of concern
|
||||||
|
for us as the product matures and the specification becomes more
|
||||||
|
stable.
|
||||||
|
</p>
|
||||||
|
</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>
|
||||||
|
Copyright © 1999-2021, Apache Software Foundation
|
||||||
|
</em></font></div></td></tr></table></body></html>
|
||||||
@ -0,0 +1,120 @@
|
|||||||
|
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Architecture (7.0.108) - Request Process Flow</title><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">
|
||||||
|
.noPrint {display: none;}
|
||||||
|
td#mainBody {width: 100%;}
|
||||||
|
</style><style type="text/css">
|
||||||
|
code {background-color:rgb(224,255,255);padding:0 0.1em;}
|
||||||
|
code.attributeName, code.propertyName {background-color:transparent;}
|
||||||
|
|
||||||
|
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
table *:not(table) {
|
||||||
|
/* Prevent border-collapsing for table child elements like <div> */
|
||||||
|
border-collapse: separate;
|
||||||
|
}
|
||||||
|
|
||||||
|
th {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
div.codeBox {
|
||||||
|
overflow: auto;
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
div.codeBox pre {
|
||||||
|
margin: 0;
|
||||||
|
padding: 4px;
|
||||||
|
border: 1px solid #999;
|
||||||
|
border-radius: 5px;
|
||||||
|
background-color: #eff8ff;
|
||||||
|
display: table; /* To prevent <pre>s from taking the complete available width. */
|
||||||
|
/*
|
||||||
|
When it is officially supported, use the following CSS instead of display: table
|
||||||
|
to prevent big <pre>s from exceeding the browser window:
|
||||||
|
max-width: available;
|
||||||
|
width: min-content;
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
div.codeBox pre.wrap {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
table.defaultTable tr, table.detail-table tr {
|
||||||
|
border: 1px solid #CCC;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {
|
||||||
|
background-color: #FAFBFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {
|
||||||
|
background-color: #EEEFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable th, table.detail-table th {
|
||||||
|
background-color: #88b;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {
|
||||||
|
padding: 5px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
p.notice {
|
||||||
|
border: 1px solid rgb(255, 0, 0);
|
||||||
|
background-color: rgb(238, 238, 238);
|
||||||
|
color: rgb(0, 51, 102);
|
||||||
|
padding: 0.5em;
|
||||||
|
margin: 1em 2em 1em 1em;
|
||||||
|
}
|
||||||
|
</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="https://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="
|
||||||
|
The Apache Tomcat Servlet/JSP Container
|
||||||
|
" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.108, Jan 28 2021</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Architecture Home</a></li><li><a href="https://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="overview.html">Overview</a></li><li><a href="startup.html">Server Startup</a></li><li><a href="requestProcess.html">Request Process</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Request Process Flow</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Request Process Flow"><!--()--></a><a name="Request_Process_Flow"><strong>Request Process Flow</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
This page describes the process used by Tomcat to handle
|
||||||
|
an incoming request. This process is largely defined by
|
||||||
|
the Servlet Specification, which outlines the order
|
||||||
|
of events that must take place.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="description"><strong>description</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
<p>
|
||||||
|
TODO
|
||||||
|
</p>
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="diagrams"><strong>diagrams</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
<p>
|
||||||
|
A UML sequence diagram of the request process is available
|
||||||
|
<a href="requestProcess/request-process.png">here.</a>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
A UML sequence diagram of the authentication process is available
|
||||||
|
<a href="requestProcess/authentication-process.png">here.</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments"><strong>comments</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
<p>
|
||||||
|
The Servlet Specification provides many opportunities for
|
||||||
|
listening in (using Listeners) or modifying (using Filters)
|
||||||
|
the request handling process even before the request arrives
|
||||||
|
at the servlet that will handle it.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>
|
||||||
|
Copyright © 1999-2021, Apache Software Foundation
|
||||||
|
</em></font></div></td></tr></table></body></html>
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 42 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 107 KiB |
@ -0,0 +1,119 @@
|
|||||||
|
<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Architecture (7.0.108) - Startup</title><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">
|
||||||
|
.noPrint {display: none;}
|
||||||
|
td#mainBody {width: 100%;}
|
||||||
|
</style><style type="text/css">
|
||||||
|
code {background-color:rgb(224,255,255);padding:0 0.1em;}
|
||||||
|
code.attributeName, code.propertyName {background-color:transparent;}
|
||||||
|
|
||||||
|
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
table *:not(table) {
|
||||||
|
/* Prevent border-collapsing for table child elements like <div> */
|
||||||
|
border-collapse: separate;
|
||||||
|
}
|
||||||
|
|
||||||
|
th {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
div.codeBox {
|
||||||
|
overflow: auto;
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
div.codeBox pre {
|
||||||
|
margin: 0;
|
||||||
|
padding: 4px;
|
||||||
|
border: 1px solid #999;
|
||||||
|
border-radius: 5px;
|
||||||
|
background-color: #eff8ff;
|
||||||
|
display: table; /* To prevent <pre>s from taking the complete available width. */
|
||||||
|
/*
|
||||||
|
When it is officially supported, use the following CSS instead of display: table
|
||||||
|
to prevent big <pre>s from exceeding the browser window:
|
||||||
|
max-width: available;
|
||||||
|
width: min-content;
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
div.codeBox pre.wrap {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
table.defaultTable tr, table.detail-table tr {
|
||||||
|
border: 1px solid #CCC;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {
|
||||||
|
background-color: #FAFBFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {
|
||||||
|
background-color: #EEEFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable th, table.detail-table th {
|
||||||
|
background-color: #88b;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {
|
||||||
|
padding: 5px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
p.notice {
|
||||||
|
border: 1px solid rgb(255, 0, 0);
|
||||||
|
background-color: rgb(238, 238, 238);
|
||||||
|
color: rgb(0, 51, 102);
|
||||||
|
padding: 0.5em;
|
||||||
|
margin: 1em 2em 1em 1em;
|
||||||
|
}
|
||||||
|
</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="https://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="
|
||||||
|
The Apache Tomcat Servlet/JSP Container
|
||||||
|
" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.108, Jan 28 2021</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Architecture Home</a></li><li><a href="https://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="overview.html">Overview</a></li><li><a href="startup.html">Server Startup</a></li><li><a href="requestProcess.html">Request Process</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Startup</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Server Startup"><!--()--></a><a name="Server_Startup"><strong>Server Startup</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
This page describes how the Tomcat server starts up. There are several
|
||||||
|
different ways to start tomcat, including:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>From the command line.</li>
|
||||||
|
<li>From a Java program as an embedded server.</li>
|
||||||
|
<li>Automatically as a Windows service.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="description"><strong>description</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
<p>
|
||||||
|
A text description of the startup procedure is available
|
||||||
|
<a href="startup/serverStartup.txt">here.</a>
|
||||||
|
</p>
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="diagram"><strong>diagram</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
<p>
|
||||||
|
A UML sequence diagram of the startup procedure is available
|
||||||
|
<a href="startup/serverStartup.pdf">here.</a>
|
||||||
|
</p>
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments"><strong>comments</strong></a></font></td></tr><tr><td><blockquote>
|
||||||
|
<p>
|
||||||
|
The startup process can be customized in many ways, both
|
||||||
|
by modifying Tomcat code and by implementing your own
|
||||||
|
LifecycleListeners which are then registered in the server.xml
|
||||||
|
configuration file.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table>
|
||||||
|
|
||||||
|
</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>
|
||||||
|
Copyright © 1999-2021, Apache Software Foundation
|
||||||
|
</em></font></div></td></tr></table></body></html>
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user