Initial Commit- deadbrain
2378
databasedump/mymedisys_db_full-backup-2023-06-13.sql
Normal file
27
databasedump/mymedisys_stg_full-backup-2023-06-13.sql
Normal file
|
@ -0,0 +1,27 @@
|
|||
-- MySQL dump 10.13 Distrib 8.0.21, for Linux (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: mymedisys_stg
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 8.0.21
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!50503 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2023-06-13 12:56:25
|
|
@ -0,0 +1,49 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>com.concept</groupId>
|
||||
<artifactId>mymedisys</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<name>Development Master POM</name>
|
||||
<url>http://maven.apache.org</url>
|
||||
<properties>
|
||||
<build.path>/var/lib/jenkins/workspace</build.path>
|
||||
<project.name>MyMEDISYS</project.name>
|
||||
</properties>
|
||||
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>all</id>
|
||||
<activation>
|
||||
<activeByDefault>true</activeByDefault>
|
||||
</activation>
|
||||
<modules>
|
||||
<module>core-utility</module>
|
||||
<module>identity-management-system/identity-management-system-api</module>
|
||||
<module>notification-alert-system/notification-alert-system-api</module>
|
||||
<module>file-management-system/file-management-system-api</module>
|
||||
<module>workflow-process-system/workflow-process-system-api</module>
|
||||
<module>identity-management-system/identity-management-system</module>
|
||||
<module>notification-alert-system/notification-alert-system</module>
|
||||
<module>file-management-system/file-management-system</module>
|
||||
<module>workflow-process-system/workflow-process-system</module>
|
||||
<module>materialkit-webjar</module>
|
||||
|
||||
<module>backend/backend-api</module>
|
||||
<module>report/report-api</module>
|
||||
<module>report/report</module>
|
||||
<module>backend/backend</module>
|
||||
<module>frontend/frontend</module>
|
||||
</modules>
|
||||
</profile>
|
||||
</profiles>
|
||||
<build>
|
||||
<plugins>
|
||||
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
ims.service.client = mymedisys-fms
|
||||
ims.service.skey = myMEDISYS@2020
|
||||
|
||||
# ===============================
|
||||
# = MongoDB
|
||||
# ===============================
|
||||
mongo.db.url = mongodb://192.168.2.12:27017
|
||||
mongo.db.name = mymedisys_fms
|
||||
mongo.db.uname =
|
||||
mongo.db.pword =
|
||||
|
||||
# ===============================
|
||||
# = REDIS
|
||||
# ===============================
|
||||
redis.cache.host = 127.0.0.1
|
||||
redis.cache.port = 6379
|
||||
redis.cache.uname =
|
||||
redis.cache.pword =
|
||||
redis.cache.bucket = FMS_BUCKET
|
||||
redis.cache.duration = 86400
|
||||
|
||||
|
||||
# ===============================
|
||||
# = SERVICE URL
|
||||
# ===============================
|
||||
ims.service.url = http://127.0.0.1:8080/identity-management-system
|
||||
ims.service.timeout = 6000
|
||||
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
ims.service.client = mymedisys-ims
|
||||
ims.service.skey = myMEDISYS@2020
|
||||
ims.service.ekey = HGsYjzYbE7AzpMbiInuJ
|
||||
|
||||
# ===============================
|
||||
# = MySQL
|
||||
# ===============================
|
||||
mysql.db.driver = com.mysql.cj.jdbc.Driver
|
||||
mysql.db.url = jdbc:mysql://192.168.2.12:3306/mymedisys_db?zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Kuala_Lumpur
|
||||
mysql.db.uname = mymedisys.admin
|
||||
mysql.db.pword = /NToPXxweodmV3QrBAW+oA==
|
||||
|
||||
# HikariCP
|
||||
mysql.db.pool.hikaricp.connectionTimeout = 30000
|
||||
mysql.db.pool.hikaricp.idleTimeout = 600000
|
||||
mysql.db.pool.hikaricp.maxLifetime = 1800000
|
||||
mysql.db.pool.hikaricp.connectionTestQuery = SELECT 1
|
||||
mysql.db.pool.hikaricp.minimumIdle = 0
|
||||
mysql.db.pool.hikaricp.maximumPoolSize = 10
|
||||
mysql.db.pool.hikaricp.connectionInitSql = SELECT 1
|
||||
mysql.db.pool.hikaricp.validationTimeout = 5000
|
||||
mysql.db.pool.hikaricp.leakDetectionThreshold = 60000
|
||||
|
||||
# ===============================
|
||||
# = MongoDB
|
||||
# ===============================
|
||||
mongo.db.url = mongodb://192.168.2.12:27017
|
||||
mongo.db.name = mymedisys_ims
|
||||
mongo.db.setname =
|
||||
mongo.db.uname =
|
||||
mongo.db.pword =
|
||||
|
||||
# ===============================
|
||||
# = REDIS
|
||||
# ===============================
|
||||
redis.cache.host = 127.0.0.1
|
||||
redis.cache.port = 6379
|
||||
redis.cache.uname =
|
||||
redis.cache.pword =
|
||||
redis.cache.bucket = IMS_BUCKET
|
||||
redis.cache.duration = 86400
|
||||
|
||||
# ===============================
|
||||
# = SERVICE URL
|
||||
# ===============================
|
||||
##Identity Management System
|
||||
ims.service.timeout = 60000
|
||||
ims.uid.length = 8
|
||||
ims.txnid.length = 15
|
||||
|
||||
## Notification Alert System
|
||||
nas.service.url = http://127.0.0.1:8080/notification-alert-system
|
||||
nas.service.timeout = 60000
|
||||
|
||||
ims.jwt.secret = WmHJGJJPfH8LQFz
|
||||
ims.jwt.expiration = 86400000
|
|
@ -0,0 +1,74 @@
|
|||
ims.service.client = mymedisys-nas
|
||||
ims.service.skey = myMEDISYS@2020
|
||||
|
||||
# ===============================
|
||||
# = MySQL
|
||||
# ===============================
|
||||
mysql.db.driver = com.mysql.cj.jdbc.Driver
|
||||
mysql.db.url = jdbc:mysql://192.168.2.12:3306/mymedisys_db?zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Kuala_Lumpur
|
||||
mysql.db.uname = mymedisys.admin
|
||||
mysql.db.pword = /NToPXxweodmV3QrBAW+oA==
|
||||
|
||||
# ===============================
|
||||
# = MongoDB
|
||||
# ===============================
|
||||
mongo.db.url = mongodb://192.168.2.12:27017
|
||||
mongo.db.name = mymedisys_nas
|
||||
mongo.db.setname =
|
||||
mongo.db.uname =
|
||||
mongo.db.pword =
|
||||
|
||||
|
||||
# HikariCP
|
||||
mysql.db.pool.hikaricp.connectionTimeout = 30000
|
||||
mysql.db.pool.hikaricp.idleTimeout = 600000
|
||||
mysql.db.pool.hikaricp.maxLifetime = 1800000
|
||||
mysql.db.pool.hikaricp.connectionTestQuery = SELECT 1
|
||||
mysql.db.pool.hikaricp.minimumIdle = 0
|
||||
mysql.db.pool.hikaricp.maximumPoolSize = 10
|
||||
mysql.db.pool.hikaricp.connectionInitSql = SELECT 1
|
||||
mysql.db.pool.hikaricp.validationTimeout = 5000
|
||||
mysql.db.pool.hikaricp.leakDetectionThreshold = 60000
|
||||
|
||||
# ===============================
|
||||
# = MANDRILL
|
||||
# ===============================
|
||||
mail.from = i-Care <noreply@icare.my>
|
||||
mail.host = mail.conceptway.com.my
|
||||
mail.protocol = smtp
|
||||
mail.port = 587
|
||||
mail.username = myfrims@conceptway.com.my
|
||||
mail.password = Frims@12345
|
||||
|
||||
# ===============================
|
||||
# = SMTP
|
||||
# ===============================
|
||||
sms.gateway.username =
|
||||
sms.gateway.password =
|
||||
sms.gateway.auth.url =
|
||||
|
||||
# ===============================
|
||||
# = FCM
|
||||
# ===============================
|
||||
fcm.googleapis.url =
|
||||
fcm.googleapis.key =
|
||||
fcm.service.timeout = 60000
|
||||
|
||||
# ===============================
|
||||
# = SERVICE URL
|
||||
# ===============================
|
||||
## Identity Management System
|
||||
ims.service.url = http://127.0.0.1:8080/identity-management-system
|
||||
ims.service.timeout = 60000
|
||||
|
||||
## File Management System
|
||||
fms.service.url = http://127.0.0.1:8080/file-management-sytem
|
||||
fms.service.timeout = 60000
|
||||
|
||||
## Report Gateway
|
||||
rpt.service.url = http://127.0.0.1:8080/mymedisys-report
|
||||
rpt.service.timeout = 60000
|
||||
|
||||
# Notification Send All Interval
|
||||
nas.service.interval = 60000
|
||||
nas.service.timeout = 2000
|
|
@ -0,0 +1,75 @@
|
|||
ims.service.client = mymedisys-wps
|
||||
ims.service.skey = myMEDISYS@2020
|
||||
|
||||
# ===============================
|
||||
# = MySQL
|
||||
# ===============================
|
||||
mysql.db.driver = com.mysql.cj.jdbc.Driver
|
||||
mysql.db.url = jdbc:mysql://192.168.2.12:3306/mymedisys_db?zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Kuala_Lumpur
|
||||
mysql.db.uname = mymedisys.admin
|
||||
mysql.db.pword = /NToPXxweodmV3QrBAW+oA==
|
||||
|
||||
|
||||
# HikariCP
|
||||
mysql.db.pool.hikaricp.connectionTimeout = 30000
|
||||
mysql.db.pool.hikaricp.idleTimeout = 600000
|
||||
mysql.db.pool.hikaricp.maxLifetime = 1800000
|
||||
mysql.db.pool.hikaricp.connectionTestQuery = SELECT 1
|
||||
mysql.db.pool.hikaricp.minimumIdle = 0
|
||||
mysql.db.pool.hikaricp.maximumPoolSize = 10
|
||||
mysql.db.pool.hikaricp.connectionInitSql = SELECT 1
|
||||
mysql.db.pool.hikaricp.validationTimeout = 5000
|
||||
mysql.db.pool.hikaricp.leakDetectionThreshold = 60000
|
||||
|
||||
# ===============================
|
||||
# = REDIS
|
||||
# ===============================
|
||||
redis.cache.host = 127.0.0.1
|
||||
redis.cache.port = 6379
|
||||
redis.cache.uname =
|
||||
redis.cache.pword =
|
||||
redis.cache.bucket = WPS_BUCKET
|
||||
redis.cache.duration = 86400
|
||||
|
||||
# ===============================
|
||||
# = MANDRILL
|
||||
# ===============================
|
||||
mail.from = MyMEDISYS Development <noreply@mymedisys.com.my>
|
||||
mail.host = mail.conceptway.com.my
|
||||
mail.protocol = smtp
|
||||
mail.port = 587
|
||||
mail.username = myfrims@conceptway.com.my
|
||||
mail.password = Frims@12345
|
||||
|
||||
# ===============================
|
||||
# = SMTP
|
||||
# ===============================
|
||||
sms.gateway.username =
|
||||
sms.gateway.password =
|
||||
sms.gateway.auth.url =
|
||||
|
||||
# ===============================
|
||||
# = FCM
|
||||
# ===============================
|
||||
fcm.googleapis.url =
|
||||
fcm.googleapis.key =
|
||||
fcm.service.timeout = 60000
|
||||
|
||||
# ===============================
|
||||
# = SERVICE URL
|
||||
# ===============================
|
||||
## Identity Management System
|
||||
ims.service.url = http://127.0.0.1:8080/identity-management-system
|
||||
ims.service.timeout = 60000
|
||||
|
||||
## File Management System
|
||||
fms.service.url = http://127.0.0.1:8080/file-management-sytem
|
||||
fms.service.timeout = 60000
|
||||
|
||||
## Report Gateway
|
||||
rpt.service.url = http://127.0.0.1:8080/mymedisys-report
|
||||
rpt.service.timeout = 60000
|
||||
|
||||
# Notification Send All Interval
|
||||
nas.service.interval = 60000
|
||||
nas.service.timeout = 2000
|
|
@ -0,0 +1,59 @@
|
|||
ims.service.client = mymedisys-be
|
||||
ims.service.skey = myMEDISYS@2020
|
||||
|
||||
# ===============================
|
||||
# = MySQL
|
||||
# ===============================
|
||||
mysql.db.driver = com.mysql.cj.jdbc.Driver
|
||||
mysql.db.url = jdbc:mysql://192.168.2.12:3306/mymedisys_db?zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Kuala_Lumpur
|
||||
mysql.db.uname = mymedisys.admin
|
||||
mysql.db.pword = /NToPXxweodmV3QrBAW+oA==
|
||||
|
||||
# HikariCP
|
||||
mysql.db.pool.hikaricp.connectionTimeout = 30000
|
||||
mysql.db.pool.hikaricp.idleTimeout = 600000
|
||||
mysql.db.pool.hikaricp.maxLifetime = 1800000
|
||||
mysql.db.pool.hikaricp.connectionTestQuery = SELECT 1
|
||||
mysql.db.pool.hikaricp.minimumIdle = 0
|
||||
mysql.db.pool.hikaricp.maximumPoolSize = 10
|
||||
mysql.db.pool.hikaricp.connectionInitSql = SELECT 1
|
||||
mysql.db.pool.hikaricp.validationTimeout = 5000
|
||||
mysql.db.pool.hikaricp.leakDetectionThreshold = 60000
|
||||
|
||||
# ===============================
|
||||
# = REDIS
|
||||
# ===============================
|
||||
redis.cache.host = 127.0.0.1
|
||||
redis.cache.port = 6379
|
||||
redis.cache.uname =
|
||||
redis.cache.pword =
|
||||
redis.cache.bucket = BE_BUCKET
|
||||
redis.cache.duration = 86400
|
||||
|
||||
# ===============================
|
||||
# = SERVICE URL
|
||||
# ===============================
|
||||
## Identity Management System
|
||||
ims.service.url = http://127.0.0.1:8080/identity-management-system
|
||||
ims.service.timeout = 60000
|
||||
|
||||
## File Management System
|
||||
fms.service.url = http://127.0.0.1:8080/file-management-system
|
||||
fms.service.timeout = 60000
|
||||
|
||||
## Notification and Alert System
|
||||
nas.service.url = http://127.0.0.1:8080/notification-alert-system
|
||||
nas.service.timeout = 60000
|
||||
|
||||
## Workflow Process System
|
||||
wps.service.url = http://127.0.0.1:8080/workflow-process-system
|
||||
wps.service.timeout = 60000
|
||||
|
||||
## Report Gateway
|
||||
rpt.service.url = http://127.0.0.1:8080/mymedisys-report
|
||||
rpt.service.timeout = 60000
|
||||
|
||||
##MyFrims API
|
||||
myfrims.service.url=http://192.168.2.102:8080/myfrims-backend
|
||||
myfrims.service.timeout=60000
|
||||
system.type=myFrims
|
|
@ -0,0 +1,65 @@
|
|||
ims.service.client = mymedisys-fe
|
||||
ims.service.skey = myMEDISYS@2020
|
||||
ims.service.ekey = 5f50787d0aa5e668053d527c
|
||||
|
||||
app.portal.type = MYMEDISYS
|
||||
gov.portal.access.from = 00:00
|
||||
gov.portal.access.to = 24:00
|
||||
|
||||
# Server URI-Encoding
|
||||
server.tomcat.uri-encoding = utf-8
|
||||
server.tomcat.max-http-post-size: 10MB
|
||||
|
||||
# Application Config
|
||||
thymleaf.template.cacheable = false
|
||||
|
||||
## session.secure.cookie: DEV = false, PROD = true
|
||||
session.secure.cookie = true
|
||||
|
||||
is.using.https = false;
|
||||
|
||||
# ===============================
|
||||
# = REDIS
|
||||
# ===============================
|
||||
redis.cache.host = 127.0.0.1
|
||||
redis.cache.port = 6379
|
||||
redis.cache.uname =
|
||||
redis.cache.pword =
|
||||
redis.cache.bucket = FE_BUCKET
|
||||
redis.cache.duration = 86400
|
||||
|
||||
# ===============================
|
||||
# = ReCaptcha
|
||||
# ===============================
|
||||
recaptcha.sitekey = 6Le6PxoaAAAAAHDMsT5-lhC3kX-nTzTKHXvCVbhK
|
||||
|
||||
# ===============================
|
||||
# = Services
|
||||
# ===============================
|
||||
## Identity Management System
|
||||
ims.service.url = http://127.0.0.1:8080/identity-management-system
|
||||
ims.service.timeout = 60000
|
||||
|
||||
## File Management System
|
||||
fms.service.url = http://127.0.0.1:8080/file-management-system
|
||||
fms.service.timeout = 60000
|
||||
|
||||
## Notification and Alert System
|
||||
nas.service.url = http://127.0.0.1:8080/notification-alert-system
|
||||
nas.service.timeout = 60000
|
||||
|
||||
## Workflow Process System
|
||||
wps.service.url = http://127.0.0.1:8080/workflow-process-system
|
||||
wps.service.timeout = 60000
|
||||
|
||||
## Backend Service
|
||||
be.service.url=http://127.0.0.1:8080/mymedisys-backend
|
||||
be.service.timeout=60000
|
||||
|
||||
## Report Gateway
|
||||
rpt.service.url = http://127.0.0.1:8080/mymedisys-report
|
||||
rpt.service.timeout = 60000
|
||||
|
||||
## Security Gateway
|
||||
sgw.service.url = http://127.0.0.1:8080/mymedisys-sgw
|
||||
sgw.service.timeout = 60000
|
|
@ -0,0 +1,60 @@
|
|||
ims.service.client = mymedisys-rpt
|
||||
ims.service.skey = myMEDISYS@2020
|
||||
|
||||
# ===============================
|
||||
# = MySQL
|
||||
# ===============================
|
||||
mysql.db.driver = com.mysql.cj.jdbc.Driver
|
||||
mysql.db.url = jdbc:mysql://192.168.2.12:3306/mymedisys_db?zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Kuala_Lumpur
|
||||
mysql.db.uname = mymedisys.admin
|
||||
mysql.db.pword = /NToPXxweodmV3QrBAW+oA==
|
||||
|
||||
# HikariCP
|
||||
mysql.db.pool.hikaricp.connectionTimeout = 30000
|
||||
mysql.db.pool.hikaricp.idleTimeout = 600000
|
||||
mysql.db.pool.hikaricp.maxLifetime = 1800000
|
||||
mysql.db.pool.hikaricp.connectionTestQuery = SELECT 1
|
||||
mysql.db.pool.hikaricp.minimumIdle = 0
|
||||
mysql.db.pool.hikaricp.maximumPoolSize = 10
|
||||
mysql.db.pool.hikaricp.connectionInitSql = SELECT 1
|
||||
mysql.db.pool.hikaricp.validationTimeout = 5000
|
||||
mysql.db.pool.hikaricp.leakDetectionThreshold = 60000
|
||||
|
||||
# ===============================
|
||||
# = MANDRILL
|
||||
# ===============================
|
||||
mail.from = MyMEDISYS Development <noreply@mymedisys.com.my>
|
||||
mail.host = mail.conceptway.com.my
|
||||
mail.protocol = smtp
|
||||
mail.port = 587
|
||||
mail.username = myfrims@conceptway.com.my
|
||||
mail.password = Frims@12345
|
||||
|
||||
# ===============================
|
||||
# = REDIS
|
||||
# ===============================
|
||||
redis.cache.host = 127.0.0.1
|
||||
redis.cache.port = 6379
|
||||
redis.cache.uname =
|
||||
redis.cache.pword =
|
||||
redis.cache.bucket = RPT_BUCKET
|
||||
redis.cache.duration = 86400
|
||||
|
||||
# ===============================
|
||||
# = SERVICE URL
|
||||
# ===============================
|
||||
# IMS
|
||||
ims.service.timeout = 300
|
||||
ims.service.url = http://127.0.0.1:8080/identity-management-system
|
||||
|
||||
# FMS
|
||||
fms.service.timeout = 300
|
||||
fms.service.url = http://127.0.0.1:8080/file-management-system
|
||||
|
||||
# NAS
|
||||
nas.service.timeout = 300
|
||||
nas.service.url = http://127.0.0.1:8080/notification-alert-system
|
||||
|
||||
# WPS
|
||||
wps.service.timeout = 300
|
||||
wps.service.url = http://127.0.0.1:8080/workflow-process-system
|
BIN
frmgitlab/mymedisys-icare/mymedisys-icare/mail/images/banner.jpg
Normal file
After Width: | Height: | Size: 92 KiB |
BIN
frmgitlab/mymedisys-icare/mymedisys-icare/mail/images/logo.png
Normal file
After Width: | Height: | Size: 7.9 KiB |
After Width: | Height: | Size: 10 KiB |
308
frmgitlab/mymedisys-icare/mymedisys-icare/mail/mail-layout.html
Normal file
|
@ -0,0 +1,308 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:v="urn:schemas-microsoft-com:vml">
|
||||
<head>
|
||||
<!--[if gte mso 9]><xml><o:OfficeDocumentSettings><o:AllowPNG/><o:PixelsPerInch>96</o:PixelsPerInch></o:OfficeDocumentSettings></xml><![endif]-->
|
||||
<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
|
||||
<meta content="width=device-width" name="viewport"/>
|
||||
<!--[if !mso]><!-->
|
||||
<meta content="IE=edge" http-equiv="X-UA-Compatible"/>
|
||||
<!--<![endif]-->
|
||||
<title></title>
|
||||
<!--[if !mso]><!-->
|
||||
<!--<![endif]-->
|
||||
<style type="text/css">
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
table,
|
||||
td,
|
||||
tr {
|
||||
vertical-align: top;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
* {
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
a[x-apple-data-detectors=true] {
|
||||
color: inherit !important;
|
||||
text-decoration: none !important;
|
||||
}
|
||||
</style>
|
||||
<style id="media-query" type="text/css">
|
||||
@media (max-width: 660px) {
|
||||
|
||||
.block-grid,
|
||||
.col {
|
||||
min-width: 320px !important;
|
||||
max-width: 100% !important;
|
||||
display: block !important;
|
||||
}
|
||||
|
||||
.block-grid {
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.col {
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.col_cont {
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
img.fullwidth,
|
||||
img.fullwidthOnMobile {
|
||||
max-width: 100% !important;
|
||||
}
|
||||
|
||||
.no-stack .col {
|
||||
min-width: 0 !important;
|
||||
display: table-cell !important;
|
||||
}
|
||||
|
||||
.no-stack.two-up .col {
|
||||
width: 50% !important;
|
||||
}
|
||||
|
||||
.no-stack .col.num2 {
|
||||
width: 16.6% !important;
|
||||
}
|
||||
|
||||
.no-stack .col.num3 {
|
||||
width: 25% !important;
|
||||
}
|
||||
|
||||
.no-stack .col.num4 {
|
||||
width: 33% !important;
|
||||
}
|
||||
|
||||
.no-stack .col.num5 {
|
||||
width: 41.6% !important;
|
||||
}
|
||||
|
||||
.no-stack .col.num6 {
|
||||
width: 50% !important;
|
||||
}
|
||||
|
||||
.no-stack .col.num7 {
|
||||
width: 58.3% !important;
|
||||
}
|
||||
|
||||
.no-stack .col.num8 {
|
||||
width: 66.6% !important;
|
||||
}
|
||||
|
||||
.no-stack .col.num9 {
|
||||
width: 75% !important;
|
||||
}
|
||||
|
||||
.no-stack .col.num10 {
|
||||
width: 83.3% !important;
|
||||
}
|
||||
|
||||
.video-block {
|
||||
max-width: none !important;
|
||||
}
|
||||
|
||||
.mobile_hide {
|
||||
min-height: 0px;
|
||||
max-height: 0px;
|
||||
max-width: 0px;
|
||||
display: none;
|
||||
overflow: hidden;
|
||||
font-size: 0px;
|
||||
}
|
||||
|
||||
.desktop_hide {
|
||||
display: block !important;
|
||||
max-height: none !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="clean-body" style="margin: 0; padding: 0; -webkit-text-size-adjust: 100%; background-color: #FFFFFF;">
|
||||
<!--[if IE]><div class="ie-browser"><![endif]-->
|
||||
<table bgcolor="#FFFFFF" cellpadding="0" cellspacing="0" class="nl-container" role="presentation" style="table-layout: fixed; vertical-align: top; min-width: 320px; border-spacing: 0; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; background-color: #FFFFFF; width: 100%;" valign="top" width="100%">
|
||||
<tbody>
|
||||
<tr style="vertical-align: top;" valign="top">
|
||||
<td style="word-break: break-word; vertical-align: top;" valign="top">
|
||||
<!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td align="center" style="background-color:#FFFFFF"><![endif]-->
|
||||
<div style="background-color:#f5f5f5;">
|
||||
<div class="block-grid" style="min-width: 320px; max-width: 640px; overflow-wrap: break-word; word-wrap: break-word; word-break: break-word; Margin: 0 auto; background-color: transparent;">
|
||||
<div style="border-collapse: collapse;display: table;width: 100%;background-color:transparent;">
|
||||
<!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0" style="background-color:#f5f5f5;"><tr><td align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:640px"><tr class="layout-full-width" style="background-color:transparent"><![endif]-->
|
||||
<!--[if (mso)|(IE)]><td align="center" width="640" style="background-color:transparent;width:640px; border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent;" valign="top"><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 20px; padding-left: 20px; padding-top:20px; padding-bottom:20px;"><![endif]-->
|
||||
<div class="col num12" style="min-width: 320px; max-width: 640px; display: table-cell; vertical-align: top; width: 640px;">
|
||||
<div class="col_cont" style="width:100% !important;">
|
||||
<!--[if (!mso)&(!IE)]><!-->
|
||||
<div style="border-top:0px solid transparent; border-left:0px solid transparent; border-bottom:0px solid transparent; border-right:0px solid transparent; padding-top:20px; padding-bottom:20px; padding-right: 20px; padding-left: 20px;">
|
||||
<!--<![endif]-->
|
||||
<div align="center" class="img-container center fixedwidth" style="padding-right: 0px;padding-left: 0px;">
|
||||
<!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr style="line-height:0px"><td style="padding-right: 0px;padding-left: 0px;" align="center"><![endif]-->
|
||||
<img alt="Image" border="0" class="center fixedwidth" src="images/logo.PNG" data-th-src="|cid:MAIL_LOGO|" th:alt="${MAIL_LOGO}" th:title="${MAIL_LOGO}" style="text-decoration: none; -ms-interpolation-mode: bicubic; height: auto; border: 0; width: 100%; max-width: 300px;float:left;" width="120" />
|
||||
<!--<img alt="Image" border="0" src="images/logo_immi.png" data-th-src="|cid:MAIL_LOGO_IMMI|" th:alt="${MAIL_LOGO_IMMI}" th:title="${MAIL_LOGO_IMMI}" style="text-decoration: none; -ms-interpolation-mode: bicubic; height: 64px; border: 0;float:right;" />-->
|
||||
<!--[if mso]></td></tr></table><![endif]-->
|
||||
</div>
|
||||
<!--[if (!mso)&(!IE)]><!-->
|
||||
</div>
|
||||
<!--<![endif]-->
|
||||
</div>
|
||||
</div>
|
||||
<!--[if (mso)|(IE)]></td></tr></table><![endif]-->
|
||||
<!--[if (mso)|(IE)]></td></tr></table></td></tr></table><![endif]-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="background-color:#f5f5f5;">
|
||||
<div class="block-grid" style="min-width: 320px; max-width: 640px; overflow-wrap: break-word; word-wrap: break-word; word-break: break-word; Margin: 0 auto; background-color: #058e3f;">
|
||||
<div style="border-collapse: collapse;display: table;width: 100%;background-color:#058e3f;">
|
||||
<!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0" style="background-color:#f5f5f5;"><tr><td align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:640px"><tr class="layout-full-width" style="background-color:#058e3f"><![endif]-->
|
||||
<!--[if (mso)|(IE)]><td align="center" width="640" style="background-color:#058e3f;width:640px; border-top: 0px solid transparent; border-left: 1px solid #F2C14E; border-bottom: 0px solid transparent; border-right: 1px solid #F2C14E;" valign="top"><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 0px; padding-left: 0px; padding-top:0px; padding-bottom:0px;"><![endif]-->
|
||||
<div class="col num12" style="min-width: 320px; max-width: 640px; display: table-cell; vertical-align: top; width: 638px;">
|
||||
<div class="col_cont" style="width:100% !important;">
|
||||
<!--[if (!mso)&(!IE)]><!-->
|
||||
<div style="border-top:0px solid transparent; border-left:1px solid #F2C14E; border-bottom:0px solid transparent; border-right:1px solid #F2C14E; padding-top:0px; padding-bottom:0px; padding-right: 0px; padding-left: 0px;">
|
||||
<!--<![endif]-->
|
||||
<!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 10px; padding-left: 10px; padding-top: 10px; padding-bottom: 10px; font-family: Arial, sans-serif"><![endif]-->
|
||||
<div style="color:#ffffff;font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;line-height:1.8;padding-top:10px;padding-right:10px;padding-bottom:10px;padding-left:10px;">
|
||||
<div style="line-height: 1.8; font-size: 12px; color: #ffffff; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; mso-line-height-alt: 22px;">
|
||||
<p style="line-height: 1.8; word-break: break-word; mso-line-height-alt: 22px; margin: 0;height:10px;"></p>
|
||||
</div>
|
||||
</div>
|
||||
<!--[if mso]></td></tr></table><![endif]-->
|
||||
<!--[if (!mso)&(!IE)]><!-->
|
||||
</div>
|
||||
<!--<![endif]-->
|
||||
</div>
|
||||
</div>
|
||||
<!--[if (mso)|(IE)]></td></tr></table><![endif]-->
|
||||
<!--[if (mso)|(IE)]></td></tr></table></td></tr></table><![endif]-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="background-color:#f5f5f5;">
|
||||
<div class="block-grid" style="min-width: 320px; max-width: 640px; overflow-wrap: break-word; word-wrap: break-word; word-break: break-word; Margin: 0 auto; background-color: #058e3f;">
|
||||
<div style="border-collapse: collapse;display: table;width: 100%;background-color:#058e3f;">
|
||||
<!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0" style="background-color:#f5f5f5;"><tr><td align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:640px"><tr class="layout-full-width" style="background-color:#058e3f"><![endif]-->
|
||||
<!--[if (mso)|(IE)]><td align="center" width="640" style="background-color:#058e3f;width:640px; border-top: 0px solid transparent; border-left: 1px solid #F2C14E; border-bottom: 0px solid transparent; border-right: 1px solid #F2C14E;" valign="top"><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 0px; padding-left: 0px; padding-top:0px; padding-bottom:0px;"><![endif]-->
|
||||
<div class="col num12" style="min-width: 320px; max-width: 640px; display: table-cell; vertical-align: top; width: 638px;">
|
||||
<div class="col_cont" style="width:100% !important;">
|
||||
<!--[if (!mso)&(!IE)]><!-->
|
||||
<div style="border-top:0px solid transparent; border-left:1px solid #F2C14E; border-bottom:0px solid transparent; border-right:1px solid #F2C14E; padding-top:0px; padding-bottom:0px; padding-right: 0px; padding-left: 0px;">
|
||||
<!--<![endif]-->
|
||||
<div align="center" class="img-container center autowidth" style="padding-right: 0px;padding-left: 0px;">
|
||||
<!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr style="line-height:0px"><td style="padding-right: 0px;padding-left: 0px;" align="center"><![endif]-->
|
||||
<!--<img align="center" alt="Image" border="0" class="center autowidth" src="images/banner.jpg" data-th-src="|cid:MAIL_BANNER|" th:alt="${MAIL_BANNER}" th:title="${MAIL_BANNER}" style="text-decoration: none; -ms-interpolation-mode: bicubic; height: auto; border: 0; width: 100%; max-width: 638px; display: block;" width="638" />-->
|
||||
<!--[if mso]></td></tr></table><![endif]-->
|
||||
</div>
|
||||
<!--[if (!mso)&(!IE)]><!-->
|
||||
</div>
|
||||
<!--<![endif]-->
|
||||
</div>
|
||||
</div>
|
||||
<!--[if (mso)|(IE)]></td></tr></table><![endif]-->
|
||||
<!--[if (mso)|(IE)]></td></tr></table></td></tr></table><![endif]-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="background-color:#f5f5f5;">
|
||||
<div class="block-grid" style="min-width: 320px; max-width: 640px; overflow-wrap: break-word; word-wrap: break-word; word-break: break-word; Margin: 0 auto; background-color: #ffffff;">
|
||||
<div style="border-collapse: collapse;display: table;width: 100%;background-color:#ffffff;">
|
||||
<!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0" style="background-color:#f5f5f5;"><tr><td align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:640px"><tr class="layout-full-width" style="background-color:#ffffff"><![endif]-->
|
||||
<!--[if (mso)|(IE)]><td align="center" width="640" style="background-color:#ffffff;width:640px; border-top: 0px solid transparent; border-left: 1px solid #F2C14E; border-bottom: 1px solid #F2C14E; border-right: 1px solid #F2C14E;" valign="top"><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 0px; padding-left: 0px; padding-top:5px; padding-bottom:35px;"><![endif]-->
|
||||
<div class="col num12" style="min-width: 320px; max-width: 640px; display: table-cell; vertical-align: top; width: 638px;">
|
||||
<div class="col_cont" style="width:100% !important;">
|
||||
<!--[if (!mso)&(!IE)]><!-->
|
||||
<div style="border-top:0px solid transparent; border-left:1px solid #F2C14E; border-bottom:1px solid #F2C14E; border-right:1px solid #F2C14E; padding-top:5px; padding-bottom:35px; padding-right: 0px; padding-left: 0px;">
|
||||
<!--<![endif]-->
|
||||
<!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 10px; padding-left: 10px; padding-top: 10px; padding-bottom: 10px; font-family: Tahoma, Verdana, sans-serif"><![endif]-->
|
||||
<div style="color:#058e3f;font-family:Tahoma, Verdana, Segoe, sans-serif;line-height:1.2;padding-top:10px;padding-right:10px;padding-bottom:10px;padding-left:10px;">
|
||||
<div style="font-size: 14px; line-height: 1.2; font-family: Tahoma, Verdana, Segoe, sans-serif; color: #058e3f; mso-line-height-alt: 17px;">
|
||||
<!--<p style="font-size: 14px; line-height: 1.2; word-break: break-word; text-align: center; font-family: Tahoma, Verdana, Segoe, sans-serif; mso-line-height-alt: 17px; margin: 0;"><u><span style="font-size: 17px; mso-ansi-font-size: 18px;"><strong>Malaysia Special Pass</strong></span></u></p>-->
|
||||
</div>
|
||||
</div>
|
||||
<!--[if mso]></td></tr></table><![endif]-->
|
||||
<!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 30px; padding-left: 30px; padding-top: 10px; padding-bottom: 10px; font-family: Tahoma, Verdana, sans-serif"><![endif]-->
|
||||
<div style="color:#6a6a6a;font-family:Tahoma, Verdana, Segoe, sans-serif;line-height:1.5;padding-top:10px;padding-right:30px;padding-bottom:10px;padding-left:30px;">
|
||||
<div style="font-size: 14px; line-height: 1.5; font-family: Tahoma, Verdana, Segoe, sans-serif; color: #6a6a6a; mso-line-height-alt: 21px;">
|
||||
<p style="font-size: 13px; line-height: 1.5; word-break: break-word; text-align: right; font-family: Tahoma, Verdana, Segoe, sans-serif; mso-line-height-alt: 20px; mso-ansi-font-size: 14px; margin: 0;"><span style="font-size: 13px; mso-ansi-font-size: 14px;">Date: <th:block th:text="${GEN_DATE}" /></span></p>
|
||||
</div>
|
||||
</div>
|
||||
<!--[if mso]></td></tr></table><![endif]-->
|
||||
<!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 30px; padding-left: 30px; padding-top: 10px; padding-bottom: 10px; font-family: Tahoma, Verdana, sans-serif"><![endif]-->
|
||||
<div style="color:#6a6a6a;font-family:Tahoma, Verdana, Segoe, sans-serif;line-height:1.5;padding-top:10px;padding-right:30px;padding-bottom:10px;padding-left:30px;">
|
||||
<div style="font-size: 14px; line-height: 1.5; font-family: Tahoma, Verdana, Segoe, sans-serif; color: #6a6a6a; mso-line-height-alt: 21px;">
|
||||
<p style="font-size: 13px; line-height: 1.5; word-break: break-word; text-align: justify; font-family: Tahoma, Verdana, Segoe, sans-serif; mso-line-height-alt: 20px; mso-ansi-font-size: 14px; margin: 0;"><span style="font-size: 13px; mso-ansi-font-size: 14px;">
|
||||
<!--/* START CONTENT */-->
|
||||
<th:block th:utext="${content}" />
|
||||
<!--/* END CONTENT */-->
|
||||
</span></p>
|
||||
</div>
|
||||
</div>
|
||||
<!--[if mso]></td></tr></table><![endif]-->
|
||||
<!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 30px; padding-left: 30px; padding-top: 25px; padding-bottom: 10px; font-family: Tahoma, Verdana, sans-serif"><![endif]-->
|
||||
<div style="color:#6a6a6a;font-family:Tahoma, Verdana, Segoe, sans-serif;line-height:1.5;padding-top:25px;padding-right:30px;padding-bottom:10px;padding-left:30px;">
|
||||
<div style="font-size: 14px; line-height: 1.5; font-family: Tahoma, Verdana, Segoe, sans-serif; color: #6a6a6a; mso-line-height-alt: 21px;">
|
||||
<p style="font-size: 12px; line-height: 1.5; word-break: break-word; text-align: left; font-family: Tahoma, Verdana, Segoe, sans-serif; mso-line-height-alt: 18px; margin: 0;"><span style="font-size: 12px;">Thanks,</span></p>
|
||||
<p style="font-size: 12px; line-height: 1.5; word-break: break-word; text-align: left; font-family: Tahoma, Verdana, Segoe, sans-serif; mso-line-height-alt: 18px; margin: 0;"><span style="font-size: 12px;">System Administrator</span></p>
|
||||
</div>
|
||||
</div>
|
||||
<!--[if mso]></td></tr></table><![endif]-->
|
||||
<!--[if (!mso)&(!IE)]><!-->
|
||||
</div>
|
||||
<!--<![endif]-->
|
||||
</div>
|
||||
</div>
|
||||
<!--[if (mso)|(IE)]></td></tr></table><![endif]-->
|
||||
<!--[if (mso)|(IE)]></td></tr></table></td></tr></table><![endif]-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="background-color:#f5f5f5;">
|
||||
<div class="block-grid" style="min-width: 320px; max-width: 640px; overflow-wrap: break-word; word-wrap: break-word; word-break: break-word; Margin: 0 auto; background-color: transparent;">
|
||||
<div style="border-collapse: collapse;display: table;width: 100%;background-color:transparent;">
|
||||
<!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0" style="background-color:#f5f5f5;"><tr><td align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:640px"><tr class="layout-full-width" style="background-color:transparent"><![endif]-->
|
||||
<!--[if (mso)|(IE)]><td align="center" width="640" style="background-color:transparent;width:640px; border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent;" valign="top"><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 0px; padding-left: 0px; padding-top:10px; padding-bottom:10px;"><![endif]-->
|
||||
<div class="col num12" style="min-width: 320px; max-width: 640px; display: table-cell; vertical-align: top; width: 640px;">
|
||||
<div class="col_cont" style="width:100% !important;">
|
||||
<!--[if (!mso)&(!IE)]><!-->
|
||||
<div style="border-top:0px solid transparent; border-left:0px solid transparent; border-bottom:0px solid transparent; border-right:0px solid transparent; padding-top:10px; padding-bottom:10px; padding-right: 0px; padding-left: 0px;">
|
||||
<!--<![endif]-->
|
||||
<!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 10px; padding-left: 10px; padding-top: 10px; padding-bottom: 10px; font-family: Tahoma, Verdana, sans-serif"><![endif]-->
|
||||
<div style="color:#6a6a6a;font-family:Tahoma, Verdana, Segoe, sans-serif;line-height:1.2;padding-top:10px;padding-right:10px;padding-bottom:10px;padding-left:10px;">
|
||||
<div style="font-size: 14px; line-height: 1.2; font-family: Tahoma, Verdana, Segoe, sans-serif; color: #6a6a6a; mso-line-height-alt: 17px;">
|
||||
<p style="font-size: 12px; line-height: 1.2; word-break: break-word; text-align: center; font-family: Tahoma, Verdana, Segoe, sans-serif; mso-line-height-alt: 14px; margin: 0;"><span style="font-size: 12px;">
|
||||
<strong>IMPORTANT:</strong> Please do not reply to this message or mail address. For any queries, please call our 24 Hrs Customer Experience Center on our number <th:block th:text="${CUST_CARE_CONTACT}" /> or email us at <th:block th:text="${CUST_CARE_EMAIL}" /></span></p>
|
||||
</div>
|
||||
</div>
|
||||
<!--[if mso]></td></tr></table><![endif]-->
|
||||
<!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 0px; padding-left: 0px; padding-top: 0px; padding-bottom: 0px; font-family: Tahoma, Verdana, sans-serif"><![endif]-->
|
||||
<div style="color:#6a6a6a;font-family:Tahoma, Verdana, Segoe, sans-serif;line-height:1.2;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;">
|
||||
<div style="font-size: 14px; line-height: 1.2; font-family: Tahoma, Verdana, Segoe, sans-serif; color: #6a6a6a; mso-line-height-alt: 17px;">
|
||||
<p style="font-size: 12px; line-height: 1.2; word-break: break-word; text-align: center; font-family: Tahoma, Verdana, Segoe, sans-serif; mso-line-height-alt: 14px; margin: 0;"><span style="font-size: 12px;"><strong><th:block th:utext="${COPYRIGHT}" /></strong></span></p>
|
||||
</div>
|
||||
</div>
|
||||
<!--[if mso]></td></tr></table><![endif]-->
|
||||
<!--[if (!mso)&(!IE)]><!-->
|
||||
</div>
|
||||
<!--<![endif]-->
|
||||
</div>
|
||||
</div>
|
||||
<!--[if (mso)|(IE)]></td></tr></table><![endif]-->
|
||||
<!--[if (mso)|(IE)]></td></tr></table></td></tr></table><![endif]-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--[if (mso)|(IE)]></td></tr></table><![endif]-->
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<!--[if (IE)]></div><![endif]-->
|
||||
</body>
|
||||
</html>
|
49
frmgitlab/mymedisys-icare/mymedisys-icare/staging/pom.xml
Normal file
|
@ -0,0 +1,49 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>com.concept</groupId>
|
||||
<artifactId>mymedisys</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<name>Staging Master POM</name>
|
||||
<url>http://maven.apache.org</url>
|
||||
<properties>
|
||||
<build.path>/var/lib/jenkins/workspace</build.path>
|
||||
<project.name>MyMEDISYS</project.name>
|
||||
</properties>
|
||||
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>all</id>
|
||||
<activation>
|
||||
<activeByDefault>true</activeByDefault>
|
||||
</activation>
|
||||
<modules>
|
||||
<module>core-utility</module>
|
||||
<module>identity-management-system/identity-management-system-api</module>
|
||||
<module>notification-alert-system/notification-alert-system-api</module>
|
||||
<module>file-management-system/file-management-system-api</module>
|
||||
<module>workflow-process-system/workflow-process-system-api</module>
|
||||
<module>identity-management-system/identity-management-system</module>
|
||||
<module>notification-alert-system/notification-alert-system</module>
|
||||
<module>file-management-system/file-management-system</module>
|
||||
<module>workflow-process-system/workflow-process-system</module>
|
||||
<module>materialkit-webjar</module>
|
||||
|
||||
<module>backend/backend-api</module>
|
||||
<module>report/report-api</module>
|
||||
<module>report/report</module>
|
||||
<module>backend/backend</module>
|
||||
<module>frontend/frontend</module>
|
||||
</modules>
|
||||
</profile>
|
||||
</profiles>
|
||||
<build>
|
||||
<plugins>
|
||||
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
ims.service.client = mymedisys-fms
|
||||
ims.service.skey = myMEDISYS@2020
|
||||
|
||||
# ===============================
|
||||
# = MongoDB
|
||||
# ===============================
|
||||
mongo.db.url = mongodb://192.168.2.12:27017
|
||||
mongo.db.name = mymedisys_fms_stg
|
||||
mongo.db.uname =
|
||||
mongo.db.pword =
|
||||
|
||||
# ===============================
|
||||
# = REDIS
|
||||
# ===============================
|
||||
redis.cache.host = 127.0.0.1
|
||||
redis.cache.port = 6379
|
||||
redis.cache.uname =
|
||||
redis.cache.pword =
|
||||
redis.cache.bucket = FMS_BUCKET
|
||||
redis.cache.duration = 86400
|
||||
|
||||
# ===============================
|
||||
# = SERVICE URL
|
||||
# ===============================
|
||||
ims.service.url = http://127.0.0.1:8080/identity-management-system
|
||||
ims.service.timeout = 6000
|
||||
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
ims.service.client = mymedisys-ims
|
||||
ims.service.skey = myMEDISYS@2020
|
||||
ims.service.ekey = HGsYjzYbE7AzpMbiInuJ
|
||||
|
||||
# ===============================
|
||||
# = MySQL
|
||||
# ===============================
|
||||
mysql.db.driver = com.mysql.cj.jdbc.Driver
|
||||
mysql.db.url = jdbc:mysql://192.168.2.12:3306/mymedisys_stg?zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Kuala_Lumpur
|
||||
mysql.db.uname = mymedisys.qa
|
||||
mysql.db.pword = /NToPXxweodmV3QrBAW+oA==
|
||||
|
||||
# HikariCP
|
||||
mysql.db.pool.hikaricp.connectionTimeout = 30000
|
||||
mysql.db.pool.hikaricp.idleTimeout = 600000
|
||||
mysql.db.pool.hikaricp.maxLifetime = 1800000
|
||||
mysql.db.pool.hikaricp.connectionTestQuery = SELECT 1
|
||||
mysql.db.pool.hikaricp.minimumIdle = 0
|
||||
mysql.db.pool.hikaricp.maximumPoolSize = 10
|
||||
mysql.db.pool.hikaricp.connectionInitSql = SELECT 1
|
||||
mysql.db.pool.hikaricp.validationTimeout = 5000
|
||||
mysql.db.pool.hikaricp.leakDetectionThreshold = 60000
|
||||
|
||||
# ===============================
|
||||
# = MongoDB
|
||||
# ===============================
|
||||
mongo.db.url = mongodb://192.168.2.12:27017
|
||||
mongo.db.name = mymedisys_ims_stg
|
||||
mongo.db.setname =
|
||||
mongo.db.uname =
|
||||
mongo.db.pword =
|
||||
|
||||
# ===============================
|
||||
# = REDIS
|
||||
# ===============================
|
||||
redis.cache.host = 127.0.0.1
|
||||
redis.cache.port = 6379
|
||||
redis.cache.uname =
|
||||
redis.cache.pword =
|
||||
redis.cache.bucket = IMS_BUCKET
|
||||
redis.cache.duration = 86400
|
||||
|
||||
# ===============================
|
||||
# = SERVICE URL
|
||||
# ===============================
|
||||
##Identity Management System
|
||||
ims.service.timeout = 60000
|
||||
ims.uid.length = 8
|
||||
ims.txnid.length = 15
|
||||
|
||||
## Notification Alert System
|
||||
nas.service.url = http://127.0.0.1:8080/notification-alert-system
|
||||
nas.service.timeout = 60000
|
||||
|
||||
ims.jwt.secret = WmHJGJJPfH8LQFz
|
||||
ims.jwt.expiration = 86400000
|
|
@ -0,0 +1,74 @@
|
|||
ims.service.client = mymedisys-nas
|
||||
ims.service.skey = myMEDISYS@2020
|
||||
|
||||
# ===============================
|
||||
# = MySQL
|
||||
# ===============================
|
||||
mysql.db.driver = com.mysql.cj.jdbc.Driver
|
||||
mysql.db.url = jdbc:mysql://192.168.2.12:3306/mymedisys_stg?zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Kuala_Lumpur
|
||||
mysql.db.uname = mymedisys.qa
|
||||
mysql.db.pword = /NToPXxweodmV3QrBAW+oA==
|
||||
|
||||
# ===============================
|
||||
# = MongoDB
|
||||
# ===============================
|
||||
mongo.db.url = mongodb://192.168.2.12:27017
|
||||
mongo.db.name = mymedisys_nas_stg
|
||||
mongo.db.setname =
|
||||
mongo.db.uname =
|
||||
mongo.db.pword =
|
||||
|
||||
|
||||
# HikariCP
|
||||
mysql.db.pool.hikaricp.connectionTimeout = 30000
|
||||
mysql.db.pool.hikaricp.idleTimeout = 600000
|
||||
mysql.db.pool.hikaricp.maxLifetime = 1800000
|
||||
mysql.db.pool.hikaricp.connectionTestQuery = SELECT 1
|
||||
mysql.db.pool.hikaricp.minimumIdle = 0
|
||||
mysql.db.pool.hikaricp.maximumPoolSize = 10
|
||||
mysql.db.pool.hikaricp.connectionInitSql = SELECT 1
|
||||
mysql.db.pool.hikaricp.validationTimeout = 5000
|
||||
mysql.db.pool.hikaricp.leakDetectionThreshold = 60000
|
||||
|
||||
# ===============================
|
||||
# = MANDRILL
|
||||
# ===============================
|
||||
mail.from = MyMEDISYS Staging <noreply@mymedisys.my>
|
||||
mail.host = mail.conceptway.com.my
|
||||
mail.protocol = smtp
|
||||
mail.port = 587
|
||||
mail.username = myfrims@conceptway.com.my
|
||||
mail.password = Frims@12345
|
||||
|
||||
# ===============================
|
||||
# = SMTP
|
||||
# ===============================
|
||||
sms.gateway.username =
|
||||
sms.gateway.password =
|
||||
sms.gateway.auth.url =
|
||||
|
||||
# ===============================
|
||||
# = FCM
|
||||
# ===============================
|
||||
fcm.googleapis.url =
|
||||
fcm.googleapis.key =
|
||||
fcm.service.timeout = 60000
|
||||
|
||||
# ===============================
|
||||
# = SERVICE URL
|
||||
# ===============================
|
||||
## Identity Management System
|
||||
ims.service.url = http://127.0.0.1:8080/identity-management-system
|
||||
ims.service.timeout = 60000
|
||||
|
||||
## File Management System
|
||||
fms.service.url = http://127.0.0.1:8080/file-management-sytem
|
||||
fms.service.timeout = 60000
|
||||
|
||||
## Report Gateway
|
||||
rpt.service.url = http://127.0.0.1:8080/mymedisys-report
|
||||
rpt.service.timeout = 60000
|
||||
|
||||
# Notification Send All Interval
|
||||
nas.service.interval = 60000
|
||||
nas.service.timeout = 2000
|
|
@ -0,0 +1,75 @@
|
|||
ims.service.client = mymedisys-wps
|
||||
ims.service.skey = myMEDISYS@2020
|
||||
|
||||
# ===============================
|
||||
# = MySQL
|
||||
# ===============================
|
||||
mysql.db.driver = com.mysql.cj.jdbc.Driver
|
||||
mysql.db.url = jdbc:mysql://192.168.2.12:3306/mymedisys_stg?zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Kuala_Lumpur
|
||||
mysql.db.uname = mymedisys.qa
|
||||
mysql.db.pword = /NToPXxweodmV3QrBAW+oA==
|
||||
|
||||
|
||||
# HikariCP
|
||||
mysql.db.pool.hikaricp.connectionTimeout = 30000
|
||||
mysql.db.pool.hikaricp.idleTimeout = 600000
|
||||
mysql.db.pool.hikaricp.maxLifetime = 1800000
|
||||
mysql.db.pool.hikaricp.connectionTestQuery = SELECT 1
|
||||
mysql.db.pool.hikaricp.minimumIdle = 0
|
||||
mysql.db.pool.hikaricp.maximumPoolSize = 10
|
||||
mysql.db.pool.hikaricp.connectionInitSql = SELECT 1
|
||||
mysql.db.pool.hikaricp.validationTimeout = 5000
|
||||
mysql.db.pool.hikaricp.leakDetectionThreshold = 60000
|
||||
|
||||
# ===============================
|
||||
# = REDIS
|
||||
# ===============================
|
||||
redis.cache.host = 127.0.0.1
|
||||
redis.cache.port = 6379
|
||||
redis.cache.uname =
|
||||
redis.cache.pword =
|
||||
redis.cache.bucket = WPS_BUCKET
|
||||
redis.cache.duration = 86400
|
||||
|
||||
# ===============================
|
||||
# = MANDRILL
|
||||
# ===============================
|
||||
mail.from = MyMEDISYS Staging <noreply@mymedisys.my>
|
||||
mail.host = mail.conceptway.com.my
|
||||
mail.protocol = smtp
|
||||
mail.port = 587
|
||||
mail.username = myfrims@conceptway.com.my
|
||||
mail.password = Frims@12345
|
||||
|
||||
# ===============================
|
||||
# = SMTP
|
||||
# ===============================
|
||||
sms.gateway.username =
|
||||
sms.gateway.password =
|
||||
sms.gateway.auth.url =
|
||||
|
||||
# ===============================
|
||||
# = FCM
|
||||
# ===============================
|
||||
fcm.googleapis.url =
|
||||
fcm.googleapis.key =
|
||||
fcm.service.timeout = 60000
|
||||
|
||||
# ===============================
|
||||
# = SERVICE URL
|
||||
# ===============================
|
||||
## Identity Management System
|
||||
ims.service.url = http://127.0.0.1:8080/identity-management-system
|
||||
ims.service.timeout = 60000
|
||||
|
||||
## File Management System
|
||||
fms.service.url = http://127.0.0.1:8080/file-management-sytem
|
||||
fms.service.timeout = 60000
|
||||
|
||||
## Report Gateway
|
||||
rpt.service.url = http://127.0.0.1:8080/mymedisys-report
|
||||
rpt.service.timeout = 60000
|
||||
|
||||
# Notification Send All Interval
|
||||
nas.service.interval = 60000
|
||||
nas.service.timeout = 2000
|
|
@ -0,0 +1,59 @@
|
|||
ims.service.client = mymedisys-be
|
||||
ims.service.skey = myMEDISYS@2020
|
||||
|
||||
# ===============================
|
||||
# = MySQL
|
||||
# ===============================
|
||||
mysql.db.driver = com.mysql.cj.jdbc.Driver
|
||||
mysql.db.url = jdbc:mysql://192.168.2.12:3306/mymedisys_stg?zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Kuala_Lumpur
|
||||
mysql.db.uname = mymedisys.qa
|
||||
mysql.db.pword = /NToPXxweodmV3QrBAW+oA==
|
||||
|
||||
# HikariCP
|
||||
mysql.db.pool.hikaricp.connectionTimeout = 30000
|
||||
mysql.db.pool.hikaricp.idleTimeout = 600000
|
||||
mysql.db.pool.hikaricp.maxLifetime = 1800000
|
||||
mysql.db.pool.hikaricp.connectionTestQuery = SELECT 1
|
||||
mysql.db.pool.hikaricp.minimumIdle = 0
|
||||
mysql.db.pool.hikaricp.maximumPoolSize = 10
|
||||
mysql.db.pool.hikaricp.connectionInitSql = SELECT 1
|
||||
mysql.db.pool.hikaricp.validationTimeout = 5000
|
||||
mysql.db.pool.hikaricp.leakDetectionThreshold = 60000
|
||||
|
||||
# ===============================
|
||||
# = REDIS
|
||||
# ===============================
|
||||
redis.cache.host = 127.0.0.1
|
||||
redis.cache.port = 6379
|
||||
redis.cache.uname =
|
||||
redis.cache.pword =
|
||||
redis.cache.bucket = BE_BUCKET
|
||||
redis.cache.duration = 86400
|
||||
|
||||
# ===============================
|
||||
# = SERVICE URL
|
||||
# ===============================
|
||||
## Identity Management System
|
||||
ims.service.url = http://127.0.0.1:8080/identity-management-system
|
||||
ims.service.timeout = 60000
|
||||
|
||||
## File Management System
|
||||
fms.service.url = http://127.0.0.1:8080/file-management-system
|
||||
fms.service.timeout = 60000
|
||||
|
||||
## Notification and Alert System
|
||||
nas.service.url = http://127.0.0.1:8080/notification-alert-system
|
||||
nas.service.timeout = 60000
|
||||
|
||||
## Workflow Process System
|
||||
wps.service.url = http://127.0.0.1:8080/workflow-process-system
|
||||
wps.service.timeout = 60000
|
||||
|
||||
## Report Gateway
|
||||
rpt.service.url = http://127.0.0.1:8080/mymedisys-report
|
||||
rpt.service.timeout = 60000
|
||||
|
||||
##MyFrims API
|
||||
myfrims.service.url=http://192.168.2.103:8080/myfrims-backend
|
||||
myfrims.service.timeout=60000
|
||||
system.type=myFrims
|
|
@ -0,0 +1,65 @@
|
|||
ims.service.client = mymedisys-fe
|
||||
ims.service.skey = myMEDISYS@2020
|
||||
ims.service.ekey = 5f50787d0aa5e668053d527c
|
||||
|
||||
app.portal.type = MYMEDISYS
|
||||
gov.portal.access.from = 00:00
|
||||
gov.portal.access.to = 24:00
|
||||
|
||||
# Server URI-Encoding
|
||||
server.tomcat.uri-encoding = utf-8
|
||||
server.tomcat.max-http-post-size: 10MB
|
||||
|
||||
# Application Config
|
||||
thymleaf.template.cacheable = false
|
||||
|
||||
## session.secure.cookie: DEV = false, PROD = true
|
||||
session.secure.cookie = true
|
||||
|
||||
is.using.https = false;
|
||||
|
||||
# ===============================
|
||||
# = REDIS
|
||||
# ===============================
|
||||
redis.cache.host = 192.168.2.12
|
||||
redis.cache.port = 6379
|
||||
redis.cache.uname =
|
||||
redis.cache.pword =
|
||||
redis.cache.bucket = FE_BUCKET
|
||||
redis.cache.duration = 86400
|
||||
|
||||
# ===============================
|
||||
# = ReCaptcha
|
||||
# ===============================
|
||||
recaptcha.sitekey = 6Le6PxoaAAAAAHDMsT5-lhC3kX-nTzTKHXvCVbhK
|
||||
|
||||
# ===============================
|
||||
# = Services
|
||||
# ===============================
|
||||
## Identity Management System
|
||||
ims.service.url = http://127.0.0.1:8080/identity-management-system
|
||||
ims.service.timeout = 60000
|
||||
|
||||
## File Management System
|
||||
fms.service.url = http://127.0.0.1:8080/file-management-system
|
||||
fms.service.timeout = 60000
|
||||
|
||||
## Notification and Alert System
|
||||
nas.service.url = http://127.0.0.1:8080/notification-alert-system
|
||||
nas.service.timeout = 60000
|
||||
|
||||
## Workflow Process System
|
||||
wps.service.url = http://127.0.0.1:8080/workflow-process-system
|
||||
wps.service.timeout = 60000
|
||||
|
||||
## Backend Service
|
||||
be.service.url=http://127.0.0.1:8080/mymedisys-backend
|
||||
be.service.timeout=60000
|
||||
|
||||
## Report Gateway
|
||||
rpt.service.url = http://127.0.0.1:8080/mymedisys-report
|
||||
rpt.service.timeout = 60000
|
||||
|
||||
## Security Gateway
|
||||
sgw.service.url = http://127.0.0.1:8080/mymedisys-sgw
|
||||
sgw.service.timeout = 60000
|
|
@ -0,0 +1,60 @@
|
|||
ims.service.client = mymedisys-rpt
|
||||
ims.service.skey = myMEDISYS@2020
|
||||
|
||||
# ===============================
|
||||
# = MySQL
|
||||
# ===============================
|
||||
mysql.db.driver = com.mysql.cj.jdbc.Driver
|
||||
mysql.db.url = jdbc:mysql://192.168.2.12:3306/mymedisys_stg?zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Kuala_Lumpur
|
||||
mysql.db.uname = mymedisys.qa
|
||||
mysql.db.pword = /NToPXxweodmV3QrBAW+oA==
|
||||
|
||||
# HikariCP
|
||||
mysql.db.pool.hikaricp.connectionTimeout = 30000
|
||||
mysql.db.pool.hikaricp.idleTimeout = 600000
|
||||
mysql.db.pool.hikaricp.maxLifetime = 1800000
|
||||
mysql.db.pool.hikaricp.connectionTestQuery = SELECT 1
|
||||
mysql.db.pool.hikaricp.minimumIdle = 0
|
||||
mysql.db.pool.hikaricp.maximumPoolSize = 10
|
||||
mysql.db.pool.hikaricp.connectionInitSql = SELECT 1
|
||||
mysql.db.pool.hikaricp.validationTimeout = 5000
|
||||
mysql.db.pool.hikaricp.leakDetectionThreshold = 60000
|
||||
|
||||
# ===============================
|
||||
# = MANDRILL
|
||||
# ===============================
|
||||
mail.from = MyMEDISYS Development <noreply@mymedisys.com.my>
|
||||
mail.host = mail.conceptway.com.my
|
||||
mail.protocol = smtp
|
||||
mail.port = 587
|
||||
mail.username = myfrims@conceptway.com.my
|
||||
mail.password = Frims@12345
|
||||
|
||||
# ===============================
|
||||
# = REDIS
|
||||
# ===============================
|
||||
redis.cache.host = 127.0.0.1
|
||||
redis.cache.port = 6379
|
||||
redis.cache.uname =
|
||||
redis.cache.pword =
|
||||
redis.cache.bucket = RPT_BUCKET
|
||||
redis.cache.duration = 86400
|
||||
|
||||
# ===============================
|
||||
# = SERVICE URL
|
||||
# ===============================
|
||||
# IMS
|
||||
ims.service.timeout = 300
|
||||
ims.service.url = http://127.0.0.1:8080/identity-management-system
|
||||
|
||||
# FMS
|
||||
fms.service.timeout = 300
|
||||
fms.service.url = http://127.0.0.1:8080/file-management-system
|
||||
|
||||
# NAS
|
||||
nas.service.timeout = 300
|
||||
nas.service.url = http://127.0.0.1:8080/notification-alert-system
|
||||
|
||||
# WPS
|
||||
wps.service.timeout = 300
|
||||
wps.service.url = http://127.0.0.1:8080/workflow-process-system
|
|
@ -0,0 +1,49 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>com.concept</groupId>
|
||||
<artifactId>mymedisys</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<name>Development Master POM</name>
|
||||
<url>http://maven.apache.org</url>
|
||||
<properties>
|
||||
<build.path>/var/lib/jenkins/workspace</build.path>
|
||||
<project.name>MyMEDISYS</project.name>
|
||||
</properties>
|
||||
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>all</id>
|
||||
<activation>
|
||||
<activeByDefault>true</activeByDefault>
|
||||
</activation>
|
||||
<modules>
|
||||
<module>core-utility</module>
|
||||
<module>identity-management-system/identity-management-system-api</module>
|
||||
<module>notification-alert-system/notification-alert-system-api</module>
|
||||
<module>file-management-system/file-management-system-api</module>
|
||||
<module>workflow-process-system/workflow-process-system-api</module>
|
||||
<module>identity-management-system/identity-management-system</module>
|
||||
<module>notification-alert-system/notification-alert-system</module>
|
||||
<module>file-management-system/file-management-system</module>
|
||||
<module>workflow-process-system/workflow-process-system</module>
|
||||
<module>materialkit-webjar</module>
|
||||
|
||||
<module>backend/backend-api</module>
|
||||
<module>report/report-api</module>
|
||||
<module>report/report</module>
|
||||
<module>backend/backend</module>
|
||||
<module>frontend/frontend</module>
|
||||
</modules>
|
||||
</profile>
|
||||
</profiles>
|
||||
<build>
|
||||
<plugins>
|
||||
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
ims.service.client = mymedisys-fms
|
||||
ims.service.skey = myMEDISYS@2020
|
||||
|
||||
# ===============================
|
||||
# = MongoDB
|
||||
# ===============================
|
||||
mongo.db.url = mongodb://192.168.2.12:27017
|
||||
mongo.db.name = mymedisys_fms
|
||||
mongo.db.uname =
|
||||
mongo.db.pword =
|
||||
|
||||
# ===============================
|
||||
# = REDIS
|
||||
# ===============================
|
||||
redis.cache.host = 127.0.0.1
|
||||
redis.cache.port = 6379
|
||||
redis.cache.uname =
|
||||
redis.cache.pword =
|
||||
redis.cache.bucket = FMS_BUCKET
|
||||
redis.cache.duration = 86400
|
||||
|
||||
|
||||
# ===============================
|
||||
# = SERVICE URL
|
||||
# ===============================
|
||||
ims.service.url = http://127.0.0.1:8080/identity-management-system
|
||||
ims.service.timeout = 6000
|
||||
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
ims.service.client = mymedisys-ims
|
||||
ims.service.skey = myMEDISYS@2020
|
||||
ims.service.ekey = HGsYjzYbE7AzpMbiInuJ
|
||||
|
||||
# ===============================
|
||||
# = MySQL
|
||||
# ===============================
|
||||
mysql.db.driver = com.mysql.cj.jdbc.Driver
|
||||
mysql.db.url = jdbc:mysql://192.168.2.12:3306/mymedisys_db?zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Kuala_Lumpur
|
||||
mysql.db.uname = mymedisys.admin
|
||||
mysql.db.pword = /NToPXxweodmV3QrBAW+oA==
|
||||
|
||||
# HikariCP
|
||||
mysql.db.pool.hikaricp.connectionTimeout = 30000
|
||||
mysql.db.pool.hikaricp.idleTimeout = 600000
|
||||
mysql.db.pool.hikaricp.maxLifetime = 1800000
|
||||
mysql.db.pool.hikaricp.connectionTestQuery = SELECT 1
|
||||
mysql.db.pool.hikaricp.minimumIdle = 0
|
||||
mysql.db.pool.hikaricp.maximumPoolSize = 10
|
||||
mysql.db.pool.hikaricp.connectionInitSql = SELECT 1
|
||||
mysql.db.pool.hikaricp.validationTimeout = 5000
|
||||
mysql.db.pool.hikaricp.leakDetectionThreshold = 60000
|
||||
|
||||
# ===============================
|
||||
# = MongoDB
|
||||
# ===============================
|
||||
mongo.db.url = mongodb://192.168.2.12:27017
|
||||
mongo.db.name = mymedisys_ims
|
||||
mongo.db.setname =
|
||||
mongo.db.uname =
|
||||
mongo.db.pword =
|
||||
|
||||
# ===============================
|
||||
# = REDIS
|
||||
# ===============================
|
||||
redis.cache.host = 127.0.0.1
|
||||
redis.cache.port = 6379
|
||||
redis.cache.uname =
|
||||
redis.cache.pword =
|
||||
redis.cache.bucket = IMS_BUCKET
|
||||
redis.cache.duration = 86400
|
||||
|
||||
# ===============================
|
||||
# = SERVICE URL
|
||||
# ===============================
|
||||
##Identity Management System
|
||||
ims.service.timeout = 60000
|
||||
ims.uid.length = 8
|
||||
ims.txnid.length = 15
|
||||
|
||||
## Notification Alert System
|
||||
nas.service.url = http://127.0.0.1:8080/notification-alert-system
|
||||
nas.service.timeout = 60000
|
||||
|
||||
ims.jwt.secret = WmHJGJJPfH8LQFz
|
||||
ims.jwt.expiration = 86400000
|
|
@ -0,0 +1,74 @@
|
|||
ims.service.client = mymedisys-nas
|
||||
ims.service.skey = myMEDISYS@2020
|
||||
|
||||
# ===============================
|
||||
# = MySQL
|
||||
# ===============================
|
||||
mysql.db.driver = com.mysql.cj.jdbc.Driver
|
||||
mysql.db.url = jdbc:mysql://192.168.2.12:3306/mymedisys_db?zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Kuala_Lumpur
|
||||
mysql.db.uname = mymedisys.admin
|
||||
mysql.db.pword = /NToPXxweodmV3QrBAW+oA==
|
||||
|
||||
# ===============================
|
||||
# = MongoDB
|
||||
# ===============================
|
||||
mongo.db.url = mongodb://192.168.2.12:27017
|
||||
mongo.db.name = mymedisys_nas
|
||||
mongo.db.setname =
|
||||
mongo.db.uname =
|
||||
mongo.db.pword =
|
||||
|
||||
|
||||
# HikariCP
|
||||
mysql.db.pool.hikaricp.connectionTimeout = 30000
|
||||
mysql.db.pool.hikaricp.idleTimeout = 600000
|
||||
mysql.db.pool.hikaricp.maxLifetime = 1800000
|
||||
mysql.db.pool.hikaricp.connectionTestQuery = SELECT 1
|
||||
mysql.db.pool.hikaricp.minimumIdle = 0
|
||||
mysql.db.pool.hikaricp.maximumPoolSize = 10
|
||||
mysql.db.pool.hikaricp.connectionInitSql = SELECT 1
|
||||
mysql.db.pool.hikaricp.validationTimeout = 5000
|
||||
mysql.db.pool.hikaricp.leakDetectionThreshold = 60000
|
||||
|
||||
# ===============================
|
||||
# = MANDRILL
|
||||
# ===============================
|
||||
mail.from = MyMEDISYS <noreply@mymedisys.my>
|
||||
mail.host = mail.conceptway.com.my
|
||||
mail.protocol = smtp
|
||||
mail.port = 587
|
||||
mail.username = myfrims@conceptway.com.my
|
||||
mail.password = Frims@12345
|
||||
|
||||
# ===============================
|
||||
# = SMTP
|
||||
# ===============================
|
||||
sms.gateway.username =
|
||||
sms.gateway.password =
|
||||
sms.gateway.auth.url =
|
||||
|
||||
# ===============================
|
||||
# = FCM
|
||||
# ===============================
|
||||
fcm.googleapis.url =
|
||||
fcm.googleapis.key =
|
||||
fcm.service.timeout = 60000
|
||||
|
||||
# ===============================
|
||||
# = SERVICE URL
|
||||
# ===============================
|
||||
## Identity Management System
|
||||
ims.service.url = http://127.0.0.1:8080/identity-management-system
|
||||
ims.service.timeout = 60000
|
||||
|
||||
## File Management System
|
||||
fms.service.url = http://127.0.0.1:8080/file-management-sytem
|
||||
fms.service.timeout = 60000
|
||||
|
||||
## Report Gateway
|
||||
rpt.service.url = http://127.0.0.1:8080/mymedisys-report
|
||||
rpt.service.timeout = 60000
|
||||
|
||||
# Notification Send All Interval
|
||||
nas.service.interval = 60000
|
||||
nas.service.timeout = 2000
|
|
@ -0,0 +1,75 @@
|
|||
ims.service.client = mymedisys-wps
|
||||
ims.service.skey = myMEDISYS@2020
|
||||
|
||||
# ===============================
|
||||
# = MySQL
|
||||
# ===============================
|
||||
mysql.db.driver = com.mysql.cj.jdbc.Driver
|
||||
mysql.db.url = jdbc:mysql://192.168.2.12:3306/mymedisys_db?zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Kuala_Lumpur
|
||||
mysql.db.uname = mymedisys.admin
|
||||
mysql.db.pword = /NToPXxweodmV3QrBAW+oA==
|
||||
|
||||
|
||||
# HikariCP
|
||||
mysql.db.pool.hikaricp.connectionTimeout = 30000
|
||||
mysql.db.pool.hikaricp.idleTimeout = 600000
|
||||
mysql.db.pool.hikaricp.maxLifetime = 1800000
|
||||
mysql.db.pool.hikaricp.connectionTestQuery = SELECT 1
|
||||
mysql.db.pool.hikaricp.minimumIdle = 0
|
||||
mysql.db.pool.hikaricp.maximumPoolSize = 10
|
||||
mysql.db.pool.hikaricp.connectionInitSql = SELECT 1
|
||||
mysql.db.pool.hikaricp.validationTimeout = 5000
|
||||
mysql.db.pool.hikaricp.leakDetectionThreshold = 60000
|
||||
|
||||
# ===============================
|
||||
# = REDIS
|
||||
# ===============================
|
||||
redis.cache.host = 127.0.0.1
|
||||
redis.cache.port = 6379
|
||||
redis.cache.uname =
|
||||
redis.cache.pword =
|
||||
redis.cache.bucket = WPS_BUCKET
|
||||
redis.cache.duration = 86400
|
||||
|
||||
# ===============================
|
||||
# = MANDRILL
|
||||
# ===============================
|
||||
mail.from = MyMEDISYS Development <noreply@mymedisys.com.my>
|
||||
mail.host = mail.conceptway.com.my
|
||||
mail.protocol = smtp
|
||||
mail.port = 587
|
||||
mail.username = myfrims@conceptway.com.my
|
||||
mail.password = Frims@12345
|
||||
|
||||
# ===============================
|
||||
# = SMTP
|
||||
# ===============================
|
||||
sms.gateway.username =
|
||||
sms.gateway.password =
|
||||
sms.gateway.auth.url =
|
||||
|
||||
# ===============================
|
||||
# = FCM
|
||||
# ===============================
|
||||
fcm.googleapis.url =
|
||||
fcm.googleapis.key =
|
||||
fcm.service.timeout = 60000
|
||||
|
||||
# ===============================
|
||||
# = SERVICE URL
|
||||
# ===============================
|
||||
## Identity Management System
|
||||
ims.service.url = http://127.0.0.1:8080/identity-management-system
|
||||
ims.service.timeout = 60000
|
||||
|
||||
## File Management System
|
||||
fms.service.url = http://127.0.0.1:8080/file-management-sytem
|
||||
fms.service.timeout = 60000
|
||||
|
||||
## Report Gateway
|
||||
rpt.service.url = http://127.0.0.1:8080/mymedisys-report
|
||||
rpt.service.timeout = 60000
|
||||
|
||||
# Notification Send All Interval
|
||||
nas.service.interval = 60000
|
||||
nas.service.timeout = 2000
|
|
@ -0,0 +1,59 @@
|
|||
ims.service.client = mymedisys-be
|
||||
ims.service.skey = myMEDISYS@2020
|
||||
|
||||
# ===============================
|
||||
# = MySQL
|
||||
# ===============================
|
||||
mysql.db.driver = com.mysql.cj.jdbc.Driver
|
||||
mysql.db.url = jdbc:mysql://192.168.2.12:3306/mymedisys_db?zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Kuala_Lumpur
|
||||
mysql.db.uname = mymedisys.admin
|
||||
mysql.db.pword = /NToPXxweodmV3QrBAW+oA==
|
||||
|
||||
# HikariCP
|
||||
mysql.db.pool.hikaricp.connectionTimeout = 30000
|
||||
mysql.db.pool.hikaricp.idleTimeout = 600000
|
||||
mysql.db.pool.hikaricp.maxLifetime = 1800000
|
||||
mysql.db.pool.hikaricp.connectionTestQuery = SELECT 1
|
||||
mysql.db.pool.hikaricp.minimumIdle = 0
|
||||
mysql.db.pool.hikaricp.maximumPoolSize = 10
|
||||
mysql.db.pool.hikaricp.connectionInitSql = SELECT 1
|
||||
mysql.db.pool.hikaricp.validationTimeout = 5000
|
||||
mysql.db.pool.hikaricp.leakDetectionThreshold = 60000
|
||||
|
||||
# ===============================
|
||||
# = REDIS
|
||||
# ===============================
|
||||
redis.cache.host = 127.0.0.1
|
||||
redis.cache.port = 6379
|
||||
redis.cache.uname =
|
||||
redis.cache.pword =
|
||||
redis.cache.bucket = BE_BUCKET
|
||||
redis.cache.duration = 86400
|
||||
|
||||
# ===============================
|
||||
# = SERVICE URL
|
||||
# ===============================
|
||||
## Identity Management System
|
||||
ims.service.url = http://127.0.0.1:8080/identity-management-system
|
||||
ims.service.timeout = 60000
|
||||
|
||||
## File Management System
|
||||
fms.service.url = http://127.0.0.1:8080/file-management-system
|
||||
fms.service.timeout = 60000
|
||||
|
||||
## Notification and Alert System
|
||||
nas.service.url = http://127.0.0.1:8080/notification-alert-system
|
||||
nas.service.timeout = 60000
|
||||
|
||||
## Workflow Process System
|
||||
wps.service.url = http://127.0.0.1:8080/workflow-process-system
|
||||
wps.service.timeout = 60000
|
||||
|
||||
## Report Gateway
|
||||
rpt.service.url = http://127.0.0.1:8080/mymedisys-report
|
||||
rpt.service.timeout = 60000
|
||||
|
||||
##MyFrims API
|
||||
myfrims.service.url=http://192.168.2.102:8080/myfrims-backend
|
||||
myfrims.service.timeout=60000
|
||||
system.type=myFrims
|
|
@ -0,0 +1,65 @@
|
|||
ims.service.client = mymedisys-fe
|
||||
ims.service.skey = myMEDISYS@2020
|
||||
ims.service.ekey = 5f50787d0aa5e668053d527c
|
||||
|
||||
app.portal.type = MYMEDISYS
|
||||
gov.portal.access.from = 00:00
|
||||
gov.portal.access.to = 24:00
|
||||
|
||||
# Server URI-Encoding
|
||||
server.tomcat.uri-encoding = utf-8
|
||||
server.tomcat.max-http-post-size: 10MB
|
||||
|
||||
# Application Config
|
||||
thymleaf.template.cacheable = false
|
||||
|
||||
## session.secure.cookie: DEV = false, PROD = true
|
||||
session.secure.cookie = true
|
||||
|
||||
is.using.https = false;
|
||||
|
||||
# ===============================
|
||||
# = REDIS
|
||||
# ===============================
|
||||
redis.cache.host = 127.0.0.1
|
||||
redis.cache.port = 6379
|
||||
redis.cache.uname =
|
||||
redis.cache.pword =
|
||||
redis.cache.bucket = FE_BUCKET
|
||||
redis.cache.duration = 86400
|
||||
|
||||
# ===============================
|
||||
# = ReCaptcha
|
||||
# ===============================
|
||||
recaptcha.sitekey = 6Le6PxoaAAAAAHDMsT5-lhC3kX-nTzTKHXvCVbhK
|
||||
|
||||
# ===============================
|
||||
# = Services
|
||||
# ===============================
|
||||
## Identity Management System
|
||||
ims.service.url = http://127.0.0.1:8080/identity-management-system
|
||||
ims.service.timeout = 60000
|
||||
|
||||
## File Management System
|
||||
fms.service.url = http://127.0.0.1:8080/file-management-system
|
||||
fms.service.timeout = 60000
|
||||
|
||||
## Notification and Alert System
|
||||
nas.service.url = http://127.0.0.1:8080/notification-alert-system
|
||||
nas.service.timeout = 60000
|
||||
|
||||
## Workflow Process System
|
||||
wps.service.url = http://127.0.0.1:8080/workflow-process-system
|
||||
wps.service.timeout = 60000
|
||||
|
||||
## Backend Service
|
||||
be.service.url=http://127.0.0.1:8080/mymedisys-backend
|
||||
be.service.timeout=60000
|
||||
|
||||
## Report Gateway
|
||||
rpt.service.url = http://127.0.0.1:8080/mymedisys-report
|
||||
rpt.service.timeout = 60000
|
||||
|
||||
## Security Gateway
|
||||
sgw.service.url = http://127.0.0.1:8080/mymedisys-sgw
|
||||
sgw.service.timeout = 60000
|
|
@ -0,0 +1,60 @@
|
|||
ims.service.client = mymedisys-rpt
|
||||
ims.service.skey = myMEDISYS@2020
|
||||
|
||||
# ===============================
|
||||
# = MySQL
|
||||
# ===============================
|
||||
mysql.db.driver = com.mysql.cj.jdbc.Driver
|
||||
mysql.db.url = jdbc:mysql://192.168.2.12:3306/mymedisys_db?zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Kuala_Lumpur
|
||||
mysql.db.uname = mymedisys.admin
|
||||
mysql.db.pword = /NToPXxweodmV3QrBAW+oA==
|
||||
|
||||
# HikariCP
|
||||
mysql.db.pool.hikaricp.connectionTimeout = 30000
|
||||
mysql.db.pool.hikaricp.idleTimeout = 600000
|
||||
mysql.db.pool.hikaricp.maxLifetime = 1800000
|
||||
mysql.db.pool.hikaricp.connectionTestQuery = SELECT 1
|
||||
mysql.db.pool.hikaricp.minimumIdle = 0
|
||||
mysql.db.pool.hikaricp.maximumPoolSize = 10
|
||||
mysql.db.pool.hikaricp.connectionInitSql = SELECT 1
|
||||
mysql.db.pool.hikaricp.validationTimeout = 5000
|
||||
mysql.db.pool.hikaricp.leakDetectionThreshold = 60000
|
||||
|
||||
# ===============================
|
||||
# = MANDRILL
|
||||
# ===============================
|
||||
mail.from = MyMEDISYS Development <noreply@mymedisys.com.my>
|
||||
mail.host = mail.conceptway.com.my
|
||||
mail.protocol = smtp
|
||||
mail.port = 587
|
||||
mail.username = myfrims@conceptway.com.my
|
||||
mail.password = Frims@12345
|
||||
|
||||
# ===============================
|
||||
# = REDIS
|
||||
# ===============================
|
||||
redis.cache.host = 127.0.0.1
|
||||
redis.cache.port = 6379
|
||||
redis.cache.uname =
|
||||
redis.cache.pword =
|
||||
redis.cache.bucket = RPT_BUCKET
|
||||
redis.cache.duration = 86400
|
||||
|
||||
# ===============================
|
||||
# = SERVICE URL
|
||||
# ===============================
|
||||
# IMS
|
||||
ims.service.timeout = 300
|
||||
ims.service.url = http://127.0.0.1:8080/identity-management-system
|
||||
|
||||
# FMS
|
||||
fms.service.timeout = 300
|
||||
fms.service.url = http://127.0.0.1:8080/file-management-system
|
||||
|
||||
# NAS
|
||||
nas.service.timeout = 300
|
||||
nas.service.url = http://127.0.0.1:8080/notification-alert-system
|
||||
|
||||
# WPS
|
||||
wps.service.timeout = 300
|
||||
wps.service.url = http://127.0.0.1:8080/workflow-process-system
|
After Width: | Height: | Size: 92 KiB |
BIN
frmgitlab/mymedisys-master/mymedisys-master/mail/images/logo.png
Normal file
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 10 KiB |
|
@ -0,0 +1,308 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:v="urn:schemas-microsoft-com:vml">
|
||||
<head>
|
||||
<!--[if gte mso 9]><xml><o:OfficeDocumentSettings><o:AllowPNG/><o:PixelsPerInch>96</o:PixelsPerInch></o:OfficeDocumentSettings></xml><![endif]-->
|
||||
<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
|
||||
<meta content="width=device-width" name="viewport"/>
|
||||
<!--[if !mso]><!-->
|
||||
<meta content="IE=edge" http-equiv="X-UA-Compatible"/>
|
||||
<!--<![endif]-->
|
||||
<title></title>
|
||||
<!--[if !mso]><!-->
|
||||
<!--<![endif]-->
|
||||
<style type="text/css">
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
table,
|
||||
td,
|
||||
tr {
|
||||
vertical-align: top;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
* {
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
a[x-apple-data-detectors=true] {
|
||||
color: inherit !important;
|
||||
text-decoration: none !important;
|
||||
}
|
||||
</style>
|
||||
<style id="media-query" type="text/css">
|
||||
@media (max-width: 660px) {
|
||||
|
||||
.block-grid,
|
||||
.col {
|
||||
min-width: 320px !important;
|
||||
max-width: 100% !important;
|
||||
display: block !important;
|
||||
}
|
||||
|
||||
.block-grid {
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.col {
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.col_cont {
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
img.fullwidth,
|
||||
img.fullwidthOnMobile {
|
||||
max-width: 100% !important;
|
||||
}
|
||||
|
||||
.no-stack .col {
|
||||
min-width: 0 !important;
|
||||
display: table-cell !important;
|
||||
}
|
||||
|
||||
.no-stack.two-up .col {
|
||||
width: 50% !important;
|
||||
}
|
||||
|
||||
.no-stack .col.num2 {
|
||||
width: 16.6% !important;
|
||||
}
|
||||
|
||||
.no-stack .col.num3 {
|
||||
width: 25% !important;
|
||||
}
|
||||
|
||||
.no-stack .col.num4 {
|
||||
width: 33% !important;
|
||||
}
|
||||
|
||||
.no-stack .col.num5 {
|
||||
width: 41.6% !important;
|
||||
}
|
||||
|
||||
.no-stack .col.num6 {
|
||||
width: 50% !important;
|
||||
}
|
||||
|
||||
.no-stack .col.num7 {
|
||||
width: 58.3% !important;
|
||||
}
|
||||
|
||||
.no-stack .col.num8 {
|
||||
width: 66.6% !important;
|
||||
}
|
||||
|
||||
.no-stack .col.num9 {
|
||||
width: 75% !important;
|
||||
}
|
||||
|
||||
.no-stack .col.num10 {
|
||||
width: 83.3% !important;
|
||||
}
|
||||
|
||||
.video-block {
|
||||
max-width: none !important;
|
||||
}
|
||||
|
||||
.mobile_hide {
|
||||
min-height: 0px;
|
||||
max-height: 0px;
|
||||
max-width: 0px;
|
||||
display: none;
|
||||
overflow: hidden;
|
||||
font-size: 0px;
|
||||
}
|
||||
|
||||
.desktop_hide {
|
||||
display: block !important;
|
||||
max-height: none !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="clean-body" style="margin: 0; padding: 0; -webkit-text-size-adjust: 100%; background-color: #FFFFFF;">
|
||||
<!--[if IE]><div class="ie-browser"><![endif]-->
|
||||
<table bgcolor="#FFFFFF" cellpadding="0" cellspacing="0" class="nl-container" role="presentation" style="table-layout: fixed; vertical-align: top; min-width: 320px; border-spacing: 0; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; background-color: #FFFFFF; width: 100%;" valign="top" width="100%">
|
||||
<tbody>
|
||||
<tr style="vertical-align: top;" valign="top">
|
||||
<td style="word-break: break-word; vertical-align: top;" valign="top">
|
||||
<!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td align="center" style="background-color:#FFFFFF"><![endif]-->
|
||||
<div style="background-color:#f5f5f5;">
|
||||
<div class="block-grid" style="min-width: 320px; max-width: 640px; overflow-wrap: break-word; word-wrap: break-word; word-break: break-word; Margin: 0 auto; background-color: transparent;">
|
||||
<div style="border-collapse: collapse;display: table;width: 100%;background-color:transparent;">
|
||||
<!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0" style="background-color:#f5f5f5;"><tr><td align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:640px"><tr class="layout-full-width" style="background-color:transparent"><![endif]-->
|
||||
<!--[if (mso)|(IE)]><td align="center" width="640" style="background-color:transparent;width:640px; border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent;" valign="top"><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 20px; padding-left: 20px; padding-top:20px; padding-bottom:20px;"><![endif]-->
|
||||
<div class="col num12" style="min-width: 320px; max-width: 640px; display: table-cell; vertical-align: top; width: 640px;">
|
||||
<div class="col_cont" style="width:100% !important;">
|
||||
<!--[if (!mso)&(!IE)]><!-->
|
||||
<div style="border-top:0px solid transparent; border-left:0px solid transparent; border-bottom:0px solid transparent; border-right:0px solid transparent; padding-top:20px; padding-bottom:20px; padding-right: 20px; padding-left: 20px;">
|
||||
<!--<![endif]-->
|
||||
<div align="center" class="img-container center fixedwidth" style="padding-right: 0px;padding-left: 0px;">
|
||||
<!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr style="line-height:0px"><td style="padding-right: 0px;padding-left: 0px;" align="center"><![endif]-->
|
||||
<img alt="Image" border="0" class="center fixedwidth" src="images/logo.PNG" data-th-src="|cid:MAIL_LOGO|" th:alt="${MAIL_LOGO}" th:title="${MAIL_LOGO}" style="text-decoration: none; -ms-interpolation-mode: bicubic; height: auto; border: 0; width: 100%; max-width: 300px;float:left;" width="120" />
|
||||
<!--<img alt="Image" border="0" src="images/logo_immi.png" data-th-src="|cid:MAIL_LOGO_IMMI|" th:alt="${MAIL_LOGO_IMMI}" th:title="${MAIL_LOGO_IMMI}" style="text-decoration: none; -ms-interpolation-mode: bicubic; height: 64px; border: 0;float:right;" />-->
|
||||
<!--[if mso]></td></tr></table><![endif]-->
|
||||
</div>
|
||||
<!--[if (!mso)&(!IE)]><!-->
|
||||
</div>
|
||||
<!--<![endif]-->
|
||||
</div>
|
||||
</div>
|
||||
<!--[if (mso)|(IE)]></td></tr></table><![endif]-->
|
||||
<!--[if (mso)|(IE)]></td></tr></table></td></tr></table><![endif]-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="background-color:#f5f5f5;">
|
||||
<div class="block-grid" style="min-width: 320px; max-width: 640px; overflow-wrap: break-word; word-wrap: break-word; word-break: break-word; Margin: 0 auto; background-color: #058e3f;">
|
||||
<div style="border-collapse: collapse;display: table;width: 100%;background-color:#058e3f;">
|
||||
<!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0" style="background-color:#f5f5f5;"><tr><td align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:640px"><tr class="layout-full-width" style="background-color:#058e3f"><![endif]-->
|
||||
<!--[if (mso)|(IE)]><td align="center" width="640" style="background-color:#058e3f;width:640px; border-top: 0px solid transparent; border-left: 1px solid #F2C14E; border-bottom: 0px solid transparent; border-right: 1px solid #F2C14E;" valign="top"><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 0px; padding-left: 0px; padding-top:0px; padding-bottom:0px;"><![endif]-->
|
||||
<div class="col num12" style="min-width: 320px; max-width: 640px; display: table-cell; vertical-align: top; width: 638px;">
|
||||
<div class="col_cont" style="width:100% !important;">
|
||||
<!--[if (!mso)&(!IE)]><!-->
|
||||
<div style="border-top:0px solid transparent; border-left:1px solid #F2C14E; border-bottom:0px solid transparent; border-right:1px solid #F2C14E; padding-top:0px; padding-bottom:0px; padding-right: 0px; padding-left: 0px;">
|
||||
<!--<![endif]-->
|
||||
<!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 10px; padding-left: 10px; padding-top: 10px; padding-bottom: 10px; font-family: Arial, sans-serif"><![endif]-->
|
||||
<div style="color:#ffffff;font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;line-height:1.8;padding-top:10px;padding-right:10px;padding-bottom:10px;padding-left:10px;">
|
||||
<div style="line-height: 1.8; font-size: 12px; color: #ffffff; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; mso-line-height-alt: 22px;">
|
||||
<p style="line-height: 1.8; word-break: break-word; mso-line-height-alt: 22px; margin: 0;height:10px;"></p>
|
||||
</div>
|
||||
</div>
|
||||
<!--[if mso]></td></tr></table><![endif]-->
|
||||
<!--[if (!mso)&(!IE)]><!-->
|
||||
</div>
|
||||
<!--<![endif]-->
|
||||
</div>
|
||||
</div>
|
||||
<!--[if (mso)|(IE)]></td></tr></table><![endif]-->
|
||||
<!--[if (mso)|(IE)]></td></tr></table></td></tr></table><![endif]-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="background-color:#f5f5f5;">
|
||||
<div class="block-grid" style="min-width: 320px; max-width: 640px; overflow-wrap: break-word; word-wrap: break-word; word-break: break-word; Margin: 0 auto; background-color: #058e3f;">
|
||||
<div style="border-collapse: collapse;display: table;width: 100%;background-color:#058e3f;">
|
||||
<!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0" style="background-color:#f5f5f5;"><tr><td align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:640px"><tr class="layout-full-width" style="background-color:#058e3f"><![endif]-->
|
||||
<!--[if (mso)|(IE)]><td align="center" width="640" style="background-color:#058e3f;width:640px; border-top: 0px solid transparent; border-left: 1px solid #F2C14E; border-bottom: 0px solid transparent; border-right: 1px solid #F2C14E;" valign="top"><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 0px; padding-left: 0px; padding-top:0px; padding-bottom:0px;"><![endif]-->
|
||||
<div class="col num12" style="min-width: 320px; max-width: 640px; display: table-cell; vertical-align: top; width: 638px;">
|
||||
<div class="col_cont" style="width:100% !important;">
|
||||
<!--[if (!mso)&(!IE)]><!-->
|
||||
<div style="border-top:0px solid transparent; border-left:1px solid #F2C14E; border-bottom:0px solid transparent; border-right:1px solid #F2C14E; padding-top:0px; padding-bottom:0px; padding-right: 0px; padding-left: 0px;">
|
||||
<!--<![endif]-->
|
||||
<div align="center" class="img-container center autowidth" style="padding-right: 0px;padding-left: 0px;">
|
||||
<!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr style="line-height:0px"><td style="padding-right: 0px;padding-left: 0px;" align="center"><![endif]-->
|
||||
<!--<img align="center" alt="Image" border="0" class="center autowidth" src="images/banner.jpg" data-th-src="|cid:MAIL_BANNER|" th:alt="${MAIL_BANNER}" th:title="${MAIL_BANNER}" style="text-decoration: none; -ms-interpolation-mode: bicubic; height: auto; border: 0; width: 100%; max-width: 638px; display: block;" width="638" />-->
|
||||
<!--[if mso]></td></tr></table><![endif]-->
|
||||
</div>
|
||||
<!--[if (!mso)&(!IE)]><!-->
|
||||
</div>
|
||||
<!--<![endif]-->
|
||||
</div>
|
||||
</div>
|
||||
<!--[if (mso)|(IE)]></td></tr></table><![endif]-->
|
||||
<!--[if (mso)|(IE)]></td></tr></table></td></tr></table><![endif]-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="background-color:#f5f5f5;">
|
||||
<div class="block-grid" style="min-width: 320px; max-width: 640px; overflow-wrap: break-word; word-wrap: break-word; word-break: break-word; Margin: 0 auto; background-color: #ffffff;">
|
||||
<div style="border-collapse: collapse;display: table;width: 100%;background-color:#ffffff;">
|
||||
<!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0" style="background-color:#f5f5f5;"><tr><td align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:640px"><tr class="layout-full-width" style="background-color:#ffffff"><![endif]-->
|
||||
<!--[if (mso)|(IE)]><td align="center" width="640" style="background-color:#ffffff;width:640px; border-top: 0px solid transparent; border-left: 1px solid #F2C14E; border-bottom: 1px solid #F2C14E; border-right: 1px solid #F2C14E;" valign="top"><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 0px; padding-left: 0px; padding-top:5px; padding-bottom:35px;"><![endif]-->
|
||||
<div class="col num12" style="min-width: 320px; max-width: 640px; display: table-cell; vertical-align: top; width: 638px;">
|
||||
<div class="col_cont" style="width:100% !important;">
|
||||
<!--[if (!mso)&(!IE)]><!-->
|
||||
<div style="border-top:0px solid transparent; border-left:1px solid #F2C14E; border-bottom:1px solid #F2C14E; border-right:1px solid #F2C14E; padding-top:5px; padding-bottom:35px; padding-right: 0px; padding-left: 0px;">
|
||||
<!--<![endif]-->
|
||||
<!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 10px; padding-left: 10px; padding-top: 10px; padding-bottom: 10px; font-family: Tahoma, Verdana, sans-serif"><![endif]-->
|
||||
<div style="color:#058e3f;font-family:Tahoma, Verdana, Segoe, sans-serif;line-height:1.2;padding-top:10px;padding-right:10px;padding-bottom:10px;padding-left:10px;">
|
||||
<div style="font-size: 14px; line-height: 1.2; font-family: Tahoma, Verdana, Segoe, sans-serif; color: #058e3f; mso-line-height-alt: 17px;">
|
||||
<!--<p style="font-size: 14px; line-height: 1.2; word-break: break-word; text-align: center; font-family: Tahoma, Verdana, Segoe, sans-serif; mso-line-height-alt: 17px; margin: 0;"><u><span style="font-size: 17px; mso-ansi-font-size: 18px;"><strong>Malaysia Special Pass</strong></span></u></p>-->
|
||||
</div>
|
||||
</div>
|
||||
<!--[if mso]></td></tr></table><![endif]-->
|
||||
<!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 30px; padding-left: 30px; padding-top: 10px; padding-bottom: 10px; font-family: Tahoma, Verdana, sans-serif"><![endif]-->
|
||||
<div style="color:#6a6a6a;font-family:Tahoma, Verdana, Segoe, sans-serif;line-height:1.5;padding-top:10px;padding-right:30px;padding-bottom:10px;padding-left:30px;">
|
||||
<div style="font-size: 14px; line-height: 1.5; font-family: Tahoma, Verdana, Segoe, sans-serif; color: #6a6a6a; mso-line-height-alt: 21px;">
|
||||
<p style="font-size: 13px; line-height: 1.5; word-break: break-word; text-align: right; font-family: Tahoma, Verdana, Segoe, sans-serif; mso-line-height-alt: 20px; mso-ansi-font-size: 14px; margin: 0;"><span style="font-size: 13px; mso-ansi-font-size: 14px;">Date: <th:block th:text="${GEN_DATE}" /></span></p>
|
||||
</div>
|
||||
</div>
|
||||
<!--[if mso]></td></tr></table><![endif]-->
|
||||
<!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 30px; padding-left: 30px; padding-top: 10px; padding-bottom: 10px; font-family: Tahoma, Verdana, sans-serif"><![endif]-->
|
||||
<div style="color:#6a6a6a;font-family:Tahoma, Verdana, Segoe, sans-serif;line-height:1.5;padding-top:10px;padding-right:30px;padding-bottom:10px;padding-left:30px;">
|
||||
<div style="font-size: 14px; line-height: 1.5; font-family: Tahoma, Verdana, Segoe, sans-serif; color: #6a6a6a; mso-line-height-alt: 21px;">
|
||||
<p style="font-size: 13px; line-height: 1.5; word-break: break-word; text-align: justify; font-family: Tahoma, Verdana, Segoe, sans-serif; mso-line-height-alt: 20px; mso-ansi-font-size: 14px; margin: 0;"><span style="font-size: 13px; mso-ansi-font-size: 14px;">
|
||||
<!--/* START CONTENT */-->
|
||||
<th:block th:utext="${content}" />
|
||||
<!--/* END CONTENT */-->
|
||||
</span></p>
|
||||
</div>
|
||||
</div>
|
||||
<!--[if mso]></td></tr></table><![endif]-->
|
||||
<!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 30px; padding-left: 30px; padding-top: 25px; padding-bottom: 10px; font-family: Tahoma, Verdana, sans-serif"><![endif]-->
|
||||
<div style="color:#6a6a6a;font-family:Tahoma, Verdana, Segoe, sans-serif;line-height:1.5;padding-top:25px;padding-right:30px;padding-bottom:10px;padding-left:30px;">
|
||||
<div style="font-size: 14px; line-height: 1.5; font-family: Tahoma, Verdana, Segoe, sans-serif; color: #6a6a6a; mso-line-height-alt: 21px;">
|
||||
<p style="font-size: 12px; line-height: 1.5; word-break: break-word; text-align: left; font-family: Tahoma, Verdana, Segoe, sans-serif; mso-line-height-alt: 18px; margin: 0;"><span style="font-size: 12px;">Thanks,</span></p>
|
||||
<p style="font-size: 12px; line-height: 1.5; word-break: break-word; text-align: left; font-family: Tahoma, Verdana, Segoe, sans-serif; mso-line-height-alt: 18px; margin: 0;"><span style="font-size: 12px;">System Administrator</span></p>
|
||||
</div>
|
||||
</div>
|
||||
<!--[if mso]></td></tr></table><![endif]-->
|
||||
<!--[if (!mso)&(!IE)]><!-->
|
||||
</div>
|
||||
<!--<![endif]-->
|
||||
</div>
|
||||
</div>
|
||||
<!--[if (mso)|(IE)]></td></tr></table><![endif]-->
|
||||
<!--[if (mso)|(IE)]></td></tr></table></td></tr></table><![endif]-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="background-color:#f5f5f5;">
|
||||
<div class="block-grid" style="min-width: 320px; max-width: 640px; overflow-wrap: break-word; word-wrap: break-word; word-break: break-word; Margin: 0 auto; background-color: transparent;">
|
||||
<div style="border-collapse: collapse;display: table;width: 100%;background-color:transparent;">
|
||||
<!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0" style="background-color:#f5f5f5;"><tr><td align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:640px"><tr class="layout-full-width" style="background-color:transparent"><![endif]-->
|
||||
<!--[if (mso)|(IE)]><td align="center" width="640" style="background-color:transparent;width:640px; border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent;" valign="top"><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 0px; padding-left: 0px; padding-top:10px; padding-bottom:10px;"><![endif]-->
|
||||
<div class="col num12" style="min-width: 320px; max-width: 640px; display: table-cell; vertical-align: top; width: 640px;">
|
||||
<div class="col_cont" style="width:100% !important;">
|
||||
<!--[if (!mso)&(!IE)]><!-->
|
||||
<div style="border-top:0px solid transparent; border-left:0px solid transparent; border-bottom:0px solid transparent; border-right:0px solid transparent; padding-top:10px; padding-bottom:10px; padding-right: 0px; padding-left: 0px;">
|
||||
<!--<![endif]-->
|
||||
<!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 10px; padding-left: 10px; padding-top: 10px; padding-bottom: 10px; font-family: Tahoma, Verdana, sans-serif"><![endif]-->
|
||||
<div style="color:#6a6a6a;font-family:Tahoma, Verdana, Segoe, sans-serif;line-height:1.2;padding-top:10px;padding-right:10px;padding-bottom:10px;padding-left:10px;">
|
||||
<div style="font-size: 14px; line-height: 1.2; font-family: Tahoma, Verdana, Segoe, sans-serif; color: #6a6a6a; mso-line-height-alt: 17px;">
|
||||
<p style="font-size: 12px; line-height: 1.2; word-break: break-word; text-align: center; font-family: Tahoma, Verdana, Segoe, sans-serif; mso-line-height-alt: 14px; margin: 0;"><span style="font-size: 12px;">
|
||||
<strong>IMPORTANT:</strong> Please do not reply to this message or mail address. For any queries, please call our 24 Hrs Customer Experience Center on our number <th:block th:text="${CUST_CARE_CONTACT}" /> or email us at <th:block th:text="${CUST_CARE_EMAIL}" /></span></p>
|
||||
</div>
|
||||
</div>
|
||||
<!--[if mso]></td></tr></table><![endif]-->
|
||||
<!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 0px; padding-left: 0px; padding-top: 0px; padding-bottom: 0px; font-family: Tahoma, Verdana, sans-serif"><![endif]-->
|
||||
<div style="color:#6a6a6a;font-family:Tahoma, Verdana, Segoe, sans-serif;line-height:1.2;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;">
|
||||
<div style="font-size: 14px; line-height: 1.2; font-family: Tahoma, Verdana, Segoe, sans-serif; color: #6a6a6a; mso-line-height-alt: 17px;">
|
||||
<p style="font-size: 12px; line-height: 1.2; word-break: break-word; text-align: center; font-family: Tahoma, Verdana, Segoe, sans-serif; mso-line-height-alt: 14px; margin: 0;"><span style="font-size: 12px;"><strong><th:block th:utext="${COPYRIGHT}" /></strong></span></p>
|
||||
</div>
|
||||
</div>
|
||||
<!--[if mso]></td></tr></table><![endif]-->
|
||||
<!--[if (!mso)&(!IE)]><!-->
|
||||
</div>
|
||||
<!--<![endif]-->
|
||||
</div>
|
||||
</div>
|
||||
<!--[if (mso)|(IE)]></td></tr></table><![endif]-->
|
||||
<!--[if (mso)|(IE)]></td></tr></table></td></tr></table><![endif]-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--[if (mso)|(IE)]></td></tr></table><![endif]-->
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<!--[if (IE)]></div><![endif]-->
|
||||
</body>
|
||||
</html>
|
49
frmgitlab/mymedisys-master/mymedisys-master/staging/pom.xml
Normal file
|
@ -0,0 +1,49 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>com.concept</groupId>
|
||||
<artifactId>mymedisys</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<name>Staging Master POM</name>
|
||||
<url>http://maven.apache.org</url>
|
||||
<properties>
|
||||
<build.path>/var/lib/jenkins/workspace</build.path>
|
||||
<project.name>MyMEDISYS</project.name>
|
||||
</properties>
|
||||
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>all</id>
|
||||
<activation>
|
||||
<activeByDefault>true</activeByDefault>
|
||||
</activation>
|
||||
<modules>
|
||||
<module>core-utility</module>
|
||||
<module>identity-management-system/identity-management-system-api</module>
|
||||
<module>notification-alert-system/notification-alert-system-api</module>
|
||||
<module>file-management-system/file-management-system-api</module>
|
||||
<module>workflow-process-system/workflow-process-system-api</module>
|
||||
<module>identity-management-system/identity-management-system</module>
|
||||
<module>notification-alert-system/notification-alert-system</module>
|
||||
<module>file-management-system/file-management-system</module>
|
||||
<module>workflow-process-system/workflow-process-system</module>
|
||||
<module>materialkit-webjar</module>
|
||||
|
||||
<module>backend/backend-api</module>
|
||||
<module>report/report-api</module>
|
||||
<module>report/report</module>
|
||||
<module>backend/backend</module>
|
||||
<module>frontend/frontend</module>
|
||||
</modules>
|
||||
</profile>
|
||||
</profiles>
|
||||
<build>
|
||||
<plugins>
|
||||
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
ims.service.client = mymedisys-fms
|
||||
ims.service.skey = myMEDISYS@2020
|
||||
|
||||
# ===============================
|
||||
# = MongoDB
|
||||
# ===============================
|
||||
mongo.db.url = mongodb://192.168.2.12:27017
|
||||
mongo.db.name = mymedisys_fms_stg
|
||||
mongo.db.uname =
|
||||
mongo.db.pword =
|
||||
|
||||
# ===============================
|
||||
# = REDIS
|
||||
# ===============================
|
||||
redis.cache.host = 127.0.0.1
|
||||
redis.cache.port = 6379
|
||||
redis.cache.uname =
|
||||
redis.cache.pword =
|
||||
redis.cache.bucket = FMS_BUCKET
|
||||
redis.cache.duration = 86400
|
||||
|
||||
# ===============================
|
||||
# = SERVICE URL
|
||||
# ===============================
|
||||
ims.service.url = http://127.0.0.1:8080/identity-management-system
|
||||
ims.service.timeout = 6000
|
||||
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
ims.service.client = mymedisys-ims
|
||||
ims.service.skey = myMEDISYS@2020
|
||||
ims.service.ekey = HGsYjzYbE7AzpMbiInuJ
|
||||
|
||||
# ===============================
|
||||
# = MySQL
|
||||
# ===============================
|
||||
mysql.db.driver = com.mysql.cj.jdbc.Driver
|
||||
mysql.db.url = jdbc:mysql://192.168.2.12:3306/mymedisys_stg?zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Kuala_Lumpur
|
||||
mysql.db.uname = mymedisys.qa
|
||||
mysql.db.pword = /NToPXxweodmV3QrBAW+oA==
|
||||
|
||||
# HikariCP
|
||||
mysql.db.pool.hikaricp.connectionTimeout = 30000
|
||||
mysql.db.pool.hikaricp.idleTimeout = 600000
|
||||
mysql.db.pool.hikaricp.maxLifetime = 1800000
|
||||
mysql.db.pool.hikaricp.connectionTestQuery = SELECT 1
|
||||
mysql.db.pool.hikaricp.minimumIdle = 0
|
||||
mysql.db.pool.hikaricp.maximumPoolSize = 10
|
||||
mysql.db.pool.hikaricp.connectionInitSql = SELECT 1
|
||||
mysql.db.pool.hikaricp.validationTimeout = 5000
|
||||
mysql.db.pool.hikaricp.leakDetectionThreshold = 60000
|
||||
|
||||
# ===============================
|
||||
# = MongoDB
|
||||
# ===============================
|
||||
mongo.db.url = mongodb://192.168.2.12:27017
|
||||
mongo.db.name = mymedisys_ims_stg
|
||||
mongo.db.setname =
|
||||
mongo.db.uname =
|
||||
mongo.db.pword =
|
||||
|
||||
# ===============================
|
||||
# = REDIS
|
||||
# ===============================
|
||||
redis.cache.host = 127.0.0.1
|
||||
redis.cache.port = 6379
|
||||
redis.cache.uname =
|
||||
redis.cache.pword =
|
||||
redis.cache.bucket = IMS_BUCKET
|
||||
redis.cache.duration = 86400
|
||||
|
||||
# ===============================
|
||||
# = SERVICE URL
|
||||
# ===============================
|
||||
##Identity Management System
|
||||
ims.service.timeout = 60000
|
||||
ims.uid.length = 8
|
||||
ims.txnid.length = 15
|
||||
|
||||
## Notification Alert System
|
||||
nas.service.url = http://127.0.0.1:8080/notification-alert-system
|
||||
nas.service.timeout = 60000
|
||||
|
||||
ims.jwt.secret = WmHJGJJPfH8LQFz
|
||||
ims.jwt.expiration = 86400000
|
|
@ -0,0 +1,74 @@
|
|||
ims.service.client = mymedisys-nas
|
||||
ims.service.skey = myMEDISYS@2020
|
||||
|
||||
# ===============================
|
||||
# = MySQL
|
||||
# ===============================
|
||||
mysql.db.driver = com.mysql.cj.jdbc.Driver
|
||||
mysql.db.url = jdbc:mysql://192.168.2.12:3306/mymedisys_stg?zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Kuala_Lumpur
|
||||
mysql.db.uname = mymedisys.qa
|
||||
mysql.db.pword = /NToPXxweodmV3QrBAW+oA==
|
||||
|
||||
# ===============================
|
||||
# = MongoDB
|
||||
# ===============================
|
||||
mongo.db.url = mongodb://192.168.2.12:27017
|
||||
mongo.db.name = mymedisys_nas_stg
|
||||
mongo.db.setname =
|
||||
mongo.db.uname =
|
||||
mongo.db.pword =
|
||||
|
||||
|
||||
# HikariCP
|
||||
mysql.db.pool.hikaricp.connectionTimeout = 30000
|
||||
mysql.db.pool.hikaricp.idleTimeout = 600000
|
||||
mysql.db.pool.hikaricp.maxLifetime = 1800000
|
||||
mysql.db.pool.hikaricp.connectionTestQuery = SELECT 1
|
||||
mysql.db.pool.hikaricp.minimumIdle = 0
|
||||
mysql.db.pool.hikaricp.maximumPoolSize = 10
|
||||
mysql.db.pool.hikaricp.connectionInitSql = SELECT 1
|
||||
mysql.db.pool.hikaricp.validationTimeout = 5000
|
||||
mysql.db.pool.hikaricp.leakDetectionThreshold = 60000
|
||||
|
||||
# ===============================
|
||||
# = MANDRILL
|
||||
# ===============================
|
||||
mail.from = MyMEDISYS Staging <noreply@mymedisys.my>
|
||||
mail.host = mail.conceptway.com.my
|
||||
mail.protocol = smtp
|
||||
mail.port = 587
|
||||
mail.username = myfrims@conceptway.com.my
|
||||
mail.password = Frims@12345
|
||||
|
||||
# ===============================
|
||||
# = SMTP
|
||||
# ===============================
|
||||
sms.gateway.username =
|
||||
sms.gateway.password =
|
||||
sms.gateway.auth.url =
|
||||
|
||||
# ===============================
|
||||
# = FCM
|
||||
# ===============================
|
||||
fcm.googleapis.url =
|
||||
fcm.googleapis.key =
|
||||
fcm.service.timeout = 60000
|
||||
|
||||
# ===============================
|
||||
# = SERVICE URL
|
||||
# ===============================
|
||||
## Identity Management System
|
||||
ims.service.url = http://127.0.0.1:8080/identity-management-system
|
||||
ims.service.timeout = 60000
|
||||
|
||||
## File Management System
|
||||
fms.service.url = http://127.0.0.1:8080/file-management-sytem
|
||||
fms.service.timeout = 60000
|
||||
|
||||
## Report Gateway
|
||||
rpt.service.url = http://127.0.0.1:8080/mymedisys-report
|
||||
rpt.service.timeout = 60000
|
||||
|
||||
# Notification Send All Interval
|
||||
nas.service.interval = 60000
|
||||
nas.service.timeout = 2000
|
|
@ -0,0 +1,75 @@
|
|||
ims.service.client = mymedisys-wps
|
||||
ims.service.skey = myMEDISYS@2020
|
||||
|
||||
# ===============================
|
||||
# = MySQL
|
||||
# ===============================
|
||||
mysql.db.driver = com.mysql.cj.jdbc.Driver
|
||||
mysql.db.url = jdbc:mysql://192.168.2.12:3306/mymedisys_stg?zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Kuala_Lumpur
|
||||
mysql.db.uname = mymedisys.qa
|
||||
mysql.db.pword = /NToPXxweodmV3QrBAW+oA==
|
||||
|
||||
|
||||
# HikariCP
|
||||
mysql.db.pool.hikaricp.connectionTimeout = 30000
|
||||
mysql.db.pool.hikaricp.idleTimeout = 600000
|
||||
mysql.db.pool.hikaricp.maxLifetime = 1800000
|
||||
mysql.db.pool.hikaricp.connectionTestQuery = SELECT 1
|
||||
mysql.db.pool.hikaricp.minimumIdle = 0
|
||||
mysql.db.pool.hikaricp.maximumPoolSize = 10
|
||||
mysql.db.pool.hikaricp.connectionInitSql = SELECT 1
|
||||
mysql.db.pool.hikaricp.validationTimeout = 5000
|
||||
mysql.db.pool.hikaricp.leakDetectionThreshold = 60000
|
||||
|
||||
# ===============================
|
||||
# = REDIS
|
||||
# ===============================
|
||||
redis.cache.host = 127.0.0.1
|
||||
redis.cache.port = 6379
|
||||
redis.cache.uname =
|
||||
redis.cache.pword =
|
||||
redis.cache.bucket = WPS_BUCKET
|
||||
redis.cache.duration = 86400
|
||||
|
||||
# ===============================
|
||||
# = MANDRILL
|
||||
# ===============================
|
||||
mail.from = MyMEDISYS Staging <noreply@mymedisys.my>
|
||||
mail.host = mail.conceptway.com.my
|
||||
mail.protocol = smtp
|
||||
mail.port = 587
|
||||
mail.username = myfrims@conceptway.com.my
|
||||
mail.password = Frims@12345
|
||||
|
||||
# ===============================
|
||||
# = SMTP
|
||||
# ===============================
|
||||
sms.gateway.username =
|
||||
sms.gateway.password =
|
||||
sms.gateway.auth.url =
|
||||
|
||||
# ===============================
|
||||
# = FCM
|
||||
# ===============================
|
||||
fcm.googleapis.url =
|
||||
fcm.googleapis.key =
|
||||
fcm.service.timeout = 60000
|
||||
|
||||
# ===============================
|
||||
# = SERVICE URL
|
||||
# ===============================
|
||||
## Identity Management System
|
||||
ims.service.url = http://127.0.0.1:8080/identity-management-system
|
||||
ims.service.timeout = 60000
|
||||
|
||||
## File Management System
|
||||
fms.service.url = http://127.0.0.1:8080/file-management-sytem
|
||||
fms.service.timeout = 60000
|
||||
|
||||
## Report Gateway
|
||||
rpt.service.url = http://127.0.0.1:8080/mymedisys-report
|
||||
rpt.service.timeout = 60000
|
||||
|
||||
# Notification Send All Interval
|
||||
nas.service.interval = 60000
|
||||
nas.service.timeout = 2000
|
|
@ -0,0 +1,59 @@
|
|||
ims.service.client = mymedisys-be
|
||||
ims.service.skey = myMEDISYS@2020
|
||||
|
||||
# ===============================
|
||||
# = MySQL
|
||||
# ===============================
|
||||
mysql.db.driver = com.mysql.cj.jdbc.Driver
|
||||
mysql.db.url = jdbc:mysql://192.168.2.12:3306/mymedisys_stg?zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Kuala_Lumpur
|
||||
mysql.db.uname = mymedisys.qa
|
||||
mysql.db.pword = /NToPXxweodmV3QrBAW+oA==
|
||||
|
||||
# HikariCP
|
||||
mysql.db.pool.hikaricp.connectionTimeout = 30000
|
||||
mysql.db.pool.hikaricp.idleTimeout = 600000
|
||||
mysql.db.pool.hikaricp.maxLifetime = 1800000
|
||||
mysql.db.pool.hikaricp.connectionTestQuery = SELECT 1
|
||||
mysql.db.pool.hikaricp.minimumIdle = 0
|
||||
mysql.db.pool.hikaricp.maximumPoolSize = 10
|
||||
mysql.db.pool.hikaricp.connectionInitSql = SELECT 1
|
||||
mysql.db.pool.hikaricp.validationTimeout = 5000
|
||||
mysql.db.pool.hikaricp.leakDetectionThreshold = 60000
|
||||
|
||||
# ===============================
|
||||
# = REDIS
|
||||
# ===============================
|
||||
redis.cache.host = 127.0.0.1
|
||||
redis.cache.port = 6379
|
||||
redis.cache.uname =
|
||||
redis.cache.pword =
|
||||
redis.cache.bucket = BE_BUCKET
|
||||
redis.cache.duration = 86400
|
||||
|
||||
# ===============================
|
||||
# = SERVICE URL
|
||||
# ===============================
|
||||
## Identity Management System
|
||||
ims.service.url = http://127.0.0.1:8080/identity-management-system
|
||||
ims.service.timeout = 60000
|
||||
|
||||
## File Management System
|
||||
fms.service.url = http://127.0.0.1:8080/file-management-system
|
||||
fms.service.timeout = 60000
|
||||
|
||||
## Notification and Alert System
|
||||
nas.service.url = http://127.0.0.1:8080/notification-alert-system
|
||||
nas.service.timeout = 60000
|
||||
|
||||
## Workflow Process System
|
||||
wps.service.url = http://127.0.0.1:8080/workflow-process-system
|
||||
wps.service.timeout = 60000
|
||||
|
||||
## Report Gateway
|
||||
rpt.service.url = http://127.0.0.1:8080/mymedisys-report
|
||||
rpt.service.timeout = 60000
|
||||
|
||||
##MyFrims API
|
||||
myfrims.service.url=http://192.168.2.103:8080/myfrims-backend
|
||||
myfrims.service.timeout=60000
|
||||
system.type=myFrims
|
|
@ -0,0 +1,65 @@
|
|||
ims.service.client = mymedisys-fe
|
||||
ims.service.skey = myMEDISYS@2020
|
||||
ims.service.ekey = 5f50787d0aa5e668053d527c
|
||||
|
||||
app.portal.type = MYMEDISYS
|
||||
gov.portal.access.from = 00:00
|
||||
gov.portal.access.to = 24:00
|
||||
|
||||
# Server URI-Encoding
|
||||
server.tomcat.uri-encoding = utf-8
|
||||
server.tomcat.max-http-post-size: 10MB
|
||||
|
||||
# Application Config
|
||||
thymleaf.template.cacheable = false
|
||||
|
||||
## session.secure.cookie: DEV = false, PROD = true
|
||||
session.secure.cookie = true
|
||||
|
||||
is.using.https = false;
|
||||
|
||||
# ===============================
|
||||
# = REDIS
|
||||
# ===============================
|
||||
redis.cache.host = 192.168.2.12
|
||||
redis.cache.port = 6379
|
||||
redis.cache.uname =
|
||||
redis.cache.pword =
|
||||
redis.cache.bucket = FE_BUCKET
|
||||
redis.cache.duration = 86400
|
||||
|
||||
# ===============================
|
||||
# = ReCaptcha
|
||||
# ===============================
|
||||
recaptcha.sitekey = 6Le6PxoaAAAAAHDMsT5-lhC3kX-nTzTKHXvCVbhK
|
||||
|
||||
# ===============================
|
||||
# = Services
|
||||
# ===============================
|
||||
## Identity Management System
|
||||
ims.service.url = http://127.0.0.1:8080/identity-management-system
|
||||
ims.service.timeout = 60000
|
||||
|
||||
## File Management System
|
||||
fms.service.url = http://127.0.0.1:8080/file-management-system
|
||||
fms.service.timeout = 60000
|
||||
|
||||
## Notification and Alert System
|
||||
nas.service.url = http://127.0.0.1:8080/notification-alert-system
|
||||
nas.service.timeout = 60000
|
||||
|
||||
## Workflow Process System
|
||||
wps.service.url = http://127.0.0.1:8080/workflow-process-system
|
||||
wps.service.timeout = 60000
|
||||
|
||||
## Backend Service
|
||||
be.service.url=http://127.0.0.1:8080/mymedisys-backend
|
||||
be.service.timeout=60000
|
||||
|
||||
## Report Gateway
|
||||
rpt.service.url = http://127.0.0.1:8080/mymedisys-report
|
||||
rpt.service.timeout = 60000
|
||||
|
||||
## Security Gateway
|
||||
sgw.service.url = http://127.0.0.1:8080/mymedisys-sgw
|
||||
sgw.service.timeout = 60000
|
|
@ -0,0 +1,60 @@
|
|||
ims.service.client = mymedisys-rpt
|
||||
ims.service.skey = myMEDISYS@2020
|
||||
|
||||
# ===============================
|
||||
# = MySQL
|
||||
# ===============================
|
||||
mysql.db.driver = com.mysql.cj.jdbc.Driver
|
||||
mysql.db.url = jdbc:mysql://192.168.2.12:3306/mymedisys_stg?zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Kuala_Lumpur
|
||||
mysql.db.uname = mymedisys.qa
|
||||
mysql.db.pword = /NToPXxweodmV3QrBAW+oA==
|
||||
|
||||
# HikariCP
|
||||
mysql.db.pool.hikaricp.connectionTimeout = 30000
|
||||
mysql.db.pool.hikaricp.idleTimeout = 600000
|
||||
mysql.db.pool.hikaricp.maxLifetime = 1800000
|
||||
mysql.db.pool.hikaricp.connectionTestQuery = SELECT 1
|
||||
mysql.db.pool.hikaricp.minimumIdle = 0
|
||||
mysql.db.pool.hikaricp.maximumPoolSize = 10
|
||||
mysql.db.pool.hikaricp.connectionInitSql = SELECT 1
|
||||
mysql.db.pool.hikaricp.validationTimeout = 5000
|
||||
mysql.db.pool.hikaricp.leakDetectionThreshold = 60000
|
||||
|
||||
# ===============================
|
||||
# = MANDRILL
|
||||
# ===============================
|
||||
mail.from = MyMEDISYS Development <noreply@mymedisys.com.my>
|
||||
mail.host = mail.conceptway.com.my
|
||||
mail.protocol = smtp
|
||||
mail.port = 587
|
||||
mail.username = myfrims@conceptway.com.my
|
||||
mail.password = Frims@12345
|
||||
|
||||
# ===============================
|
||||
# = REDIS
|
||||
# ===============================
|
||||
redis.cache.host = 127.0.0.1
|
||||
redis.cache.port = 6379
|
||||
redis.cache.uname =
|
||||
redis.cache.pword =
|
||||
redis.cache.bucket = RPT_BUCKET
|
||||
redis.cache.duration = 86400
|
||||
|
||||
# ===============================
|
||||
# = SERVICE URL
|
||||
# ===============================
|
||||
# IMS
|
||||
ims.service.timeout = 300
|
||||
ims.service.url = http://127.0.0.1:8080/identity-management-system
|
||||
|
||||
# FMS
|
||||
fms.service.timeout = 300
|
||||
fms.service.url = http://127.0.0.1:8080/file-management-system
|
||||
|
||||
# NAS
|
||||
nas.service.timeout = 300
|
||||
nas.service.url = http://127.0.0.1:8080/notification-alert-system
|
||||
|
||||
# WPS
|
||||
wps.service.timeout = 300
|
||||
wps.service.url = http://127.0.0.1:8080/workflow-process-system
|
BIN
requirements_flows_diagrams/workflow - 1.png
Normal file
After Width: | Height: | Size: 43 KiB |
BIN
requirements_flows_diagrams/workflow - 2.png
Normal file
After Width: | Height: | Size: 49 KiB |
BIN
requirements_flows_diagrams/workflow - 3.png
Normal file
After Width: | Height: | Size: 35 KiB |
174
tomcatfiles/ROOT/RELEASE-NOTES.txt
Normal file
|
@ -0,0 +1,174 @@
|
|||
================================================================================
|
||||
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 9.0.76
|
||||
Release Notes
|
||||
|
||||
|
||||
=========
|
||||
CONTENTS:
|
||||
=========
|
||||
|
||||
* Dependency Changes
|
||||
* API Stability
|
||||
* Bundled APIs
|
||||
* Web application reloading and static fields in shared libraries
|
||||
* Security manager URLs
|
||||
* Symlinking static resources
|
||||
* Viewing the Tomcat Change Log
|
||||
* Cryptographic software notice
|
||||
* When all else fails
|
||||
|
||||
|
||||
===================
|
||||
Dependency Changes:
|
||||
===================
|
||||
Tomcat 9.0 is designed to run on Java 8 and later.
|
||||
|
||||
|
||||
==============
|
||||
API Stability:
|
||||
==============
|
||||
|
||||
The public interfaces for the following classes are fixed and will not be
|
||||
changed at all during the remaining lifetime of the 9.x series:
|
||||
- All classes in the javax namespace
|
||||
|
||||
The public interfaces for the following classes may be added to in order to
|
||||
resolve bugs and/or add new features. No existing interface method will be
|
||||
removed or changed although it may be deprecated.
|
||||
- org.apache.catalina.* (excluding sub-packages)
|
||||
|
||||
Note: As Tomcat 9 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.
|
||||
|
||||
|
||||
=============
|
||||
Bundled APIs:
|
||||
=============
|
||||
A standard installation of Tomcat 9.0 makes all of the following APIs available
|
||||
for use by web applications (by placing them in "lib"):
|
||||
* annotations-api.jar (Annotations package)
|
||||
* catalina.jar (Tomcat Catalina implementation)
|
||||
* catalina-ant.jar (Tomcat Catalina Ant tasks)
|
||||
* catalina-ha.jar (High availability package)
|
||||
* catalina-ssi.jar (Server-side Includes module)
|
||||
* catalina-storeconfig.jar (Generation of XML configuration from current state)
|
||||
* catalina-tribes.jar (Group communication)
|
||||
* ecj-4.20.jar (Eclipse JDT Java compiler)
|
||||
* el-api.jar (EL 3.0 API)
|
||||
* jasper.jar (Jasper 2 Compiler and Runtime)
|
||||
* jasper-el.jar (Jasper 2 EL implementation)
|
||||
* jsp-api.jar (JSP 2.3 API)
|
||||
* servlet-api.jar (Servlet 4.0 API)
|
||||
* 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 2)
|
||||
* tomcat-jdbc.jar (Tomcat's database connection pooling solution)
|
||||
* tomcat-jni.jar (Interface to the native component of the APR/native connector)
|
||||
* tomcat-util.jar (Various utilities)
|
||||
* tomcat-websocket.jar (WebSocket 1.1 implementation)
|
||||
* 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 appropriate
|
||||
feature for your JVM. For Java <= 8 use the endorsed standards override
|
||||
feature. The default configuration defines JARs located in "endorsed" as endorsed.
|
||||
For Java 9+ use the upgradeable modules feature.
|
||||
|
||||
|
||||
================================================================
|
||||
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).
|
||||
|
||||
|
||||
======================
|
||||
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 deactivate
|
||||
the check.
|
||||
|
||||
|
||||
==============================
|
||||
Viewing the Tomcat Change Log:
|
||||
==============================
|
||||
The full change log is available from https://tomcat.apache.org and is also
|
||||
included in the documentation web application.
|
||||
|
||||
|
||||
=============================
|
||||
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/
|
30
tomcatfiles/ROOT/WEB-INF/web.xml
Normal file
|
@ -0,0 +1,30 @@
|
|||
<?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.
|
||||
-->
|
||||
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
|
||||
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
|
||||
version="4.0"
|
||||
metadata-complete="true">
|
||||
|
||||
<display-name>Welcome to Tomcat</display-name>
|
||||
<description>
|
||||
Welcome to Tomcat
|
||||
</description>
|
||||
|
||||
</web-app>
|
295
tomcatfiles/ROOT/asf-logo-wide.svg
Normal file
|
@ -0,0 +1,295 @@
|
|||
<?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.
|
||||
-->
|
||||
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Apache_Logo_Horizontal" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
x="0px" y="0px" viewBox="0 0 9835 1713.9" enable-background="new 0 0 9835 1713.9" xml:space="preserve">
|
||||
<path fill="#6D6E71" d="M1069.6,296.4v92.2h-11.8v-92.2h-33.7V285h79.4v11.4H1069.6z"/>
|
||||
<path fill="#6D6E71" d="M1234.8,388.5V343h-62.4v45.6h-11.8V285h11.8v46.8h62.4V285h11.8v103.6H1234.8z"/>
|
||||
<path fill="#6D6E71" d="M1329.2,296.4v34h52.2v11.4h-52.2v35.5h60.4v11.3h-72.2V285h70.3v11.4H1329.2z"/>
|
||||
<path fill="#D22128" d="M933.7,1098.5l247.5-591.6h47.5l247.5,591.6h-62.5l-76.7-185h-265.8l-75.8,185H933.7z M1205.4,575.2
|
||||
l-121.7,292.5h240L1205.4,575.2z"/>
|
||||
<path fill="#D22128" d="M1540.1,1098.5V506.9h245c101.7,0,175,94.2,175,185.8c0,96.7-68.3,187.5-170,187.5h-192.5v218.3H1540.1z
|
||||
M1597.6,828.5h189.1c70,0,115-64.2,115-135.8c0-74.2-55-134.2-120-134.2h-184.1V828.5z"/>
|
||||
<path fill="#D22128" d="M1927.7,1098.5l247.5-591.6h47.5l247.5,591.6h-62.5l-76.7-185h-265.8l-75.8,185H1927.7z M2199.3,575.2
|
||||
l-121.7,292.5h240L2199.3,575.2z"/>
|
||||
<path fill="#D22128" d="M2750.1,503.6c105,0,181.6,53.3,218.3,129.2l-46.7,28.3c-37.5-78.3-110.8-105-175-105
|
||||
c-141.7,0-219.1,126.7-219.1,245.8c0,130.8,95.8,249.1,221.6,249.1c66.7,0,145-33.3,182.5-110l48.3,25
|
||||
c-38.3,88.3-143.3,137.5-234.1,137.5c-162.5,0-276.6-155-276.6-305C2469.3,656,2571.7,503.6,2750.1,503.6z"/>
|
||||
<path fill="#D22128" d="M3528,506.9v591.6h-58.3V821.9h-350.8v276.6h-57.5V506.9h57.5v263.3h350.8V506.9H3528z"/>
|
||||
<path fill="#D22128" d="M4059.1,1046.8v51.7h-397.5V506.9h390v51.7h-332.5v213.3h290V821h-290v225.8H4059.1z"/>
|
||||
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-4229.6655" y1="-4143.6401" x2="-3987.5886" y2="-3860.573" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 6189.0356 -1936.8361)">
|
||||
<stop offset="0" style="stop-color:#F69923"/>
|
||||
<stop offset="0.3123" style="stop-color:#F79A23"/>
|
||||
<stop offset="0.8383" style="stop-color:#E97826"/>
|
||||
</linearGradient>
|
||||
<path fill="url(#SVGID_1_)" d="M729.5,8.1C702.6,24,657.9,68.9,604.6,134l49,92.5c34.4-49.2,69.3-93.4,104.5-131.2
|
||||
c2.7-3,4.1-4.4,4.1-4.4c-1.4,1.5-2.7,3-4.1,4.4c-11.4,12.6-46,52.9-98.2,133.1c50.2-2.5,127.5-12.8,190.4-23.5
|
||||
c18.7-105-18.4-153-18.4-153S784.8-24.6,729.5,8.1z"/>
|
||||
<path fill="none" d="M646.5,535.5c0.4-0.1,0.7-0.1,1.1-0.2l-7.1,0.8c-0.4,0.2-0.8,0.4-1.2,0.6C641.7,536.3,644.1,535.9,646.5,535.5z
|
||||
"/>
|
||||
<path fill="none" d="M596.5,701.1c-4,0.9-8.1,1.6-12.3,2.2C588.4,702.7,592.5,702,596.5,701.1z"/>
|
||||
<path fill="none" d="M256.7,1072.7c0.5-1.4,1-2.8,1.6-4.1c10.8-28.5,21.5-56.1,32-83.1c11.9-30.2,23.6-59.5,35.2-87.9
|
||||
c12.2-29.9,24.3-58.8,36.1-86.8c12.5-29.3,24.7-57.5,36.8-84.7c9.8-22.1,19.5-43.5,29-64.2c3.2-6.9,6.3-13.7,9.5-20.5
|
||||
c6.2-13.4,12.4-26.6,18.5-39.4c5.6-11.9,11.2-23.5,16.8-34.9c1.8-3.8,3.7-7.6,5.5-11.3c0.3-0.6,0.6-1.2,0.9-1.8l-6,0.7l-4.8-9.4
|
||||
c-0.5,0.9-0.9,1.8-1.4,2.7c-8.6,17.1-17.1,34.3-25.6,51.7c-4.9,10-9.7,20.1-14.6,30.3c-13.4,28.1-26.5,56.5-39.5,85
|
||||
c-13.1,28.8-25.9,57.8-38.5,86.9c-12.4,28.5-24.5,57.1-36.3,85.5c-11.8,28.4-23.4,56.8-34.7,84.9c-11.8,29.4-23.3,58.5-34.4,87.3
|
||||
c-2.5,6.5-5,13-7.5,19.4c-8.9,23.2-17.6,46.2-26.1,68.8l7.5,14.9l6.7-0.7c0.2-0.7,0.5-1.4,0.7-2
|
||||
C235.2,1129.9,246,1100.9,256.7,1072.7z"/>
|
||||
<path fill="none" d="M581.2,703.8L581.2,703.8C581.2,703.8,581.2,703.8,581.2,703.8C581.2,703.8,581.2,703.8,581.2,703.8z"/>
|
||||
<path fill="#BE202E" d="M564.9,784.6c-6.3,1.1-12.7,2.2-19.3,3.4c0,0-0.1,0-0.1,0.1c3.3-0.5,6.6-1,9.9-1.6
|
||||
C558.6,785.9,561.8,785.3,564.9,784.6z"/>
|
||||
<path opacity="0.35" fill="#BE202E" d="M564.9,784.6c-6.3,1.1-12.7,2.2-19.3,3.4c0,0-0.1,0-0.1,0.1c3.3-0.5,6.6-1,9.9-1.6
|
||||
C558.6,785.9,561.8,785.3,564.9,784.6z"/>
|
||||
<path fill="#BE202E" d="M581.3,703.7C581.3,703.8,581.3,703.8,581.3,703.7c-0.1,0-0.1,0.1-0.1,0.1c1-0.1,2.1-0.3,3.1-0.5
|
||||
c4.2-0.6,8.3-1.3,12.3-2.2C591.6,702,586.5,702.9,581.3,703.7L581.3,703.7L581.3,703.7z"/>
|
||||
<path opacity="0.35" fill="#BE202E" d="M581.3,703.7C581.3,703.8,581.3,703.8,581.3,703.7c-0.1,0-0.1,0.1-0.1,0.1
|
||||
c1-0.1,2.1-0.3,3.1-0.5c4.2-0.6,8.3-1.3,12.3-2.2C591.6,702,586.5,702.9,581.3,703.7L581.3,703.7L581.3,703.7z"/>
|
||||
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-6021.2769" y1="-4174.8843" x2="-4294.1865" y2="-4174.8843" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 6189.0356 -1936.8361)">
|
||||
<stop offset="0.3233" style="stop-color:#9E2064"/>
|
||||
<stop offset="0.6302" style="stop-color:#C92037"/>
|
||||
<stop offset="0.7514" style="stop-color:#CD2335"/>
|
||||
<stop offset="1" style="stop-color:#E97826"/>
|
||||
</linearGradient>
|
||||
<path fill="url(#SVGID_2_)" d="M509.2,465.4c14.9-27.8,30-55,45.2-81.5c15.8-27.5,31.8-54.2,48-79.9c1-1.5,1.9-3.1,2.9-4.6
|
||||
c16-25.3,32.1-49.6,48.4-72.9l-49-92.5c-3.7,4.5-7.4,9.1-11.1,13.7c-14.1,17.6-28.8,36.5-43.8,56.6c-17,22.6-34.4,46.8-52.1,72.2
|
||||
c-16.3,23.4-32.9,48-49.5,73.4c-14.1,21.6-28.3,43.9-42.4,66.7c-0.5,0.8-1,1.7-1.6,2.6l63.7,125.9
|
||||
C481.4,518.1,495.2,491.5,509.2,465.4z"/>
|
||||
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="-5812.7939" y1="-4001.6594" x2="-4783.6157" y2="-4001.6594" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 6189.0356 -1936.8361)">
|
||||
<stop offset="0" style="stop-color:#282662"/>
|
||||
<stop offset="9.548390e-02" style="stop-color:#662E8D"/>
|
||||
<stop offset="0.7882" style="stop-color:#9F2064"/>
|
||||
<stop offset="0.9487" style="stop-color:#CD2032"/>
|
||||
</linearGradient>
|
||||
<path fill="url(#SVGID_3_)" d="M218.8,1174.8c-8.4,23.2-16.9,46.8-25.4,70.9c-0.1,0.4-0.2,0.7-0.4,1.1c-1.2,3.4-2.4,6.8-3.6,10.2
|
||||
c-5.7,16.3-10.7,30.9-22.1,64.2c18.8,8.6,33.9,31.1,48.1,56.7c-1.5-26.5-12.5-51.4-33.3-70.7c92.6,4.2,172.4-19.2,213.6-86.9
|
||||
c3.7-6,7.1-12.4,10.1-19.1c-18.8,23.8-42,33.8-85.7,31.4c-0.1,0-0.2,0.1-0.3,0.1c0.1,0,0.2-0.1,0.3-0.1
|
||||
c64.4-28.8,96.7-56.5,125.3-102.3c6.8-10.9,13.3-22.7,20.1-35.9c-56.3,57.8-121.6,74.3-190.3,61.8l-51.6,5.7
|
||||
C222,1166.1,220.4,1170.4,218.8,1174.8z"/>
|
||||
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="-5924.2744" y1="-4190.9775" x2="-4197.1841" y2="-4190.9775" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 6189.0356 -1936.8361)">
|
||||
<stop offset="0.3233" style="stop-color:#9E2064"/>
|
||||
<stop offset="0.6302" style="stop-color:#C92037"/>
|
||||
<stop offset="0.7514" style="stop-color:#CD2335"/>
|
||||
<stop offset="1" style="stop-color:#E97826"/>
|
||||
</linearGradient>
|
||||
<path fill="url(#SVGID_4_)" d="M242.9,1059.3c11.1-28.8,22.6-57.9,34.4-87.3c11.3-28.1,22.9-56.5,34.7-84.9
|
||||
c11.8-28.5,24-57,36.3-85.5c12.6-29,25.4-58,38.5-86.9c12.9-28.5,26.1-56.9,39.5-85c4.8-10.1,9.7-20.2,14.6-30.3
|
||||
c8.4-17.4,17-34.6,25.6-51.7c0.5-0.9,0.9-1.8,1.4-2.7l-63.7-125.9c-1,1.7-2.1,3.4-3.1,5.1c-14.9,24.3-29.6,49.1-44.1,74.4
|
||||
c-14.7,25.6-29.1,51.7-43.1,78.1c-11.9,22.3-23.5,44.8-34.7,67.5c-2.3,4.6-4.5,9.2-6.7,13.7c-13.9,28.6-26.4,56.2-37.8,82.8
|
||||
c-12.9,30.1-24.2,58.8-34.1,86.1c-6.5,17.9-12.5,35.2-17.9,51.9c-4.5,14.2-8.7,28.4-12.7,42.6c-9.5,33.4-17.7,66.7-24.5,99.8
|
||||
l64,126.4c8.5-22.6,17.1-45.6,26.1-68.8C237.9,1072.3,240.4,1065.8,242.9,1059.3z"/>
|
||||
<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="-5798.3159" y1="-4167.6108" x2="-4890.6782" y2="-4167.6108" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 6189.0356 -1936.8361)">
|
||||
<stop offset="0" style="stop-color:#282662"/>
|
||||
<stop offset="9.548390e-02" style="stop-color:#662E8D"/>
|
||||
<stop offset="0.7882" style="stop-color:#9F2064"/>
|
||||
<stop offset="0.9487" style="stop-color:#CD2032"/>
|
||||
</linearGradient>
|
||||
<path fill="url(#SVGID_5_)" d="M144.4,1025.6c-8,40.5-13.8,80.8-16.6,120.8c-0.1,1.4-0.2,2.8-0.3,4.2c-20-32-73.5-63.3-73.4-63
|
||||
c38.3,55.5,67.4,110.7,71.7,164.8c-20.5,4.2-48.6-1.9-81.1-13.8c33.9,31.1,59.3,39.7,69.2,42c-31.1,1.9-63.5,23.3-96.1,47.9
|
||||
c47.7-19.5,86.3-27.2,113.9-20.9c-43.8,124-87.7,260.9-131.6,406.2c13.5-4,21.5-13,26-25.3c7.8-26.3,59.8-199,141.2-425.9
|
||||
c2.3-6.5,4.6-12.9,7-19.5c0.7-1.8,1.3-3.6,2-5.4c8.6-23.8,17.5-48.1,26.7-72.9c2.1-5.6,4.2-11.3,6.3-17c0-0.1,0.1-0.2,0.1-0.3
|
||||
l-64-126.4C145,1022.6,144.7,1024.1,144.4,1025.6z"/>
|
||||
<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="-5924.2744" y1="-4012.23" x2="-4197.1841" y2="-4012.23" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 6189.0356 -1936.8361)">
|
||||
<stop offset="0.3233" style="stop-color:#9E2064"/>
|
||||
<stop offset="0.6302" style="stop-color:#C92037"/>
|
||||
<stop offset="0.7514" style="stop-color:#CD2335"/>
|
||||
<stop offset="1" style="stop-color:#E97826"/>
|
||||
</linearGradient>
|
||||
<path fill="url(#SVGID_6_)" d="M477.7,555.7c-1.8,3.7-3.7,7.5-5.5,11.3c-5.5,11.4-11.1,23-16.8,34.9c-6.1,12.8-12.3,26-18.5,39.4
|
||||
c-3.1,6.8-6.3,13.6-9.5,20.5c-9.5,20.7-19.2,42.1-29,64.2c-12.1,27.2-24.3,55.4-36.8,84.7c-11.9,27.9-23.9,56.8-36.1,86.8
|
||||
c-11.6,28.4-23.3,57.7-35.2,87.9c-10.6,27-21.3,54.6-32,83.1c-0.5,1.4-1,2.8-1.6,4.1c-10.7,28.3-21.5,57.3-32.4,87
|
||||
c-0.2,0.7-0.5,1.4-0.7,2l51.6-5.7c-1-0.2-2-0.3-3.1-0.5c61.6-7.7,143.6-53.7,196.5-110.6c24.4-26.2,46.5-57.1,67-93.3
|
||||
c15.2-26.9,29.6-56.8,43.2-89.8c11.9-28.9,23.3-60.1,34.4-94c-14.2,7.5-30.4,12.9-48.3,16.7c-3.1,0.7-6.3,1.3-9.6,1.9
|
||||
c-3.2,0.6-6.5,1.1-9.9,1.6l0,0l0,0c0,0,0.1,0,0.1-0.1c57.5-22.1,93.7-64.8,120.1-117.1c-15.1,10.3-39.7,23.8-69.2,30.3
|
||||
c-4,0.9-8.1,1.6-12.3,2.2c-1,0.1-2.1,0.3-3.1,0.5l0,0l0,0c0,0,0.1,0,0.1,0c0,0,0,0,0.1,0l0,0c19.9-8.3,36.8-17.7,51.4-28.7
|
||||
c3.1-2.4,6.2-4.8,9.1-7.3c4.5-3.8,8.7-7.9,12.7-12.2c2.6-2.7,5.1-5.5,7.5-8.4c5.7-6.8,11.1-14.2,16.1-22.1c1.5-2.4,3-4.9,4.5-7.5
|
||||
c1.9-3.7,3.7-7.3,5.5-10.8c8-16.1,14.5-30.5,19.6-43.2c2.6-6.3,4.8-12.2,6.7-17.6c0.8-2.2,1.5-4.3,2.2-6.3c2-6.1,3.7-11.5,5-16.2
|
||||
c2-7.1,3.1-12.7,3.8-16.8l0,0l0,0c-1.9,1.5-4.2,3.1-6.7,4.6c-17.3,10.4-47.1,19.8-71.1,24.2l47.3-5.2l-47.3,5.2
|
||||
c-0.4,0.1-0.7,0.1-1.1,0.2c-2.4,0.4-4.8,0.8-7.2,1.2c0.4-0.2,0.8-0.4,1.2-0.6l-161.9,17.7C478.3,554.5,478,555.1,477.7,555.7z"/>
|
||||
<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="-6031.4116" y1="-4021.106" x2="-4304.3213" y2="-4021.106" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 6189.0356 -1936.8361)">
|
||||
<stop offset="0.3233" style="stop-color:#9E2064"/>
|
||||
<stop offset="0.6302" style="stop-color:#C92037"/>
|
||||
<stop offset="0.7514" style="stop-color:#CD2335"/>
|
||||
<stop offset="1" style="stop-color:#E97826"/>
|
||||
</linearGradient>
|
||||
<path fill="url(#SVGID_7_)" d="M660,228.4c-14.4,22.1-30.1,47.2-47.1,75.6c-0.9,1.5-1.8,3-2.7,4.5c-14.6,24.6-30.1,51.6-46.4,81.2
|
||||
c-14.1,25.5-28.8,52.9-44,82.4c-13.3,25.7-27,52.9-41.1,81.7l161.9-17.7c47.2-21.7,68.3-41.3,88.7-69.7c5.4-7.8,10.9-16,16.3-24.5
|
||||
c16.6-26,32.9-54.6,47.5-83c14.1-27.4,26.5-54.7,36-79.2c6.1-15.6,10.9-30.1,14.3-42.8c2.9-11.2,5.3-21.9,7.1-32.1
|
||||
C787.5,215.6,710.2,225.9,660,228.4z"/>
|
||||
<path fill="#BE202E" d="M555.4,786.4c-3.2,0.6-6.5,1.1-9.9,1.6l0,0C548.8,787.5,552.1,787,555.4,786.4z"/>
|
||||
<path opacity="0.35" fill="#BE202E" d="M555.4,786.4c-3.2,0.6-6.5,1.1-9.9,1.6l0,0C548.8,787.5,552.1,787,555.4,786.4z"/>
|
||||
<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="-5924.2744" y1="-3959.0669" x2="-4197.1841" y2="-3959.0669" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 6189.0356 -1936.8361)">
|
||||
<stop offset="0.3233" style="stop-color:#9E2064"/>
|
||||
<stop offset="0.6302" style="stop-color:#C92037"/>
|
||||
<stop offset="0.7514" style="stop-color:#CD2335"/>
|
||||
<stop offset="1" style="stop-color:#E97826"/>
|
||||
</linearGradient>
|
||||
<path fill="url(#SVGID_8_)" d="M555.4,786.4c-3.2,0.6-6.5,1.1-9.9,1.6l0,0C548.8,787.5,552.1,787,555.4,786.4z"/>
|
||||
<path fill="#BE202E" d="M581.2,703.8c1-0.1,2.1-0.3,3.1-0.5C583.2,703.5,582.2,703.7,581.2,703.8L581.2,703.8z"/>
|
||||
<path opacity="0.35" fill="#BE202E" d="M581.2,703.8c1-0.1,2.1-0.3,3.1-0.5C583.2,703.5,582.2,703.7,581.2,703.8L581.2,703.8z"/>
|
||||
<linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="-5924.2744" y1="-3965.1499" x2="-4197.1841" y2="-3965.1499" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 6189.0356 -1936.8361)">
|
||||
<stop offset="0.3233" style="stop-color:#9E2064"/>
|
||||
<stop offset="0.6302" style="stop-color:#C92037"/>
|
||||
<stop offset="0.7514" style="stop-color:#CD2335"/>
|
||||
<stop offset="1" style="stop-color:#E97826"/>
|
||||
</linearGradient>
|
||||
<path fill="url(#SVGID_9_)" d="M581.2,703.8c1-0.1,2.1-0.3,3.1-0.5C583.2,703.5,582.2,703.7,581.2,703.8L581.2,703.8z"/>
|
||||
<path fill="#BE202E" d="M581.3,703.8C581.3,703.8,581.3,703.8,581.3,703.8L581.3,703.8L581.3,703.8L581.3,703.8
|
||||
C581.3,703.8,581.3,703.8,581.3,703.8z"/>
|
||||
<path opacity="0.35" fill="#BE202E" d="M581.3,703.8C581.3,703.8,581.3,703.8,581.3,703.8L581.3,703.8L581.3,703.8L581.3,703.8
|
||||
C581.3,703.8,581.3,703.8,581.3,703.8z"/>
|
||||
<linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="-4954.02" y1="-3966.3701" x2="-4572.2764" y2="-3966.3701" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 6189.0356 -1936.8361)">
|
||||
<stop offset="0.3233" style="stop-color:#9E2064"/>
|
||||
<stop offset="0.6302" style="stop-color:#C92037"/>
|
||||
<stop offset="0.7514" style="stop-color:#CD2335"/>
|
||||
<stop offset="1" style="stop-color:#E97826"/>
|
||||
</linearGradient>
|
||||
<path fill="url(#SVGID_10_)" d="M581.3,703.8C581.3,703.8,581.3,703.8,581.3,703.8L581.3,703.8L581.3,703.8L581.3,703.8
|
||||
C581.3,703.8,581.3,703.8,581.3,703.8z"/>
|
||||
<path fill="#6D6E71" d="M4552.4,508.2c12,3.6,22.6,8.4,31.5,14.5l-10.5,23c-9.2-6.1-19-10.6-29.4-13.6c-10.4-3-20.3-4.5-29.7-4.5
|
||||
c-13.8,0-24.9,2.5-33.2,7.5c-8.3,5-12.4,12-12.4,21.1c0,7.8,2.3,14.2,6.9,19.3c4.6,5.1,10.3,9,17.3,11.9c6.9,2.8,16.4,6.1,28.5,9.8
|
||||
c14.6,4.7,26.4,9.1,35.3,13.1c8.9,4.1,16.5,10.1,22.9,18.1c6.3,8,9.5,18.5,9.5,31.5c0,11.9-3.2,22.2-9.6,31.1
|
||||
c-6.4,8.9-15.5,15.7-27.3,20.6c-11.8,4.9-25.3,7.3-40.6,7.3c-15.3,0-30.2-3-44.7-8.9c-14.4-5.9-26.8-13.9-37.2-23.8l10.9-22
|
||||
c9.8,9.6,21,17,33.8,22.3c12.8,5.3,25.3,7.9,37.4,7.9c15.5,0,27.8-3,36.8-9c9-6,13.4-14.1,13.4-24.3c0-8-2.3-14.5-7-19.7
|
||||
c-4.7-5.2-10.5-9.2-17.4-12.1c-6.9-2.9-16.4-6.1-28.5-9.7c-14.4-4.3-26.2-8.4-35.2-12.4c-9-4-16.6-9.9-22.9-17.8
|
||||
c-6.2-7.9-9.3-18.2-9.3-31.1c0-11.1,3.1-20.8,9.2-29.1c6.1-8.4,14.8-14.8,26.1-19.4c11.3-4.6,24.2-6.9,38.9-6.9
|
||||
C4528.2,502.8,4540.3,504.6,4552.4,508.2z"/>
|
||||
<path fill="#6D6E71" d="M4870.3,517.6c17.1,9.6,30.7,22.6,40.7,39.1c10,16.4,15,34.5,15,54.2c0,19.8-5,38-15,54.5
|
||||
c-10,16.5-23.6,29.6-40.7,39.3c-17.1,9.7-35.9,14.5-56.2,14.5c-20.6,0-39.5-4.8-56.6-14.5c-17.1-9.7-30.7-22.8-40.7-39.3
|
||||
c-10-16.5-15-34.7-15-54.5c0-19.8,5-38,15-54.5c10-16.5,23.6-29.5,40.7-39c17.1-9.5,36-14.3,56.6-14.3
|
||||
C4834.4,503.1,4853.2,507.9,4870.3,517.6z M4770.5,537.8c-13.4,7.6-24,17.8-32,30.6c-8,12.9-12,27-12,42.4c0,15.5,4,29.8,12,42.7
|
||||
c8,13,18.6,23.2,32,30.7c13.3,7.5,27.9,11.3,43.6,11.3c15.7,0,30.2-3.8,43.4-11.3c13.2-7.5,23.7-17.8,31.6-30.7
|
||||
c7.9-12.9,11.8-27.2,11.8-42.7s-3.9-29.7-11.8-42.5c-7.9-12.8-18.4-23-31.7-30.6c-13.3-7.6-27.7-11.4-43.3-11.4
|
||||
C4798.4,526.4,4783.8,530.2,4770.5,537.8z"/>
|
||||
<path fill="#6D6E71" d="M5080.3,527.3v75.3h100.1v23.6h-100.1V718h-24.5V503.7h136.1v23.6H5080.3z"/>
|
||||
<path fill="#6D6E71" d="M5390.7,527.3V718h-24.5V527.3h-69.6v-23.6h164.2v23.6H5390.7z"/>
|
||||
<path fill="#6D6E71" d="M5777.5,718l-57.8-180.5L5661.1,718h-25l-71.7-214.3h26.3l58.9,185.9l58.1-185.6l24.5-0.3l58.7,185.9
|
||||
l58.1-185.9h25.4L5802.6,718H5777.5z"/>
|
||||
<path fill="#6D6E71" d="M5996.7,663.9l-23.9,54.1h-26l96.1-214.3h25.4l95.8,214.3h-26.6l-23.9-54.1H5996.7z M6054.9,531.7
|
||||
l-47.7,108.6h96.1L6054.9,531.7z"/>
|
||||
<path fill="#6D6E71" d="M6377,649.7c-6.1,0.4-10.9,0.6-14.3,0.6h-56.9V718h-24.5V503.7h81.4c26.7,0,47.4,6.3,62.2,18.8
|
||||
c14.8,12.6,22.2,30.3,22.2,53.2c0,17.5-4.1,32.2-12.4,44c-8.3,11.8-20.1,20.3-35.6,25.5l50.1,72.8h-27.8L6377,649.7z M6407.7,614
|
||||
c10.5-8.6,15.8-21.1,15.8-37.7c0-16.1-5.3-28.3-15.8-36.6c-10.5-8.3-25.5-12.4-45.1-12.4h-56.9v99.5h56.9
|
||||
C6382.2,626.9,6397.2,622.6,6407.7,614z"/>
|
||||
<path fill="#6D6E71" d="M6608.2,527.3v70.4h108v23.6h-108v73.4h124.9V718h-149.4V503.7H6729v23.6H6608.2z"/>
|
||||
<path fill="#6D6E71" d="M7074.8,527.3v75.3h100.1v23.6h-100.1V718h-24.5V503.7h136.1v23.6H7074.8z"/>
|
||||
<path fill="#6D6E71" d="M7457.7,517.6c17.1,9.6,30.7,22.6,40.7,39.1c10,16.4,15,34.5,15,54.2c0,19.8-5,38-15,54.5
|
||||
c-10,16.5-23.6,29.6-40.7,39.3c-17.1,9.7-35.9,14.5-56.2,14.5c-20.6,0-39.5-4.8-56.6-14.5c-17.1-9.7-30.7-22.8-40.7-39.3
|
||||
c-10-16.5-15-34.7-15-54.5c0-19.8,5-38,15-54.5c10-16.5,23.6-29.5,40.7-39c17.1-9.5,36-14.3,56.6-14.3
|
||||
C7421.8,503.1,7440.5,507.9,7457.7,517.6z M7357.9,537.8c-13.4,7.6-24,17.8-32,30.6c-8,12.9-12,27-12,42.4c0,15.5,4,29.8,12,42.7
|
||||
c8,13,18.6,23.2,32,30.7c13.3,7.5,27.9,11.3,43.6,11.3c15.7,0,30.2-3.8,43.4-11.3c13.2-7.5,23.7-17.8,31.6-30.7
|
||||
c7.9-12.9,11.8-27.2,11.8-42.7s-3.9-29.7-11.8-42.5c-7.9-12.8-18.4-23-31.7-30.6c-13.3-7.6-27.7-11.4-43.3-11.4
|
||||
C7385.7,526.4,7371.2,530.2,7357.9,537.8z"/>
|
||||
<path fill="#6D6E71" d="M7794.8,695.5c-15.9,15.8-37.9,23.7-65.9,23.7c-28.2,0-50.3-7.9-66.3-23.7c-16-15.8-24-37.7-24-65.7V503.7
|
||||
h24.5v126.1c0,20.6,5.9,36.7,17.6,48.3c11.8,11.6,27.8,17.4,48.1,17.4c20.4,0,36.4-5.7,48-17.3c11.6-11.5,17.3-27.7,17.3-48.5V503.7
|
||||
h24.5v126.1C7818.7,657.8,7810.7,679.7,7794.8,695.5z"/>
|
||||
<path fill="#6D6E71" d="M8115.1,718l-128.5-172v172h-24.5V503.7h25.4L8116,676V503.7h24.2V718H8115.1z"/>
|
||||
<path fill="#6D6E71" d="M8429.3,517.9c16.7,9.4,29.9,22.3,39.6,38.6c9.7,16.3,14.6,34.4,14.6,54.5s-4.9,38.2-14.6,54.5
|
||||
c-9.7,16.3-23,29.2-40,38.6c-16.9,9.4-35.8,14-56.5,14h-85.8V503.7h86.7C8394,503.7,8412.6,508.4,8429.3,517.9z M8311.2,694.7h62.5
|
||||
c15.7,0,30.1-3.6,43-10.8c12.9-7.2,23.2-17.2,30.7-30c7.5-12.7,11.3-27,11.3-42.7c0-15.7-3.8-30-11.5-42.7
|
||||
c-7.7-12.7-18-22.7-31.1-30.1c-13.1-7.4-27.5-11.1-43.3-11.1h-61.6V694.7z"/>
|
||||
<path fill="#6D6E71" d="M8622.8,663.9l-23.9,54.1h-26l96.1-214.3h25.4l95.8,214.3h-26.6l-23.9-54.1H8622.8z M8681,531.7l-47.7,108.6
|
||||
h96.1L8681,531.7z"/>
|
||||
<path fill="#6D6E71" d="M8950.8,527.3V718h-24.5V527.3h-69.6v-23.6h164.2v23.6H8950.8z"/>
|
||||
<path fill="#6D6E71" d="M9138.9,718V503.7h24.5V718H9138.9z"/>
|
||||
<path fill="#6D6E71" d="M9462.2,517.6c17.1,9.6,30.7,22.6,40.7,39.1c10,16.4,15,34.5,15,54.2c0,19.8-5,38-15,54.5
|
||||
c-10,16.5-23.6,29.6-40.7,39.3c-17.1,9.7-35.9,14.5-56.2,14.5c-20.6,0-39.5-4.8-56.6-14.5c-17.1-9.7-30.7-22.8-40.7-39.3
|
||||
c-10-16.5-15-34.7-15-54.5c0-19.8,5-38,15-54.5c10-16.5,23.6-29.5,40.7-39c17.1-9.5,36-14.3,56.6-14.3
|
||||
C9426.4,503.1,9445.1,507.9,9462.2,517.6z M9362.4,537.8c-13.4,7.6-24,17.8-32,30.6c-8,12.9-12,27-12,42.4c0,15.5,4,29.8,12,42.7
|
||||
c8,13,18.6,23.2,32,30.7c13.3,7.5,27.9,11.3,43.6,11.3c15.7,0,30.2-3.8,43.4-11.3c13.2-7.5,23.7-17.8,31.6-30.7
|
||||
c7.9-12.9,11.8-27.2,11.8-42.7s-3.9-29.7-11.8-42.5c-7.9-12.8-18.4-23-31.7-30.6c-13.3-7.6-27.7-11.4-43.3-11.4
|
||||
C9390.3,526.4,9375.8,530.2,9362.4,537.8z"/>
|
||||
<path fill="#6D6E71" d="M9800.8,718l-128.5-172v172h-24.5V503.7h25.4L9801.7,676V503.7h24.2V718H9800.8z"/>
|
||||
<path fill="#6D6E71" d="M4204.9,500.9c9,9,13.5,19.9,13.5,32.6c0,12.7-4.5,23.6-13.5,32.7c-9,9.1-20,13.7-32.8,13.7
|
||||
c-12.9,0-23.8-4.5-32.7-13.5c-8.9-9-13.4-19.9-13.4-32.6c0-12.7,4.5-23.6,13.5-32.7c9-9.1,19.9-13.7,32.7-13.7
|
||||
C4185,487.4,4195.9,491.9,4204.9,500.9z M4201,562.4c7.9-8,11.8-17.6,11.8-28.8c0-11.2-3.9-20.7-11.7-28.6
|
||||
c-7.8-7.9-17.4-11.9-28.7-11.9c-11.3,0-20.9,4-28.8,11.9c-7.8,8-11.8,17.6-11.8,28.8c0,11.2,3.9,20.8,11.6,28.7
|
||||
c7.8,7.9,17.3,11.9,28.6,11.9S4193.1,570.4,4201,562.4z M4194.5,524.7c0,8.3-3.6,13.5-10.9,15.6l13.3,18h-10.7l-12-16.7h-11v16.7
|
||||
h-8.7v-50h18.8c7.6,0,13,1.3,16.3,3.9C4192.9,514.8,4194.5,519,4194.5,524.7z M4183.4,531.7c1.7-1.4,2.6-3.8,2.6-7.1
|
||||
c0-3.3-0.9-5.6-2.7-6.8c-1.8-1.3-4.9-1.9-9.5-1.9h-10.6v18h10.4C4178.4,533.9,4181.6,533.2,4183.4,531.7z"/>
|
||||
<path fill="#6D6E71" d="M4540.6,918.2c21.1,0,37.7,6.1,49.6,18.4c11.9,12.3,17.9,29.2,17.9,50.8V1097h-26.3V994.4
|
||||
c0-15.7-4.4-28-13.3-36.8s-21.2-13.2-36.9-13.2c-18.7,0.2-33.3,6.3-44,18.2c-10.7,11.9-16,27.5-16,46.9v87.4h-26.3V846.6h26.3V959
|
||||
C4483.1,932.2,4506.2,918.6,4540.6,918.2z"/>
|
||||
<path fill="#6D6E71" d="M4823.7,1063.6l7.4,21.3c-12.8,8.8-26.2,13.3-40.2,13.5c-13.7,0-24.7-4.2-32.9-12.7
|
||||
c-8.2-8.4-12.3-21.1-12.3-38V946.2h-25.6v-21.3h25.6V878h26v46.9l56.3-0.3v21.6h-56.3v96.8c0,19.8,7.9,29.7,23.6,29.7
|
||||
C4804.6,1072.7,4814,1069.6,4823.7,1063.6z"/>
|
||||
<path fill="#6D6E71" d="M5027.8,1063.6l7.4,21.3c-12.8,8.8-26.2,13.3-40.2,13.5c-13.7,0-24.7-4.2-32.9-12.7
|
||||
c-8.2-8.4-12.3-21.1-12.3-38V946.2h-25.6v-21.3h25.6V878h26v46.9l56.3-0.3v21.6h-56.3v96.8c0,19.8,7.9,29.7,23.6,29.7
|
||||
C5008.7,1072.7,5018.1,1069.6,5027.8,1063.6z"/>
|
||||
<path fill="#6D6E71" d="M5244.1,918.2c25.2,0,45.7,8.4,61.6,25.3c15.9,16.9,23.8,38.6,23.8,65.1c0,26.3-7.8,47.8-23.5,64.5
|
||||
c-15.6,16.6-36,25-61.2,25c-32.2,0-55.2-13-69.2-39.1v103.6h-26.3V919.2h26.3v38.4C5189.5,931.3,5212.4,918.2,5244.1,918.2z
|
||||
M5239.4,1074c18.4,0,33.6-6.2,45.5-18.6c11.9-12.3,17.9-28.2,17.9-47.6c0-19.1-6-34.9-17.9-47.4c-11.9-12.5-27.1-18.7-45.5-18.7
|
||||
c-18.7,0-34,6.2-45.9,18.6c-11.9,12.4-17.9,28.2-17.9,47.6c0,19.3,6,35.2,17.9,47.6C5205.4,1067.8,5220.7,1074,5239.4,1074z"/>
|
||||
<path fill="#6D6E71" d="M5449.9,964.4c4.5,0,8.3,1.7,11.5,5.1c3.2,3.4,4.7,7.5,4.7,12.5s-1.6,9.1-4.7,12.5c-3.2,3.4-7,5.1-11.5,5.1
|
||||
c-4.7,0-8.7-1.7-11.8-5.1c-3.2-3.4-4.7-7.5-4.7-12.5s1.6-9.1,4.7-12.5C5441.2,966.1,5445.2,964.4,5449.9,964.4z M5449.9,1064.6
|
||||
c4.5,0,8.3,1.7,11.5,5c3.2,3.4,4.7,7.5,4.7,12.5c0,4.9-1.6,9.1-4.7,12.5c-3.2,3.4-7,5.1-11.5,5.1c-4.7,0-8.7-1.7-11.8-5.1
|
||||
c-3.2-3.4-4.7-7.5-4.7-12.5c0-4.9,1.6-9.1,4.7-12.5C5441.2,1066.3,5445.2,1064.6,5449.9,1064.6z"/>
|
||||
<path fill="#6D6E71" d="M5574.1,1138.1h-22.9l105.3-317.8h23.3L5574.1,1138.1z"/>
|
||||
<path fill="#6D6E71" d="M5753.6,1138.1h-22.9l105.3-317.8h23.3L5753.6,1138.1z"/>
|
||||
<path fill="#6D6E71" d="M6140.5,1097h-27.3l-52.3-144.4l-52,144.4h-27.3l-66.5-177.8h27.7l52.6,150.5l51.6-150.5h27.7l52.3,150.5
|
||||
l52-150.5h27.3L6140.5,1097z"/>
|
||||
<path fill="#6D6E71" d="M6504.6,1097h-27.3L6425,952.6l-52,144.4h-27.3l-66.5-177.8h27.7l52.6,150.5l51.6-150.5h27.7l52.3,150.5
|
||||
l52-150.5h27.3L6504.6,1097z"/>
|
||||
<path fill="#6D6E71" d="M6868.6,1097h-27.3L6789,952.6l-52,144.4h-27.3l-66.5-177.8h27.7l52.6,150.5l51.6-150.5h27.7l52.3,150.5
|
||||
l52-150.5h27.3L6868.6,1097z"/>
|
||||
<path fill="#6D6E71" d="M7034.6,1064.6c4.5,0,8.3,1.7,11.5,5c3.2,3.4,4.7,7.5,4.7,12.5c0,4.9-1.6,9.1-4.7,12.5
|
||||
c-3.2,3.4-7,5.1-11.5,5.1c-4.7,0-8.7-1.7-11.8-5.1c-3.2-3.4-4.7-7.5-4.7-12.5c0-4.9,1.6-9.1,4.7-12.5
|
||||
C7026,1066.3,7029.9,1064.6,7034.6,1064.6z"/>
|
||||
<path fill="#6D6E71" d="M7283,1097v-27.3c-14.2,19.1-35.9,28.7-65.1,28.7c-18,0-32.6-5.1-43.7-15.4c-11.1-10.2-16.7-23.2-16.7-39
|
||||
c0-15.5,5.8-27.8,17.5-37c11.7-9.1,28-13.8,48.9-14h58.4v-10.5c0-13.3-4.1-23.5-12.1-30.7c-8.1-7.2-19.9-10.8-35.4-10.8
|
||||
c-18,0-36.8,6.7-56.4,20.2l-11.1-19.2c12.6-8.3,24.2-14.4,34.9-18.2s23.2-5.7,37.6-5.7c21.8,0,38.6,5.4,50.4,16.2
|
||||
c11.8,10.8,17.8,25.9,18.1,45.2l0.3,117.4H7283z M7222.9,1075.4c15.1,0,27.9-3.5,38.6-10.6c10.7-7.1,17.7-16.8,21.1-29.2v-21.3
|
||||
h-55.3c-30.1,0-45.2,9.6-45.2,28.7c0,9.9,3.7,17.8,11.1,23.6C7200.6,1072.5,7210.5,1075.4,7222.9,1075.4z"/>
|
||||
<path fill="#6D6E71" d="M7536.3,918.2c25.2,0,45.7,8.4,61.6,25.3c15.9,16.9,23.8,38.6,23.8,65.1c0,26.3-7.8,47.8-23.5,64.5
|
||||
c-15.6,16.6-36,25-61.2,25c-32.2,0-55.2-13-69.2-39.1v103.6h-26.3V919.2h26.3v38.4C7481.8,931.3,7504.6,918.2,7536.3,918.2z
|
||||
M7531.6,1074c18.4,0,33.6-6.2,45.5-18.6c11.9-12.3,17.9-28.2,17.9-47.6c0-19.1-6-34.9-17.9-47.4c-11.9-12.5-27.1-18.7-45.5-18.7
|
||||
c-18.7,0-34,6.2-45.9,18.6c-11.9,12.4-17.9,28.2-17.9,47.6c0,19.3,6,35.2,17.9,47.6C7497.6,1067.8,7512.9,1074,7531.6,1074z"/>
|
||||
<path fill="#6D6E71" d="M7850.8,1097v-27.3c-14.2,19.1-35.9,28.7-65.1,28.7c-18,0-32.6-5.1-43.7-15.4c-11.1-10.2-16.7-23.2-16.7-39
|
||||
c0-15.5,5.8-27.8,17.5-37c11.7-9.1,28-13.8,48.9-14h58.4v-10.5c0-13.3-4.1-23.5-12.1-30.7c-8.1-7.2-19.9-10.8-35.4-10.8
|
||||
c-18,0-36.8,6.7-56.4,20.2l-11.1-19.2c12.6-8.3,24.2-14.4,34.9-18.2c10.7-3.8,23.2-5.7,37.6-5.7c21.8,0,38.6,5.4,50.4,16.2
|
||||
c11.8,10.8,17.8,25.9,18.1,45.2l0.3,117.4H7850.8z M7790.7,1075.4c15.1,0,27.9-3.5,38.6-10.6c10.7-7.1,17.7-16.8,21.1-29.2v-21.3
|
||||
h-55.3c-30.2,0-45.2,9.6-45.2,28.7c0,9.9,3.7,17.8,11.1,23.6C7768.5,1072.5,7778.4,1075.4,7790.7,1075.4z"/>
|
||||
<path fill="#6D6E71" d="M8077.8,918.5c28.6-0.2,51.4,8.5,68.5,26.3l-14.5,18.6c-14.4-13.7-32.1-20.6-53-20.6
|
||||
c-18.4,0-33.6,6.1-45.4,18.2c-11.8,12.1-17.7,27.9-17.7,47.2s5.9,35.2,17.7,47.4c11.8,12.3,26.9,18.4,45.4,18.4
|
||||
c23.8,0,42.2-7.6,55-22.9l15.2,16.2c-16.9,20.5-40.6,30.7-71.2,30.7c-25.9,0-47-8.3-63.4-25c-16.4-16.6-24.6-38.2-24.6-64.8
|
||||
c0-26.3,8.3-47.9,24.8-64.6C8031.1,926.9,8052.2,918.5,8077.8,918.5z"/>
|
||||
<path fill="#6D6E71" d="M8366.7,918.2c21.1,0,37.7,6.1,49.6,18.4c11.9,12.3,17.9,29.2,17.9,50.8V1097h-26.3V994.4
|
||||
c0-15.7-4.4-28-13.3-36.8s-21.2-13.2-36.9-13.2c-18.7,0.2-33.3,6.3-44,18.2c-10.7,11.9-16,27.5-16,46.9v87.4h-26.3V846.6h26.3V959
|
||||
C8309.2,932.2,8332.2,918.6,8366.7,918.2z"/>
|
||||
<path fill="#6D6E71" d="M8635.6,918.5c28.1-0.2,49.3,8.7,63.6,26.6c14.3,18,20.8,42.4,19.4,73.2h-145.1c2.2,17.3,9.2,31.1,20.9,41.3
|
||||
c11.7,10.2,26.2,15.4,43.5,15.4c22.5,0,40.8-7.4,55-22.3l14.5,15.5c-17.8,19.8-41.6,29.7-71.5,29.7c-26.1,0-47.4-8.3-63.8-25
|
||||
c-16.4-16.6-24.6-38.2-24.6-64.8s8.2-48.1,24.6-64.8C8588.5,926.8,8609.7,918.5,8635.6,918.5z M8573.5,996.8H8695
|
||||
c-0.9-17.1-6.7-30.7-17.4-40.7c-10.7-10-24.7-15-42-15c-16.9,0-30.9,5.1-42.2,15.2C8582.1,966.4,8575.5,979.9,8573.5,996.8z"/>
|
||||
<path fill="#6D6E71" d="M8838,1064.6c4.5,0,8.3,1.7,11.5,5c3.1,3.4,4.7,7.5,4.7,12.5c0,4.9-1.6,9.1-4.7,12.5
|
||||
c-3.2,3.4-7,5.1-11.5,5.1c-4.7,0-8.7-1.7-11.8-5.1c-3.2-3.4-4.7-7.5-4.7-12.5c0-4.9,1.6-9.1,4.7-12.5
|
||||
C8829.3,1066.3,8833.3,1064.6,8838,1064.6z"/>
|
||||
<path fill="#6D6E71" d="M8983.4,943.5c16.9-16.6,38.5-25,64.8-25c26.3,0,47.9,8.3,64.8,25c16.9,16.6,25.3,38.1,25.3,64.5
|
||||
c0,26.5-8.5,48.2-25.3,64.9c-16.9,16.8-38.5,25.1-64.8,25.1c-26.3,0-47.9-8.4-64.8-25.1c-16.9-16.8-25.3-38.4-25.3-64.9
|
||||
C8958.1,981.6,8966.5,960.1,8983.4,943.5z M9094.1,960.8c-11.9-12.3-27.2-18.4-45.9-18.4c-18.7,0-34,6.1-45.9,18.4
|
||||
c-11.9,12.3-17.9,28.1-17.9,47.4c0,19.6,6,35.5,17.9,47.7c11.9,12.3,27.2,18.4,45.9,18.4c18.7,0,34-6.1,45.9-18.4
|
||||
c11.9-12.3,17.9-28.2,17.9-47.7C9111.9,988.9,9106,973.1,9094.1,960.8z"/>
|
||||
<path fill="#6D6E71" d="M9283.3,919.2v39.5c12.2-26.5,33.4-40,63.8-40.5v26.7c-18.4-0.2-33.3,4.9-44.5,15.3
|
||||
c-11.3,10.5-17.6,24.6-19.2,42.3v94.5H9257V919.2H9283.3z"/>
|
||||
<path fill="#6D6E71" d="M9610,919.2v159.2c0,25.9-8.2,46.5-24.5,61.7c-16.3,15.3-38,22.9-64.9,22.9c-26.3-0.2-50.6-8.8-72.9-25.7
|
||||
l12.1-20.2c17.8,14.8,37.7,22.4,59.7,22.6c19.4,0,34.9-5.5,46.6-16.5c11.7-11,17.5-25.7,17.5-44.2v-27c-13,24.7-34.9,37.1-65.4,37.1
|
||||
c-23.9,0-43.3-8-58.4-24c-15.1-16-22.6-36.7-22.6-62.1c0-24.7,7.4-45,22.3-60.9c14.8-15.9,34.2-23.9,58-24.1
|
||||
c30.6,0,52.6,12.4,66.1,37.1v-36.1H9610z M9479.2,1049.2c11.4,11.8,25.9,17.7,43.7,17.7s32.3-5.9,43.7-17.7c11.3-11.8,17-26.8,17-45
|
||||
c0-18.4-5.7-33.6-17-45.4c-11.4-11.8-25.9-17.7-43.7-17.7s-32.3,5.9-43.7,17.7c-11.3,11.8-17.1,26.9-17.4,45.4
|
||||
C9462.1,1022.4,9467.9,1037.4,9479.2,1049.2z"/>
|
||||
<path fill="#6D6E71" d="M9729.4,1138.1h-22.9l105.3-317.8h23.3L9729.4,1138.1z"/>
|
||||
</svg>
|
BIN
tomcatfiles/ROOT/bg-button.png
Normal file
After Width: | Height: | Size: 713 B |
BIN
tomcatfiles/ROOT/bg-middle.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
tomcatfiles/ROOT/bg-nav.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
tomcatfiles/ROOT/bg-upper.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
tomcatfiles/ROOT/favicon.ico
Normal file
After Width: | Height: | Size: 15 KiB |
219
tomcatfiles/ROOT/index.jsp
Normal file
|
@ -0,0 +1,219 @@
|
|||
<%--
|
||||
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.
|
||||
--%>
|
||||
<%@ page session="false" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
|
||||
<%
|
||||
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy");
|
||||
request.setAttribute("year", sdf.format(new java.util.Date()));
|
||||
request.setAttribute("tomcatUrl", "https://tomcat.apache.org/");
|
||||
request.setAttribute("tomcatDocUrl", "/docs/");
|
||||
request.setAttribute("tomcatExamplesUrl", "/examples/");
|
||||
%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title><%=request.getServletContext().getServerInfo() %></title>
|
||||
<link href="favicon.ico" rel="icon" type="image/x-icon" />
|
||||
<link href="tomcat.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
<div id="navigation" class="curved container">
|
||||
<span id="nav-home"><a href="${tomcatUrl}">Home</a></span>
|
||||
<span id="nav-hosts"><a href="${tomcatDocUrl}">Documentation</a></span>
|
||||
<span id="nav-config"><a href="${tomcatDocUrl}config/">Configuration</a></span>
|
||||
<span id="nav-examples"><a href="${tomcatExamplesUrl}">Examples</a></span>
|
||||
<span id="nav-wiki"><a href="https://cwiki.apache.org/confluence/display/TOMCAT/">Wiki</a></span>
|
||||
<span id="nav-lists"><a href="${tomcatUrl}lists.html">Mailing Lists</a></span>
|
||||
<span id="nav-help"><a href="${tomcatUrl}findhelp.html">Find Help</a></span>
|
||||
<br class="separator" />
|
||||
</div>
|
||||
<div id="asf-box">
|
||||
<h1>${pageContext.servletContext.serverInfo}</h1>
|
||||
</div>
|
||||
<div id="upper" class="curved container">
|
||||
<div id="congrats" class="curved container">
|
||||
<h2>If you're seeing this, you've successfully installed Tomcat. Congratulations!</h2>
|
||||
</div>
|
||||
<div id="notice">
|
||||
<img id="tomcat-logo" src="tomcat.svg" alt="[tomcat logo]" />
|
||||
<div id="tasks">
|
||||
<h3>Recommended Reading:</h3>
|
||||
<h4><a href="${tomcatDocUrl}security-howto.html">Security Considerations How-To</a></h4>
|
||||
<h4><a href="${tomcatDocUrl}manager-howto.html">Manager Application How-To</a></h4>
|
||||
<h4><a href="${tomcatDocUrl}cluster-howto.html">Clustering/Session Replication How-To</a></h4>
|
||||
</div>
|
||||
</div>
|
||||
<div id="actions">
|
||||
<div class="button">
|
||||
<a class="container shadow" href="/manager/status"><span>Server Status</span></a>
|
||||
</div>
|
||||
<div class="button">
|
||||
<a class="container shadow" href="/manager/html"><span>Manager App</span></a>
|
||||
</div>
|
||||
<div class="button">
|
||||
<a class="container shadow" href="/host-manager/html"><span>Host Manager</span></a>
|
||||
</div>
|
||||
</div>
|
||||
<br class="separator" />
|
||||
</div>
|
||||
<div id="middle" class="curved container">
|
||||
<h3>Developer Quick Start</h3>
|
||||
<div class="col25">
|
||||
<div class="container">
|
||||
<p><a href="${tomcatDocUrl}setup.html">Tomcat Setup</a></p>
|
||||
<p><a href="${tomcatDocUrl}appdev/">First Web Application</a></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col25">
|
||||
<div class="container">
|
||||
<p><a href="${tomcatDocUrl}realm-howto.html">Realms & AAA</a></p>
|
||||
<p><a href="${tomcatDocUrl}jndi-datasource-examples-howto.html">JDBC DataSources</a></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col25">
|
||||
<div class="container">
|
||||
<p><a href="${tomcatExamplesUrl}">Examples</a></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col25">
|
||||
<div class="container">
|
||||
<p><a href="https://cwiki.apache.org/confluence/display/TOMCAT/Specifications">Servlet Specifications</a></p>
|
||||
<p><a href="https://cwiki.apache.org/confluence/display/TOMCAT/Tomcat+Versions">Tomcat Versions</a></p>
|
||||
</div>
|
||||
</div>
|
||||
<br class="separator" />
|
||||
</div>
|
||||
<div id="lower">
|
||||
<div id="low-manage" class="">
|
||||
<div class="curved container">
|
||||
<h3>Managing Tomcat</h3>
|
||||
<p>For security, access to the <a href="/manager/html">manager webapp</a> is restricted.
|
||||
Users are defined in:</p>
|
||||
<pre>$CATALINA_HOME/conf/tomcat-users.xml</pre>
|
||||
<p>In Tomcat 9.0 access to the manager application is split between
|
||||
different users. <a href="${tomcatDocUrl}manager-howto.html">Read more...</a></p>
|
||||
<br />
|
||||
<h4><a href="${tomcatDocUrl}RELEASE-NOTES.txt">Release Notes</a></h4>
|
||||
<h4><a href="${tomcatDocUrl}changelog.html">Changelog</a></h4>
|
||||
<h4><a href="${tomcatUrl}migration.html">Migration Guide</a></h4>
|
||||
<h4><a href="${tomcatUrl}security.html">Security Notices</a></h4>
|
||||
</div>
|
||||
</div>
|
||||
<div id="low-docs" class="">
|
||||
<div class="curved container">
|
||||
<h3>Documentation</h3>
|
||||
<h4><a href="${tomcatDocUrl}">Tomcat 9.0 Documentation</a></h4>
|
||||
<h4><a href="${tomcatDocUrl}config/">Tomcat 9.0 Configuration</a></h4>
|
||||
<h4><a href="https://cwiki.apache.org/confluence/display/TOMCAT/">Tomcat Wiki</a></h4>
|
||||
<p>Find additional important configuration information in:</p>
|
||||
<pre>$CATALINA_HOME/RUNNING.txt</pre>
|
||||
<p>Developers may be interested in:</p>
|
||||
<ul>
|
||||
<li><a href="https://tomcat.apache.org/bugreport.html">Tomcat 9.0 Bug Database</a></li>
|
||||
<li><a href="${tomcatDocUrl}api/index.html">Tomcat 9.0 JavaDocs</a></li>
|
||||
<li><a href="https://github.com/apache/tomcat/tree/9.0.x">Tomcat 9.0 Git Repository at GitHub</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div id="low-help" class="">
|
||||
<div class="curved container">
|
||||
<h3>Getting Help</h3>
|
||||
<h4><a href="${tomcatUrl}faq/">FAQ</a> and <a href="${tomcatUrl}lists.html">Mailing Lists</a></h4>
|
||||
<p>The following mailing lists are available:</p>
|
||||
<ul>
|
||||
<li id="list-announce"><strong><a href="${tomcatUrl}lists.html#tomcat-announce">tomcat-announce</a><br />
|
||||
Important announcements, releases, security vulnerability notifications. (Low volume).</strong>
|
||||
</li>
|
||||
<li><a href="${tomcatUrl}lists.html#tomcat-users">tomcat-users</a><br />
|
||||
User support and discussion
|
||||
</li>
|
||||
<li><a href="${tomcatUrl}lists.html#taglibs-user">taglibs-user</a><br />
|
||||
User support and discussion for <a href="${tomcatUrl}taglibs/">Apache Taglibs</a>
|
||||
</li>
|
||||
<li><a href="${tomcatUrl}lists.html#tomcat-dev">tomcat-dev</a><br />
|
||||
Development mailing list, including commit messages
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<br class="separator" />
|
||||
</div>
|
||||
<div id="footer" class="curved container">
|
||||
<div class="col20">
|
||||
<div class="container">
|
||||
<h4>Other Downloads</h4>
|
||||
<ul>
|
||||
<li><a href="${tomcatUrl}download-connectors.cgi">Tomcat Connectors</a></li>
|
||||
<li><a href="${tomcatUrl}download-native.cgi">Tomcat Native</a></li>
|
||||
<li><a href="${tomcatUrl}taglibs/">Taglibs</a></li>
|
||||
<li><a href="${tomcatDocUrl}deployer-howto.html">Deployer</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col20">
|
||||
<div class="container">
|
||||
<h4>Other Documentation</h4>
|
||||
<ul>
|
||||
<li><a href="${tomcatUrl}connectors-doc/">Tomcat Connectors</a></li>
|
||||
<li><a href="${tomcatUrl}connectors-doc/">mod_jk Documentation</a></li>
|
||||
<li><a href="${tomcatUrl}native-doc/">Tomcat Native</a></li>
|
||||
<li><a href="${tomcatDocUrl}deployer-howto.html">Deployer</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col20">
|
||||
<div class="container">
|
||||
<h4>Get Involved</h4>
|
||||
<ul>
|
||||
<li><a href="${tomcatUrl}getinvolved.html">Overview</a></li>
|
||||
<li><a href="${tomcatUrl}source.html">Source Repositories</a></li>
|
||||
<li><a href="${tomcatUrl}lists.html">Mailing Lists</a></li>
|
||||
<li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/">Wiki</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col20">
|
||||
<div class="container">
|
||||
<h4>Miscellaneous</h4>
|
||||
<ul>
|
||||
<li><a href="${tomcatUrl}contact.html">Contact</a></li>
|
||||
<li><a href="${tomcatUrl}legal.html">Legal</a></li>
|
||||
<li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
|
||||
<li><a href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col20">
|
||||
<div class="container">
|
||||
<h4>Apache Software Foundation</h4>
|
||||
<ul>
|
||||
<li><a href="${tomcatUrl}whoweare.html">Who We Are</a></li>
|
||||
<li><a href="${tomcatUrl}heritage.html">Heritage</a></li>
|
||||
<li><a href="https://www.apache.org">Apache Home</a></li>
|
||||
<li><a href="${tomcatUrl}resources.html">Resources</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<br class="separator" />
|
||||
</div>
|
||||
<p class="copyright">Copyright ©1999-${year} Apache Software Foundation. All Rights Reserved</p>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
BIN
tomcatfiles/ROOT/o/o/PENGENALAN TRADE.pptx
Normal file
354
tomcatfiles/ROOT/tomcat.css
Normal file
|
@ -0,0 +1,354 @@
|
|||
/*
|
||||
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.
|
||||
*/
|
||||
body {
|
||||
margin: 10px 20px;
|
||||
text-align: center;
|
||||
font-family: Arial, sans-serif;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6, p, ul, ol {
|
||||
margin: 0 0 0.5em;
|
||||
}
|
||||
h1 {
|
||||
font-size: 18pt;
|
||||
margin: 0.5em 0 0;
|
||||
}
|
||||
h2 {
|
||||
font-size: 16pt;
|
||||
}
|
||||
h3 {
|
||||
font-size: 13pt;
|
||||
}
|
||||
h4 {
|
||||
font-size: 12pt;
|
||||
}
|
||||
h5 {
|
||||
font-size: 11pt;
|
||||
}
|
||||
p {
|
||||
font-size: 11pt
|
||||
}
|
||||
|
||||
ul {
|
||||
margin: 0;
|
||||
padding: 0 0 0 0.25em;
|
||||
text-indent: 0;
|
||||
list-style: none;
|
||||
}
|
||||
li {
|
||||
margin: 0;
|
||||
padding: 0 0 0.25em;
|
||||
text-indent: 0;
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
pre {
|
||||
text-indent: 0.25em;
|
||||
width: 90%;
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
br.separator {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
a img {
|
||||
border: 0 none;
|
||||
}
|
||||
|
||||
.container {
|
||||
padding: 10px;
|
||||
margin: 0 0 10px;
|
||||
}
|
||||
|
||||
.col20 {
|
||||
float: left;
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
.col25 {
|
||||
float: left;
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
#wrapper {
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
text-align: left;
|
||||
min-width: 720px;
|
||||
max-width: 1000px;
|
||||
}
|
||||
|
||||
.curved {
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
#tomcat-logo {
|
||||
width: 150px;
|
||||
height: 106px;
|
||||
}
|
||||
|
||||
#navigation {
|
||||
background: #eee url(bg-nav.png) repeat-x top left;
|
||||
margin: 0 0 10px;
|
||||
padding: 0;
|
||||
}
|
||||
#navigation span {
|
||||
float: left;
|
||||
}
|
||||
#navigation span a {
|
||||
display: block;
|
||||
padding: 10px;
|
||||
font-weight: bold;
|
||||
text-shadow: 1px 1px 1px #fff;
|
||||
}
|
||||
#navigation span a:link,
|
||||
#navigation span a:visited,
|
||||
#navigation span a:hover,
|
||||
#navigation span a:active {
|
||||
color: #666;
|
||||
text-decoration: none;
|
||||
}
|
||||
#navigation span#nav-help {
|
||||
float: right;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
#asf-box {
|
||||
height: 40px;
|
||||
background: #fff url(asf-logo-wide.svg) no-repeat top right;}
|
||||
#asf-box h1 {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#upper {
|
||||
background: #fff url(bg-upper.png) repeat-x top left;
|
||||
}
|
||||
|
||||
#congrats {
|
||||
text-align: center;
|
||||
padding: 10px;
|
||||
margin: 0 40px 20px;
|
||||
background-color: #9c9;
|
||||
}
|
||||
#congrats h2 {
|
||||
font-size: 14pt;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
#notice {
|
||||
float: left;
|
||||
width: 560px;
|
||||
color: #696;
|
||||
}
|
||||
#notice a:link,
|
||||
#notice a:visited,
|
||||
#notice a:hover,
|
||||
#notice a:active {
|
||||
color: #090;
|
||||
text-decoration: none;
|
||||
}
|
||||
#notice img,
|
||||
#notice #tasks {
|
||||
float: left;
|
||||
}
|
||||
#tasks a:link,
|
||||
#tasks a:visited,
|
||||
#tasks a:hover,
|
||||
#tasks a:active {
|
||||
text-decoration: underline;
|
||||
}
|
||||
#notice img {
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
#actions {
|
||||
float: right;
|
||||
width: 140px;
|
||||
}
|
||||
|
||||
#actions .button {
|
||||
display: block;
|
||||
padding: 0;
|
||||
height: 36px;
|
||||
background: url(bg-button.png) no-repeat top left;
|
||||
}
|
||||
|
||||
#actions .button a {
|
||||
display: block;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#actions .button a:link,
|
||||
#actions .button a:visited,
|
||||
#actions .button a:hover,
|
||||
#actions .button a:active {
|
||||
color: #696;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#actions .button a span {
|
||||
display: block;
|
||||
padding: 6px 10px;
|
||||
color: #666;
|
||||
text-shadow: 1px 1px 1px #fff;
|
||||
font-size: 10pt;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#middle {
|
||||
background: #eef url(bg-middle.png) repeat-x top left;
|
||||
margin: 20px 0;
|
||||
padding: 1px 10px;
|
||||
}
|
||||
#middle h3 {
|
||||
margin: 0 0 10px;
|
||||
color: #033;
|
||||
}
|
||||
#middle p {
|
||||
font-size: 10pt;
|
||||
}
|
||||
#middle a:link,
|
||||
#middle a:visited,
|
||||
#middle a:hover,
|
||||
#middle a:active {
|
||||
color: #366;
|
||||
font-weight: bold;
|
||||
}
|
||||
#middle .col25 .container {
|
||||
padding: 0 0 1px;
|
||||
}
|
||||
|
||||
#developers {
|
||||
float: left;
|
||||
width: 40%;
|
||||
}
|
||||
#security {
|
||||
float: right;
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
#lower {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#lower a:link,
|
||||
#lower a:visited,
|
||||
#lower a:hover,
|
||||
#lower a:active {
|
||||
color: #600;
|
||||
}
|
||||
|
||||
#lower strong a:link,
|
||||
#lower strong a:visited,
|
||||
#lower strong a:hover,
|
||||
#lower strong a:active {
|
||||
color: #c00;
|
||||
}
|
||||
|
||||
#lower h3 {
|
||||
color: #963;
|
||||
font-size: 14pt;
|
||||
}
|
||||
#lower h4 {
|
||||
font-size: 12pt;
|
||||
}
|
||||
#lower ul {
|
||||
padding: 0;
|
||||
margin: 0.5em 0;
|
||||
}
|
||||
#lower p,
|
||||
#lower li {
|
||||
font-size: 9pt;
|
||||
color: #753;
|
||||
margin: 0 0 0.1em;
|
||||
}
|
||||
#lower li {
|
||||
padding: 3px 5px;
|
||||
}
|
||||
#lower li strong {
|
||||
color: #a53;
|
||||
}
|
||||
#lower li#list-announce {
|
||||
border: 1px solid #f90;
|
||||
background-color: #ffe8c8;
|
||||
}
|
||||
#lower p {
|
||||
font-size: 10.5pt;
|
||||
}
|
||||
|
||||
#low-manage,
|
||||
#low-docs,
|
||||
#low-help {
|
||||
float: left;
|
||||
width: 32%;
|
||||
}
|
||||
#low-docs {
|
||||
margin: 0 0 0 2.2%;
|
||||
}
|
||||
#low-help {
|
||||
float: right;
|
||||
}
|
||||
|
||||
#low-manage div,
|
||||
#low-docs div,
|
||||
#low-help div {
|
||||
min-height: 280px;
|
||||
border: 3px solid #ffdc75;
|
||||
background-color: #fff1c8;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
#footer {
|
||||
padding: 0;
|
||||
margin: 20px 0;
|
||||
color: #999;
|
||||
background-color: #eee;
|
||||
}
|
||||
#footer h4 {
|
||||
margin: 0 0 10px;
|
||||
font-size: 10pt;
|
||||
}
|
||||
#footer p {
|
||||
margin: 0 0 10px;
|
||||
font-size: 10pt;
|
||||
}
|
||||
#footer ul {
|
||||
margin: 6px 0 1px;
|
||||
padding: 0;
|
||||
}
|
||||
#footer li {
|
||||
margin: 0;
|
||||
font-size: 9pt;
|
||||
}
|
||||
|
||||
#footer a:link,
|
||||
#footer a:visited,
|
||||
#footer a:hover,
|
||||
#footer a:active {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.copyright {
|
||||
font-size: 10pt;
|
||||
color: #666;
|
||||
}
|
967
tomcatfiles/ROOT/tomcat.svg
Normal file
|
@ -0,0 +1,967 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!--
|
||||
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.
|
||||
-->
|
||||
<!-- Generator: Adobe Illustrator 11 Build 196, SVG Export Plug-In . SVG Version: 6.0.0 Build 78) -->
|
||||
<svg:svg
|
||||
xmlns:xapGImg="http://ns.adobe.com/xap/1.0/g/img/"
|
||||
xmlns:xap="http://ns.adobe.com/xap/1.0/"
|
||||
xmlns:ns0="http://ns.adobe.com/SaveForWeb/1.0/"
|
||||
xmlns:ns="http://ns.adobe.com/Variables/1.0/"
|
||||
xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/"
|
||||
xmlns:x="adobe:ns:meta/"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
i:viewOrigin="176.7139 486.707"
|
||||
i:rulerOrigin="-156 -296"
|
||||
i:pageBounds="156 496 456 296"
|
||||
width="260.162"
|
||||
height="184.413"
|
||||
viewBox="0 0 260.162 184.413"
|
||||
overflow="visible"
|
||||
enable-background="new 0 0 260.162 184.413"
|
||||
xml:space="preserve"
|
||||
id="svg2"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.46"
|
||||
sodipodi:docname="tomcat.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"><svg:defs
|
||||
id="defs59"><inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 92.206497 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="260.16199 : 92.206497 : 1"
|
||||
inkscape:persp3d-origin="130.08099 : 61.470998 : 1"
|
||||
id="perspective63" /></svg:defs><sodipodi:namedview
|
||||
inkscape:window-height="725"
|
||||
inkscape:window-width="1051"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
guidetolerance="10.0"
|
||||
gridtolerance="10.0"
|
||||
objecttolerance="10.0"
|
||||
borderopacity="1.0"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff"
|
||||
id="base"
|
||||
showgrid="false"
|
||||
inkscape:zoom="2.1025362"
|
||||
inkscape:cx="130.08099"
|
||||
inkscape:cy="91.968689"
|
||||
inkscape:window-x="35"
|
||||
inkscape:window-y="192"
|
||||
inkscape:current-layer="svg2" />
|
||||
<svg:metadata
|
||||
id="metadata4">
|
||||
<ns:variableSets>
|
||||
<ns:variableSet
|
||||
varSetName="binding1"
|
||||
locked="none">
|
||||
<ns:variables />
|
||||
<ns:sampleDataSets />
|
||||
</ns:variableSet>
|
||||
</ns:variableSets>
|
||||
<ns0:sfw>
|
||||
<ns0:slices />
|
||||
<ns0:sliceSourceBounds
|
||||
y="302.294"
|
||||
x="176.714"
|
||||
width="260.162"
|
||||
height="184.413"
|
||||
bottomLeftOrigin="true" />
|
||||
</ns0:sfw>
|
||||
<xpacket /><x:xmpmeta
|
||||
x:xmptk="XMP toolkit 3.0-29, framework 1.6">
|
||||
|
||||
<svg:metadata
|
||||
id="metadata61"><rdf:RDF>
|
||||
|
||||
<rdf:Description
|
||||
rdf:about="">
|
||||
</rdf:Description>
|
||||
|
||||
<rdf:Description
|
||||
rdf:about="">
|
||||
</rdf:Description>
|
||||
|
||||
<rdf:Description
|
||||
rdf:about="">
|
||||
<xap:CreateDate>2006-05-09T08:17:21Z</xap:CreateDate>
|
||||
<xap:ModifyDate>2006-05-09T08:37:38Z</xap:ModifyDate>
|
||||
<xap:CreatorTool>Illustrator</xap:CreatorTool>
|
||||
<xap:Thumbnails>
|
||||
<rdf:Alt>
|
||||
<rdf:li
|
||||
rdf:parseType="Resource">
|
||||
<xapGImg:format>JPEG</xapGImg:format>
|
||||
<xapGImg:width>256</xapGImg:width>
|
||||
<xapGImg:height>184</xapGImg:height>
|
||||
<xapGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
|
||||
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
|
||||
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
|
||||
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAuAEAAwER
|
||||
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
|
||||
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
|
||||
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
|
||||
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
|
||||
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
|
||||
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
|
||||
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
|
||||
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7
|
||||
FXYq7FXYq7FXYq7FXYq7FXhH/OYHnWfQ/wAurfRLSUxXXmK49GQqaN9VtwJJqH3cxqfYnFXhP5Y/
|
||||
85O+f/JU0enaw769okbBJLS8ZvrUKg0IhnarDj/I9R2HHFX2F+Xn5neT/P8ApP6R8u3glKAfW7KS
|
||||
iXNuzdFljqaezCqnsTirK8VdirsVdirsVdirsVdirC/zM/Nvyd+XemC71255Xcqk2WmQUa5nI2+F
|
||||
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</xapGImg:image>
|
||||
</rdf:li>
|
||||
</rdf:Alt>
|
||||
</xap:Thumbnails>
|
||||
</rdf:Description>
|
||||
|
||||
<rdf:Description
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
</rdf:Description>
|
||||
|
||||
<cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></svg:metadata></x:xmpmeta>
|
||||
<xpacket />
|
||||
</svg:metadata>
|
||||
<svg:switch
|
||||
id="switch6">
|
||||
<svg:foreignObject
|
||||
requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/"
|
||||
x="0"
|
||||
y="0"
|
||||
width="1"
|
||||
height="1"
|
||||
id="foreignObject8">
|
||||
<i:pgfRef
|
||||
xlink:href="#adobe_illustrator_pgf">
|
||||
</i:pgfRef>
|
||||
</svg:foreignObject>
|
||||
<svg:g
|
||||
i:extraneous="self"
|
||||
id="g10">
|
||||
<svg:g
|
||||
id="colors"
|
||||
i:layer="yes"
|
||||
i:dimmedPercent="3"
|
||||
i:rgbTrio="#4F00FFFF4F00">
|
||||
<svg:path
|
||||
i:knockout="Off"
|
||||
fill="#F8DC75"
|
||||
d="M237.682,33.617c-0.019-5.071,0.402-24.5-2.5-30.4 c-7.869,2.99-19.189,11.68-22.431,21.588c-15.532-2.32-35.042-2.045-50.381,0.608C159.808,14.753,147.946,7.596,138.243,3 c-4.093,6.907-3.906,19.92-3.445,31.279c-0.018,0.013-0.037,0.024-0.054,0.037c1.8,47.7,22.2,74.399,52.799,92.399 c31.481-17.988,50.972-49.057,50.101-93.12C237.656,33.603,237.67,33.609,237.682,33.617z M216.485,25.421 c0.114,0.021,0.229,0.042,0.344,0.064C216.715,25.463,216.601,25.441,216.485,25.421z M214.527,25.083 c0.275,0.044,0.554,0.094,0.83,0.141C215.081,25.177,214.805,25.129,214.527,25.083z"
|
||||
id="path13" />
|
||||
<svg:path
|
||||
i:knockout="Off"
|
||||
fill="#D2A41F"
|
||||
d="M91.013,133.328c46.474,4.115,90.927,22.883,141.085,49.085h25.598l0.361,0.191 c0.516-2.575-1.888-6.025-4.752-9.229c-4.941-5.528-11.623-6.145-19.707-5.951c-5.738-6.83-41.004-43.861-41.004-43.861 l-4.808,3.395c-38.75-21.75-49.155-62.513-49.155-62.513c-33.792,8.148-69.78,28.334-90.391,49.761l-3.118,3.292 c-1.489,1.597-2.928,3.174-4.312,4.723C18.967,146.661,3,170.87,3,175.213v2.25h23.816l-0.505-0.668 c-2.449-12.943,4.443-23.341,10.279-30.385c4.179-5.044,11.1-9.801,21.968-12.457L91.013,133.328z"
|
||||
id="path15" />
|
||||
</svg:g>
|
||||
<svg:g
|
||||
id="tomcat"
|
||||
i:layer="yes"
|
||||
i:dimmedPercent="3"
|
||||
i:rgbTrio="#4F00FFFF4F00">
|
||||
<svg:path
|
||||
i:knockout="Off"
|
||||
d="M240.682,32.617c-0.019-5.071-1.598-26.5-4.5-32.4c-7.869,2.99-22.189,12.68-25.431,22.588 c-15.532-2.32-33.042-2.045-48.381,0.608C159.808,12.753,146.946,4.596,137.243,0c-4.093,6.907-5.906,22.92-5.445,34.279 c-0.018,0.013-0.037,0.024-0.054,0.037c1.8,47.7,25.2,77.399,55.799,95.399c31.481-17.988,53.972-53.057,53.101-97.12 C240.656,32.603,240.67,32.609,240.682,32.617z M214.485,23.421c0.114,0.021,0.229,0.042,0.344,0.064 C214.715,23.463,214.601,23.441,214.485,23.421z M212.527,23.083c0.275,0.044,0.554,0.094,0.83,0.141 C213.081,23.177,212.805,23.129,212.527,23.083z M235.784,36.059c0.81,39.69-19.44,71.279-47.79,87.48 c-48.118-23.977-57.183-84.71-48.977-117.289c2.283,12.454,6.424,20.266,15.394,24.098c19.533-5.591,46.423-6.033,66.231-0.57 c8.255-6.001,11.456-15.169,13.204-23.18C236.029,15.921,235.777,36.055,235.784,36.059z"
|
||||
id="path18" />
|
||||
<svg:g
|
||||
id="g20">
|
||||
<svg:rect
|
||||
x="133.209"
|
||||
y="90.51"
|
||||
i:knockout="Off"
|
||||
width="26.245"
|
||||
height="3.239"
|
||||
id="rect22" />
|
||||
<svg:rect
|
||||
x="133.209"
|
||||
y="82.732"
|
||||
i:knockout="Off"
|
||||
width="26.245"
|
||||
height="3.24"
|
||||
id="rect24" />
|
||||
<svg:rect
|
||||
x="213.35"
|
||||
y="90.51"
|
||||
i:knockout="Off"
|
||||
width="26.244"
|
||||
height="3.239"
|
||||
id="rect26" />
|
||||
<svg:rect
|
||||
x="213.35"
|
||||
y="82.732"
|
||||
i:knockout="Off"
|
||||
width="26.244"
|
||||
height="3.24"
|
||||
id="rect28" />
|
||||
<svg:g
|
||||
id="g30">
|
||||
<svg:path
|
||||
i:knockout="Off"
|
||||
d="M204.1,63.524h-27.188h-3.021h-12.561v-2.917h13.31c1.639-7.018,1.963-13.725-0.014-17.125 c-0.844-1.446-2.01-2.121-3.674-2.121c-7.609,0-10.753,8.046-10.884,8.389l0.002-0.003l-2.73-1.024 c0.156-0.42,3.965-10.278,13.612-10.278c2.692,0,4.834,1.235,6.191,3.57c2.41,4.141,2.127,11.305,0.494,18.592l23.354,0 c3.103-9.116,9.581-13.414,20.405-13.414v2.916c-11.732,0-15.019,4.973-17.366,10.498l12.743,0l-0.029,2.901L204.1,63.524z"
|
||||
id="path32" />
|
||||
<svg:path
|
||||
i:knockout="Off"
|
||||
d="M206.017,77.925l0.019-0.003c-3.459-5.101-4.555-9.456-3.108-14.413l-2.971,0.015 c-1.035,3.3-0.62,8.273,1.929,12.54H172.21c1.806-3.616,3.479-8.025,4.702-12.54h-3.021 c-1.348,4.786-3.241,9.524-5.372,13.277l-0.689,1.213l16.652,10.482l-9.375,6.178l1.605,2.436l10.479-6.908l11.312,7.382 l1.554-2.468l-10.488-6.488c0,0,15.682-10.187,16.461-10.684C206.024,77.937,206.021,77.931,206.017,77.925z M187.156,86.733 l-12.317-7.755l24.071,0.006L187.156,86.733z"
|
||||
id="path34" />
|
||||
</svg:g>
|
||||
</svg:g>
|
||||
<svg:polygon
|
||||
i:knockout="Off"
|
||||
points="114.745,73.635 122.087,95.391 99.788,80.434 "
|
||||
id="polygon36" />
|
||||
<svg:polygon
|
||||
i:knockout="Off"
|
||||
points="93.261,83.153 101.147,96.75 84.559,88.32 "
|
||||
id="polygon38" />
|
||||
<svg:polygon
|
||||
i:knockout="Off"
|
||||
points="75.313,93.759 79.12,107.356 67.699,99.47 "
|
||||
id="polygon40" />
|
||||
<svg:polygon
|
||||
i:knockout="Off"
|
||||
points="196.871,130.199 189.801,141.077 202.31,135.366 "
|
||||
id="polygon42" />
|
||||
<svg:polygon
|
||||
i:knockout="Off"
|
||||
points="208.021,142.709 196.6,151.411 212.372,147.332 "
|
||||
id="polygon44" />
|
||||
<svg:polygon
|
||||
i:knockout="Off"
|
||||
points="180.282,24.686 188.713,43.178 194.151,24.414 "
|
||||
id="polygon46" />
|
||||
<svg:polygon
|
||||
i:knockout="Off"
|
||||
points="137.588,51.608 150.913,58.678 138.947,59.494 "
|
||||
id="polygon48" />
|
||||
<svg:polygon
|
||||
i:knockout="Off"
|
||||
points="140.851,66.021 149.009,69.284 142.211,71.188 "
|
||||
id="polygon50" />
|
||||
<svg:polygon
|
||||
i:knockout="Off"
|
||||
points="236.031,56.775 225.153,61.398 234.127,62.757 "
|
||||
id="polygon52" />
|
||||
<svg:polygon
|
||||
i:knockout="Off"
|
||||
points="231.68,70.1 223.25,72.548 230.048,74.995 "
|
||||
id="polygon54" />
|
||||
<svg:path
|
||||
i:knockout="Off"
|
||||
d="M256.305,173.375c-4.941-5.528-14.623-8.145-22.707-7.951c-5.738-6.83-39.004-41.861-39.004-41.861 l-2.306,2.903l40.162,43.238l1.743-0.149c10.912-0.935,17.115,4.983,18.757,6.819c1.204,1.347,1.931,2.575,2.326,3.539h-22.075 c-50.624-26.416-95.078-45.044-142.297-49.112c0.104-6.571,1.273-14.01,3.518-22.299l-4.343-1.177 c-2.308,8.521-3.523,16.236-3.661,23.133c-4.92-0.326-9.872-0.495-14.868-0.495c-4.237,0-8.095,0.394-11.614,1.077 c-4.59-4.587-8.5-8.959-11.823-13.108c21.936-22.85,58.15-43.498,89.533-51.092l-1.015-4.396 c-33.792,8.148-70.78,30.334-91.391,51.761c-9.565-12.91-13.36-23.504-14.487-31.532c-1.424-10.14,0.997-19.441,6.999-26.899 C47.15,44.099,60.502,43.277,74.23,45.586c-0.268,2.167,0.017,4.24,0.885,5.522c3.631,5.363,23.144,7.246,34.791,2.049 c-8.595-12.045-26.006-17.926-30.83-15.569c-1.598,0.781-2.804,2.214-3.63,3.886c-4.745-0.849-9.458-1.48-12.903-1.455 c-12.107,0.088-21.363,4.319-28.296,12.932c-6.802,8.451-9.551,18.944-7.95,30.347c1.516,10.8,6.863,22.286,15.825,34.198 c-1.489,1.597-2.928,3.174-4.312,4.723C15.967,146.661,0,172.87,0,177.213v2.25h28.816l-0.505-2.668 c-1.627-8.601,1.623-19.351,8.279-27.385c4.179-5.044,11.1-10.801,21.968-13.457c9.663,9.431,21.975,19.446,35.679,29.109 h21.414v-2.25c0-2.539-1.259-4.762-3.545-6.257c-3.383-2.212-8.605-2.517-13.402-0.881c-4.573-5.093-7.137-11.896-7.691-20.347 c46.474,4.115,90.927,22.883,141.085,49.085h27.598l0.361-1.809C260.572,180.029,259.169,176.579,256.305,173.375z M33.125,146.539c-6.816,8.227-10.429,19.094-9.601,28.424H5.372c3.647-7.894,18.176-30.712,39.644-53.76 c2.958,3.656,6.253,7.35,9.872,11.073C44.347,135.444,37.437,141.336,33.125,146.539z"
|
||||
id="path56" />
|
||||
</svg:g>
|
||||
</svg:g>
|
||||
</svg:switch>
|
||||
<i:pgf
|
||||
id="adobe_illustrator_pgf">
|
||||
|
||||
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
|
||||
|
||||
|
||||
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
|
||||
|
||||
|
||||
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
|
||||
cJMO84eqw80+pT9THb65L+Utqw5fo15sjerwpV8v3Vh1uF4bvkZOL3V1uL5cy69mbKg63CKj+w9U
|
||||
h1tmdG+8OlwPYzvUWfyqOtzKStpYdbiGO6s6iz9QHa4jw+VIT+tXhy/U8P6R6nC6/LHfVocbswj+
|
||||
XHX4YtXzn6gOX5ajuLnqcKcI72aqw/XacIds219Vh9thbLPV4XptOE3m8LrV4TbZgxuuDtdlvVrN
|
||||
8Ueqw3VEm+5V2Gh1uJ6M5PL+uepw27VstDpcrw0309gmq8PtdZhNVodbSbHNV4cv2ZcNVofrteGb
|
||||
3Re7T3f/Yl9W+HT3Eovv19Xh+mZb6Pwbqw7XNxtj4n+qOtypinMz1eFzttgfqw6nuleB+SgIz0tR
|
||||
afAbqAs3xpENCRIur5Yi0WvZf8A39fC6+gdAz23PfvtsU4W8lLdq6NLeUsOD9X1TfQH4nXtFz1Wn
|
||||
+MA6kFLq4cd8K/ZKpZwLGFuxlNMOY7T3XThjbPHm3xXu7Jpbmq0JvxJIJJL4RpWO5Py9dFtmZZ/X
|
||||
Z4unFYtI56xXE1Br3OJmF+giX2Cnrfek0PlxpQu5O7jSOZ3fwlK31/RPfJmRnaZ/brLTf/0V5uxC
|
||||
GZoN56er9l3L6Wh7EziAt2AU/8bpCON5V/gyi6PT8dzW6bg8D9Z+N/ZWOjQOVtL5eldSLqust0gJ
|
||||
+90nwGcC0eXdxM0Jnwvp7fMItPkO7xIELknctkWgrQ6DxetOyWHUCMRZsHjdyZ5QcWchIS0yRsft
|
||||
JbVv/I48pKlsoPPB9i6sdn+NrMCLjX/172KzXzQALrFwsNcrfdbzvX+LMccP/tH5LbF6ekPfSL0g
|
||||
Gd+/zxsnIFmkelvd1EqBJ0c/03zKnlLLY5eihcXrv/w86sw7Olfsxp9UJhkb79Iwv2aWt7UPlj+5
|
||||
DZhvgFlnm2IlLSrqlFNHK95jJftjtsaN0/nVE7xtMXbk3wjGPFq92C8TqfMUSWR0X/xEoH6T222I
|
||||
8eWtfBtr4skUNVoe5XFS8rF0nSYd0LV6gcZwScIClsZaHNy1b5zGuBB1kY/L61RTTCdzl0vcue8j
|
||||
n73HzO6W9S+KwNJ17fQaIrxrfWm39kZzwYOLshSbSvDakrj+FWasW9/EbRFK1fr8EV73Vg1StR7c
|
||||
HI2tKn2tZK9uv5AR69Q0tkLyeLmPPNnGj4iOHqoybmdBp+9+uW97HdLqYWyEcF9nmY66pWFEuzIP
|
||||
MuLSa3VcXooRLWtT95ORI7simFtLD8n6sVAQkxTizUVzNgDuHA3x2TruF+ssgAHQ3j1DVZu6nywu
|
||||
3j24VvnY3WB5berc7juWYu+vaT6Z/MmEOjZTm4rl15qz9LfyBavWnWtTaWksvpAgYXYiLctAsPlm
|
||||
vQXfNDtCKArlZoFxwpO1ezoAj/u2yaJs9jlNYxRa+Rws13K30lVZSyuKKb9dSx01A/N3o3fcIYyr
|
||||
3fdg/33ku5Xuy1peiK1V1/76kga7FCVLi8/5S+freB+svl+JdetrXZplhSyrexStXKSUH8PEEe3C
|
||||
H1Y0tsKVEbWt0xM7sXyvi2UHbkkplp9/lovlFeRLbeuBxqtpJZZt7iGB3ac9dzRimdS91jfgc0G0
|
||||
2Yrlxd13/Hg3taavHz1Lnny/MbGM5dcgljdwi6ZStb5ULK9EY5eOFzzYiOVl36zfnFhe8Chi2DVo
|
||||
K5YBxlsa08wklu3X8uAslqkrV3Ur6W3kqFgtfPPcuX6d27TcfxttWO7HfLQXSnjnIolLyuv7v7xq
|
||||
cd4Sf1jBEaKOaIs7kxuEourZWUxi/brz2aepYLfw+r15lnn96oaPECy3xOm8fh/psIONiH4YmysX
|
||||
lpU0fzpduDCfgeuiuNOg+mu34sI9ilY5Sb9wK1Yt8y3Xvn2YlK7TS2S6z50fUKvXWi2PjdiyTC1a
|
||||
48KF+bNfpfHzr2JN6kIL8y0LQthebL2M2w7Xg6nLWPZdiHnr9TZ2YDsfRcTcdr7ZjTqqxxHxWKhk
|
||||
6weNXrLfCA2Ske700iQDyFSpbktkEoff18+5/d1rjbk0kruZj6GfTebvHwuzfQYrSQ==
|
||||
|
||||
|
||||
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
|
||||
|
||||
|
||||
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
|
||||
|
||||
|
||||
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
|
||||
/Dn4G1vgFa2715u9zrn+L1T7Dxc=
|
||||
|
||||
</i:pgf>
|
||||
<svg:text
|
||||
xml:space="preserve"
|
||||
style="font-size:13.03699398px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Nimbus Sans L;-inkscape-font-specification:Nimbus Sans L"
|
||||
x="246.20877"
|
||||
y="10.629581"
|
||||
id="text2436"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="scale(0.9830254,1.0172677)"><svg:tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2438"
|
||||
x="246.20877"
|
||||
y="10.629581">TM</svg:tspan></svg:text>
|
||||
</svg:svg>
|
After Width: | Height: | Size: 66 KiB |
585
tomcatfiles/docs/BUILDING.txt
Normal file
|
@ -0,0 +1,585 @@
|
|||
================================================================================
|
||||
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 9.0 Servlet/JSP Container
|
||||
====================================================
|
||||
|
||||
This project contains the source code for Tomcat 9.0, a container that
|
||||
implements the Servlet 4.0, JSP 2.3, EL 3.0, WebSocket 1.1 and JASPIC 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 Development Kit
|
||||
|
||||
1. If the JDK is already installed, skip to (2).
|
||||
|
||||
2. Download a version 11 or later of Java Development Kit (JDK) release (use
|
||||
the latest update available for your chosen version) from one of:
|
||||
|
||||
http://www.oracle.com/technetwork/java/javase/downloads/index.html
|
||||
http://openjdk.java.net/install/index.html
|
||||
or another JDK vendor.
|
||||
|
||||
Note regarding later versions of Java:
|
||||
|
||||
As documented elsewhere, one of components in Apache Tomcat includes
|
||||
a private copy of the Apache Commons DBCP 2 library.
|
||||
|
||||
The JDBC interfaces implemented by DBCP frequently change in non-backwards
|
||||
compatible ways between versions of the Java SE specification. Therefore,
|
||||
it is likely that DBCP 2 will only compile with the specific version of Java
|
||||
listed above and that compilation will fail if a later version of Java is
|
||||
used.
|
||||
|
||||
See Apache Commons DBCP 2 project web site for more details on
|
||||
available versions of the library and its requirements,
|
||||
|
||||
https://commons.apache.org/dbcp/
|
||||
|
||||
3. Install the 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.
|
||||
|
||||
|
||||
(2) Install Apache Ant version 1.10.2 or later on your computer.
|
||||
|
||||
1. If Apache Ant version 1.10.2 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 9.0
|
||||
|
||||
(3.1) Checkout or obtain the source code for Tomcat 9.0
|
||||
|
||||
Clone the source using git, then checkout a specific major branch or
|
||||
main 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-90.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=true
|
||||
proxy.host=proxy.domain
|
||||
proxy.port=8080
|
||||
proxy.user=username
|
||||
proxy.password=password
|
||||
|
||||
See Apache Ant documentation for the <setproxy> task for details.
|
||||
|
||||
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 9.0
|
||||
sources using your git 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.
|
||||
|
||||
Provided that Wine is available on non-Windows platforms, a full release
|
||||
build may be made on Windows, Linux or MacOS.
|
||||
|
||||
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 deactivated.
|
||||
|
||||
You will be prompted for the GPG passphrase when the release build
|
||||
starts, unless "gpg.passphrase" property is set.
|
||||
|
||||
2. If building the Windows installer
|
||||
|
||||
If running the build in a UAC enabled environment, building the Windows
|
||||
installer requires elevated privileges. The simplest way to do this is to
|
||||
open the command prompt used for the build with the "Run as administrator"
|
||||
option.
|
||||
|
||||
3. Configure the code signing service
|
||||
|
||||
ASF committers performing official releases will need to configure the code
|
||||
signing service so that the Windows installer is signed during the build
|
||||
process. The following properties need to be added to the build.properties
|
||||
file:
|
||||
|
||||
# Location of GPG executable (used only for releases)
|
||||
gpg.exec=/path/to/gpg
|
||||
# Code signing of Windows installer
|
||||
do.codesigning=true
|
||||
codesigning.storepass=request-via-pmc
|
||||
|
||||
Release managers will be provided with the necessary credentials by the PMC.
|
||||
|
||||
4. Build the release:
|
||||
|
||||
Apache Tomcat releases are fully reproducible.
|
||||
|
||||
Release managers producing release builds must follow the following
|
||||
procedure:
|
||||
|
||||
cd ${tomcat.source}
|
||||
ant pre-release
|
||||
ant release
|
||||
git commit -a -m "Tag <version-number>"
|
||||
git tag <vesion-number>
|
||||
git push origin <version-number>
|
||||
ant release
|
||||
git reset --hard HEAD~1
|
||||
|
||||
The output from either 'ant release' call may be uploaded as the official
|
||||
release since they will be identical. It is recommended that the output from
|
||||
the second call is used.
|
||||
|
||||
Anyone wishing to reproduce an official build must do so from an official
|
||||
source release. The build tool chain defined in build.properties.release
|
||||
must be used to reproduce an official build. Once unpacked to
|
||||
${tomcat.source}, the following steps must be followed
|
||||
|
||||
cd ${tomcat.source}
|
||||
ant release
|
||||
|
||||
Following the same steps without using the defined build tool chain will
|
||||
create a release that is functionally the same as an official release but
|
||||
not bit for bit identical.
|
||||
|
||||
|
||||
(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: NIO, NIO2 and APR. (If you are not
|
||||
familiar with Tomcat connectors, see config/http.html in documentation for
|
||||
details).
|
||||
|
||||
The 3 runs are activated and deactivated individually by the following
|
||||
properties, which all are "true" by default:
|
||||
|
||||
execute.test.nio=true
|
||||
execute.test.nio2=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/
|
||||
|
||||
If you are on Windows and want to test the APR connector you can put the
|
||||
tcnative-1.dll file into ${tomcat.source}/bin/ and it will be copied
|
||||
into the above directory when the build runs.
|
||||
|
||||
The unit tests include tests of the clustering functionality which require
|
||||
multicast to be enabled. There is a simple application provided in the Tomcat
|
||||
test source (org.apache.catalina.tribes.TesterMulticast) that can be used to
|
||||
check if a machine supports multicast. Notes on enabling multicast for different
|
||||
operating systems are provided in the Javadoc for that 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 deactivates generation of separate report
|
||||
files:
|
||||
|
||||
junit.formatter.usefile=false
|
||||
|
||||
5. It is possible to speed up testing by letting JUnit to run several
|
||||
tests in parallel.
|
||||
|
||||
This is configured by setting "test.threads" property. The recommended
|
||||
value is one thread per core.
|
||||
|
||||
6. 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 https://cobertura.github.io/cobertura/ for details.
|
||||
Using it during Tomcat build is optional and is off by default.
|
||||
|
||||
Cobertura can be enabled using the following properties:
|
||||
|
||||
test.cobertura=true
|
||||
test.threads=1
|
||||
|
||||
Using Cobertura currently requires setting test.threads configuration
|
||||
property to the value of 1. Setting that property to a different value
|
||||
will deactivate code coverage.
|
||||
|
||||
The report files by default are written to
|
||||
|
||||
output/coverage
|
||||
|
||||
7. 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 deactivated by using the
|
||||
following property:
|
||||
|
||||
test.excludePerformance=true
|
||||
|
||||
8. 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
|
||||
|
||||
9. 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
|
||||
|
||||
10. By default the output of unit tests is sent to the console and can be
|
||||
quite verbose. The output can be deactivated by setting the property:
|
||||
|
||||
test.verbose=false
|
||||
|
||||
(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) SpotBugs
|
||||
|
||||
NOTE: SpotBugs is licensed under LGPL. Using SpotBugs during Tomcat build is
|
||||
optional and is off by default.
|
||||
|
||||
See https://spotbugs.github.io/ for more information.
|
||||
|
||||
To enable SpotBugs, add the following property to build.properties file:
|
||||
|
||||
execute.spotbugs=true
|
||||
|
||||
To compile Tomcat classes and generate a SpotBugs report, call the
|
||||
"spotbugs" target. For example:
|
||||
|
||||
cd ${tomcat.source}
|
||||
ant -Dexecute.spotbugs=true spotbugs
|
||||
|
||||
The report file by default is written to
|
||||
|
||||
output/spotbugs
|
||||
|
||||
|
||||
(8.3) 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
|
21
tomcatfiles/docs/META-INF/context.xml
Normal file
|
@ -0,0 +1,21 @@
|
|||
<?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.
|
||||
-->
|
||||
<Context antiResourceLocking="false" >
|
||||
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
|
||||
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
|
||||
</Context>
|
174
tomcatfiles/docs/RELEASE-NOTES.txt
Normal file
|
@ -0,0 +1,174 @@
|
|||
================================================================================
|
||||
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 9.0.76
|
||||
Release Notes
|
||||
|
||||
|
||||
=========
|
||||
CONTENTS:
|
||||
=========
|
||||
|
||||
* Dependency Changes
|
||||
* API Stability
|
||||
* Bundled APIs
|
||||
* Web application reloading and static fields in shared libraries
|
||||
* Security manager URLs
|
||||
* Symlinking static resources
|
||||
* Viewing the Tomcat Change Log
|
||||
* Cryptographic software notice
|
||||
* When all else fails
|
||||
|
||||
|
||||
===================
|
||||
Dependency Changes:
|
||||
===================
|
||||
Tomcat 9.0 is designed to run on Java 8 and later.
|
||||
|
||||
|
||||
==============
|
||||
API Stability:
|
||||
==============
|
||||
|
||||
The public interfaces for the following classes are fixed and will not be
|
||||
changed at all during the remaining lifetime of the 9.x series:
|
||||
- All classes in the javax namespace
|
||||
|
||||
The public interfaces for the following classes may be added to in order to
|
||||
resolve bugs and/or add new features. No existing interface method will be
|
||||
removed or changed although it may be deprecated.
|
||||
- org.apache.catalina.* (excluding sub-packages)
|
||||
|
||||
Note: As Tomcat 9 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.
|
||||
|
||||
|
||||
=============
|
||||
Bundled APIs:
|
||||
=============
|
||||
A standard installation of Tomcat 9.0 makes all of the following APIs available
|
||||
for use by web applications (by placing them in "lib"):
|
||||
* annotations-api.jar (Annotations package)
|
||||
* catalina.jar (Tomcat Catalina implementation)
|
||||
* catalina-ant.jar (Tomcat Catalina Ant tasks)
|
||||
* catalina-ha.jar (High availability package)
|
||||
* catalina-ssi.jar (Server-side Includes module)
|
||||
* catalina-storeconfig.jar (Generation of XML configuration from current state)
|
||||
* catalina-tribes.jar (Group communication)
|
||||
* ecj-4.20.jar (Eclipse JDT Java compiler)
|
||||
* el-api.jar (EL 3.0 API)
|
||||
* jasper.jar (Jasper 2 Compiler and Runtime)
|
||||
* jasper-el.jar (Jasper 2 EL implementation)
|
||||
* jsp-api.jar (JSP 2.3 API)
|
||||
* servlet-api.jar (Servlet 4.0 API)
|
||||
* 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 2)
|
||||
* tomcat-jdbc.jar (Tomcat's database connection pooling solution)
|
||||
* tomcat-jni.jar (Interface to the native component of the APR/native connector)
|
||||
* tomcat-util.jar (Various utilities)
|
||||
* tomcat-websocket.jar (WebSocket 1.1 implementation)
|
||||
* 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 appropriate
|
||||
feature for your JVM. For Java <= 8 use the endorsed standards override
|
||||
feature. The default configuration defines JARs located in "endorsed" as endorsed.
|
||||
For Java 9+ use the upgradeable modules feature.
|
||||
|
||||
|
||||
================================================================
|
||||
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).
|
||||
|
||||
|
||||
======================
|
||||
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 deactivate
|
||||
the check.
|
||||
|
||||
|
||||
==============================
|
||||
Viewing the Tomcat Change Log:
|
||||
==============================
|
||||
The full change log is available from https://tomcat.apache.org and is also
|
||||
included in the documentation web application.
|
||||
|
||||
|
||||
=============================
|
||||
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/
|
477
tomcatfiles/docs/RUNNING.txt
Normal file
|
@ -0,0 +1,477 @@
|
|||
================================================================================
|
||||
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 9.0 Servlet/JSP Container
|
||||
===================================================
|
||||
|
||||
Apache Tomcat 9.0 requires a Java Standard Edition Runtime
|
||||
Environment (JRE) version 8 or later.
|
||||
|
||||
=============================
|
||||
Running With JRE 8 Or Later
|
||||
=============================
|
||||
|
||||
(1) Download and Install a Java SE Runtime Environment (JRE)
|
||||
|
||||
(1.1) Download a Java SE Runtime Environment (JRE),
|
||||
release version 8 or later, from
|
||||
http://www.oracle.com/technetwork/java/javase/downloads/index.html
|
||||
|
||||
(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.
|
||||
|
||||
|
||||
(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 activate
|
||||
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\jre8"
|
||||
exit /b 0
|
||||
|
||||
On *nix, $CATALINA_BASE/bin/setenv.sh:
|
||||
|
||||
JRE_HOME=/usr/java/latest
|
||||
CATALINA_PID="/run/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.
|
||||
This is only supported for Java <= 8.
|
||||
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\.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-9.0-doc/apr.html
|
||||
|
||||
* Documentation for the HTTP and AJP protocol connectors in the Tomcat
|
||||
Configuration Reference
|
||||
|
||||
https://tomcat.apache.org/tomcat-9.0-doc/config/http.html
|
||||
|
||||
https://tomcat.apache.org/tomcat-9.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 deactivate Apache Tomcat Native library:
|
||||
|
||||
- To deactivate 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-9.0-doc/setup.html
|
||||
|
||||
* Windows Service How-To
|
||||
|
||||
https://tomcat.apache.org/tomcat-9.0-doc/windows-service-howto.html
|
||||
|
||||
The binary files of Apache Commons Daemon in Apache Tomcat distributions
|
||||
for Windows are named:
|
||||
|
||||
- "tomcat9.exe"
|
||||
- "tomcat9w.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 9.0
|
||||
in parallel, you have to further rename those files, using the same naming
|
||||
scheme.
|
44
tomcatfiles/docs/WEB-INF/jsp/403.jsp
Normal file
|
@ -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.
|
||||
--%>
|
||||
<%@ page session="false" trimDirectiveWhitespaces="true" %>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>403 Access Denied</title>
|
||||
<style type="text/css">
|
||||
<!--
|
||||
BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;font-size:12px;}
|
||||
H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;}
|
||||
PRE, TT {border: 1px dotted #525D76}
|
||||
A {color : black;}A.name {color : black;}
|
||||
-->
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>403 Access Denied</h1>
|
||||
<p>
|
||||
You are not authorized to view this page.
|
||||
</p>
|
||||
<p>
|
||||
By default the documentation web application is only accessible from a browser
|
||||
running on the same machine as Tomcat. If you wish to modify this
|
||||
restriction, you'll need to edit the documentation web applications's
|
||||
<tt>context.xml</tt> file.
|
||||
</p>
|
||||
</body>
|
||||
|
||||
</html>
|
35
tomcatfiles/docs/WEB-INF/web.xml
Normal file
|
@ -0,0 +1,35 @@
|
|||
<?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.
|
||||
-->
|
||||
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
|
||||
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
|
||||
version="4.0"
|
||||
metadata-complete="true">
|
||||
|
||||
<display-name>Tomcat Documentation</display-name>
|
||||
<description>
|
||||
Tomcat Documentation.
|
||||
</description>
|
||||
|
||||
<error-page>
|
||||
<error-code>403</error-code>
|
||||
<location>/WEB-INF/jsp/403.jsp</location>
|
||||
</error-page>
|
||||
|
||||
</web-app>
|
55
tomcatfiles/docs/aio.html
Normal file
|
@ -0,0 +1,55 @@
|
|||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="./images/docs-stylesheet.css" rel="stylesheet" type="text/css"><title>Apache Tomcat 9 (9.0.76) - Advanced IO and Tomcat</title><meta name="author" content="Remy Maucherat"></head><body><div id="wrapper"><header><div id="header"><div><div><div class="logo noPrint"><a href="https://tomcat.apache.org/"><img alt="Tomcat Home" src="./images/tomcat.png"></a></div><div style="height: 1px;"></div><div class="asfLogo noPrint"><a href="https://www.apache.org/" target="_blank"><img src="./images/asf-logo.svg" alt="The Apache Software Foundation" style="width: 266px; height: 83px;"></a></div><h1>Apache Tomcat 9</h1><div class="versionInfo">
|
||||
Version 9.0.76,
|
||||
<time datetime="2023-06-05">Jun 5 2023</time></div><div style="height: 1px;"></div><div style="clear: left;"></div></div></div></div></header><div id="middle"><div><div id="mainLeft" class="noprint"><div><nav><div><h2>Links</h2><ul><li><a href="index.html">Docs Home</a></li><li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul></div><div><h2>User Guide</h2><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="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li><li><a href="rewrite.html">33) Rewrite</a></li><li><a href="cdi.html">34) CDI 2 and JAX-RS</a></li><li><a href="graal.html">35) AOT/GraalVM Support</a></li></ul></div><div><h2>Reference</h2><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 4.0 Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.3 Javadocs</a></li><li><a href="elapi/index.html">EL 3.0 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="jaspicapi/index.html">JASPIC 1.1 Javadocs</a></li><li><a href="annotationapi/index.html">Common Annotations 1.3 Javadocs</a></li><li><a href="https://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul></div><div><h2>Apache Tomcat Development</h2><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/Tomcat+Versions">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></div></nav></div></div><div id="mainRight"><div id="content"><h2>Advanced IO and Tomcat</h2><h3 id="Table_of_Contents">Table of Contents</h3><div class="text">
|
||||
<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Asynchronous_writes">Asynchronous writes</a></li></ul>
|
||||
</div><h3 id="Introduction">Introduction</h3><div class="text">
|
||||
|
||||
<p>
|
||||
<b>IMPORTANT NOTE: Usage of these features requires using the
|
||||
HTTP connectors. The AJP connectors do not support them.</b>
|
||||
</p>
|
||||
|
||||
</div><h3 id="Asynchronous_writes">Asynchronous writes</h3><div class="text">
|
||||
|
||||
<p>
|
||||
When using HTTP connectors (based on APR or NIO/NIO2),
|
||||
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>
|
||||
<p>
|
||||
In addition to setting these parameters it is necessary to set the content-length header.
|
||||
Tomcat will not do that for you, since you may have already written data to the output stream.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Note that the use of sendfile will disable any compression that Tomcat may
|
||||
otherwise have performed on the response.
|
||||
</p>
|
||||
|
||||
</div></div></div></div></div><footer><div id="footer">
|
||||
Copyright © 1999-2023, The Apache Software Foundation
|
||||
</div></footer></div></body></html>
|
34
tomcatfiles/docs/annotationapi/index.html
Normal file
|
@ -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-9.0-doc/">
|
||||
documentation bundle</a>.
|
||||
|
||||
</body>
|
||||
</html>
|
34
tomcatfiles/docs/api/index.html
Normal file
|
@ -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>
|
||||
|
||||
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-9.0-doc/">
|
||||
documentation bundle</a>.
|
||||
|
||||
</body>
|
||||
</html>
|
508
tomcatfiles/docs/appdev/build.xml.txt
Normal file
|
@ -0,0 +1,508 @@
|
|||
<!--
|
||||
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 they 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 they 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?
|
||||
|
||||
-->
|
||||
|
||||
<property name="compile.debug" value="true"/>
|
||||
<property name="compile.deprecation" value="false"/>
|
||||
|
||||
|
||||
|
||||
<!-- ==================== 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}">
|
||||
<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>
|
202
tomcatfiles/docs/appdev/deployment.html
Normal file
|
@ -0,0 +1,202 @@
|
|||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="../images/docs-stylesheet.css" rel="stylesheet" type="text/css"><title>Application Developer's Guide (9.0.76) - Deployment</title><meta name="author" content="Craig R. McClanahan"></head><body><div id="wrapper"><header><div id="header"><div><div><div class="logo noPrint"><a href="https://tomcat.apache.org/"><img alt="Tomcat Home" src="../images/tomcat.png"></a></div><div style="height: 1px;"></div><div class="asfLogo noPrint"><a href="https://www.apache.org/" target="_blank"><img src="../images/asf-logo.svg" alt="The Apache Software Foundation" style="width: 266px; height: 83px;"></a></div><h1>Application Developer's Guide</h1><div class="versionInfo">
|
||||
Version 9.0.76,
|
||||
<time datetime="2023-06-05">Jun 5 2023</time></div><div style="height: 1px;"></div><div style="clear: left;"></div></div></div></div></header><div id="middle"><div><div id="mainLeft" class="noprint"><div><nav><div><h2>Links</h2><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://cwiki.apache.org/confluence/display/TOMCAT/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul></div><div><h2>Contents</h2><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></div></nav></div></div><div id="mainRight"><div id="content"><h2>Deployment</h2><h3 id="Table_of_Contents">Table of Contents</h3><div class="text">
|
||||
<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>
|
||||
</div><h3 id="Background">Background</h3><div class="text">
|
||||
|
||||
<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, they
|
||||
assign 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>
|
||||
|
||||
</div><h3 id="Standard_Directory_Layout">Standard Directory Layout</h3><div class="text">
|
||||
|
||||
<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>
|
||||
|
||||
</div><h3 id="Shared_Library_Files">Shared Library Files</h3><div class="text">
|
||||
|
||||
<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 4.0</em> and <em>JSP 2.3</em> APIs that are fundamental
|
||||
to writing servlets and JavaServer Pages.<br><br></li>
|
||||
</ul>
|
||||
|
||||
</div><h3 id="Web_Application_Deployment_Descriptor">Web Application Deployment Descriptor</h3><div class="text">
|
||||
|
||||
<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>
|
||||
|
||||
</div><h3 id="Tomcat_Context_Descriptor">Tomcat Context Descriptor</h3><div class="text">
|
||||
|
||||
<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>
|
||||
|
||||
</div><h3 id="Deployment_With_Tomcat">Deployment With Tomcat</h3><div class="text">
|
||||
|
||||
<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>
|
||||
|
||||
</div></div></div></div></div><footer><div id="footer">
|
||||
Copyright © 1999-2023, The Apache Software Foundation
|
||||
</div></footer></div></body></html>
|
45
tomcatfiles/docs/appdev/index.html
Normal file
|
@ -0,0 +1,45 @@
|
|||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="../images/docs-stylesheet.css" rel="stylesheet" type="text/css"><title>Application Developer's Guide (9.0.76) - Table of Contents</title><meta name="author" content="Craig R. McClanahan"></head><body><div id="wrapper"><header><div id="header"><div><div><div class="logo noPrint"><a href="https://tomcat.apache.org/"><img alt="Tomcat Home" src="../images/tomcat.png"></a></div><div style="height: 1px;"></div><div class="asfLogo noPrint"><a href="https://www.apache.org/" target="_blank"><img src="../images/asf-logo.svg" alt="The Apache Software Foundation" style="width: 266px; height: 83px;"></a></div><h1>Application Developer's Guide</h1><div class="versionInfo">
|
||||
Version 9.0.76,
|
||||
<time datetime="2023-06-05">Jun 5 2023</time></div><div style="height: 1px;"></div><div style="clear: left;"></div></div></div></div></header><div id="middle"><div><div id="mainLeft" class="noprint"><div><nav><div><h2>Links</h2><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://cwiki.apache.org/confluence/display/TOMCAT/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul></div><div><h2>Contents</h2><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></div></nav></div></div><div id="mainRight"><div id="content"><h2>Table of Contents</h2><h3 id="Preface">Preface</h3><div class="text">
|
||||
|
||||
<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>
|
||||
|
||||
</div><h3 id="Table_of_Contents">Table of Contents</h3><div class="text">
|
||||
|
||||
<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>
|
||||
|
||||
</div></div></div></div></div><footer><div id="footer">
|
||||
Copyright © 1999-2023, The Apache Software Foundation
|
||||
</div></footer></div></body></html>
|
71
tomcatfiles/docs/appdev/installation.html
Normal file
|
@ -0,0 +1,71 @@
|
|||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="../images/docs-stylesheet.css" rel="stylesheet" type="text/css"><title>Application Developer's Guide (9.0.76) - Installation</title><meta name="author" content="Craig R. McClanahan"><meta name="author" content="Yoav Shapira"></head><body><div id="wrapper"><header><div id="header"><div><div><div class="logo noPrint"><a href="https://tomcat.apache.org/"><img alt="Tomcat Home" src="../images/tomcat.png"></a></div><div style="height: 1px;"></div><div class="asfLogo noPrint"><a href="https://www.apache.org/" target="_blank"><img src="../images/asf-logo.svg" alt="The Apache Software Foundation" style="width: 266px; height: 83px;"></a></div><h1>Application Developer's Guide</h1><div class="versionInfo">
|
||||
Version 9.0.76,
|
||||
<time datetime="2023-06-05">Jun 5 2023</time></div><div style="height: 1px;"></div><div style="clear: left;"></div></div></div></div></header><div id="middle"><div><div id="mainLeft" class="noprint"><div><nav><div><h2>Links</h2><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://cwiki.apache.org/confluence/display/TOMCAT/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul></div><div><h2>Contents</h2><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></div></nav></div></div><div id="mainRight"><div id="content"><h2>Installation</h2><h3 id="Installation">Installation</h3><div class="text">
|
||||
|
||||
<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>
|
||||
|
||||
<div class="subsection"><h4 id="JDK">JDK</h4><div class="text">
|
||||
|
||||
<p>Tomcat 9.0 was designed to run on Java SE 8 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>
|
||||
|
||||
</div></div>
|
||||
|
||||
<div class="subsection"><h4 id="Tomcat">Tomcat</h4><div class="text">
|
||||
|
||||
<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 9. 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>
|
||||
|
||||
</div></div>
|
||||
|
||||
|
||||
<div class="subsection"><h4 id="Ant">Ant</h4><div class="text">
|
||||
|
||||
<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>
|
||||
|
||||
</div></div>
|
||||
|
||||
|
||||
<div class="subsection"><h4 id="Source_Code_Control">Source Code Control</h4><div class="text">
|
||||
|
||||
<p>Besides the required tools described above, you are strongly encouraged
|
||||
to download and install a <em>source code control</em> system, such as Git,
|
||||
Subversion, CVS or one of the many alternatives. You will need appropriate
|
||||
client tools to check out source code files, and check in modified versions and,
|
||||
depending on the tool and hosting option you choose, you may need to obtain and
|
||||
install server software or sign up for an account with a cloud provider.</p>
|
||||
|
||||
<p>Detailed instructions for installing and using source code control
|
||||
applications is beyond the scope of this manual.</p>
|
||||
|
||||
</div></div>
|
||||
|
||||
|
||||
</div></div></div></div></div><footer><div id="footer">
|
||||
Copyright © 1999-2023, The Apache Software Foundation
|
||||
</div></footer></div></body></html>
|
58
tomcatfiles/docs/appdev/introduction.html
Normal file
|
@ -0,0 +1,58 @@
|
|||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="../images/docs-stylesheet.css" rel="stylesheet" type="text/css"><title>Application Developer's Guide (9.0.76) - Introduction</title><meta name="author" content="Craig R. McClanahan"></head><body><div id="wrapper"><header><div id="header"><div><div><div class="logo noPrint"><a href="https://tomcat.apache.org/"><img alt="Tomcat Home" src="../images/tomcat.png"></a></div><div style="height: 1px;"></div><div class="asfLogo noPrint"><a href="https://www.apache.org/" target="_blank"><img src="../images/asf-logo.svg" alt="The Apache Software Foundation" style="width: 266px; height: 83px;"></a></div><h1>Application Developer's Guide</h1><div class="versionInfo">
|
||||
Version 9.0.76,
|
||||
<time datetime="2023-06-05">Jun 5 2023</time></div><div style="height: 1px;"></div><div style="clear: left;"></div></div></div></div></header><div id="middle"><div><div id="mainLeft" class="noprint"><div><nav><div><h2>Links</h2><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://cwiki.apache.org/confluence/display/TOMCAT/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul></div><div><h2>Contents</h2><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></div></nav></div></div><div id="mainRight"><div id="content"><h2>Introduction</h2><h3 id="Overview">Overview</h3><div class="text">
|
||||
|
||||
<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>
|
||||
|
||||
</div><h3 id="Links">Links</h3><div class="text">
|
||||
|
||||
<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/index2.html">https://jcp.org/aboutJava/communityprocess/mrel/jsr245/index2.html</a> -
|
||||
<i>JavaServer Pages (JSP) Specification, Version 2.3</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/final/jsr369/index.html">https://jcp.org/aboutJava/communityprocess/final/jsr369/index.html</a> -
|
||||
<i>Servlet API Specification, Version 4.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>
|
||||
|
||||
</div></div></div></div></div><footer><div id="footer">
|
||||
Copyright © 1999-2023, The Apache Software Foundation
|
||||
</div></footer></div></body></html>
|
259
tomcatfiles/docs/appdev/processes.html
Normal file
|
@ -0,0 +1,259 @@
|
|||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="../images/docs-stylesheet.css" rel="stylesheet" type="text/css"><title>Application Developer's Guide (9.0.76) - Development Processes</title><meta name="author" content="Craig R. McClanahan"></head><body><div id="wrapper"><header><div id="header"><div><div><div class="logo noPrint"><a href="https://tomcat.apache.org/"><img alt="Tomcat Home" src="../images/tomcat.png"></a></div><div style="height: 1px;"></div><div class="asfLogo noPrint"><a href="https://www.apache.org/" target="_blank"><img src="../images/asf-logo.svg" alt="The Apache Software Foundation" style="width: 266px; height: 83px;"></a></div><h1>Application Developer's Guide</h1><div class="versionInfo">
|
||||
Version 9.0.76,
|
||||
<time datetime="2023-06-05">Jun 5 2023</time></div><div style="height: 1px;"></div><div style="clear: left;"></div></div></div></div></header><div id="middle"><div><div id="mainLeft" class="noprint"><div><nav><div><h2>Links</h2><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://cwiki.apache.org/confluence/display/TOMCAT/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul></div><div><h2>Contents</h2><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></div></nav></div></div><div id="mainRight"><div id="content"><h2>Development Processes</h2><h3 id="Table_of_Contents">Table of Contents</h3><div class="text">
|
||||
<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>
|
||||
</div><h3 id="Development_Processes">Development Processes</h3><div class="text">
|
||||
|
||||
<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 do not assume any particular source code control
|
||||
system but simply identify when and what source code control tasks are typically
|
||||
performed. You will need to idenitfy the appropriate source code control
|
||||
commands for your system.</p>
|
||||
|
||||
|
||||
<div class="subsection"><h4 id="One-Time_Setup_of_Ant_and_Tomcat_for_Development">One-Time Setup of Ant and Tomcat for Development</h4><div class="text">
|
||||
|
||||
<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 then. 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>
|
||||
|
||||
</div></div>
|
||||
|
||||
|
||||
<div class="subsection"><h4 id="Create_Project_Source_Code_Directory">Create Project Source Code Directory</h4><div class="text">
|
||||
|
||||
<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 source code
|
||||
control system. This might be done by a series of commands like this:</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 or svn or git ... <-- Add this structure to the appropriate repository
|
||||
</code></pre></div>
|
||||
|
||||
<p>To verify that the project was created correctly in the source code control
|
||||
repository, you may wish to check out the project to a separate directory and
|
||||
confirm that all the expected contents are present.</p>
|
||||
|
||||
<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 or svn or git ... <-- Add this file to the repository
|
||||
</code></pre></div>
|
||||
|
||||
<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 installation directory
|
||||
catalina.home=/usr/local/apache-tomcat-9.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 source code control 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 or svn or git ... <-- Add this file to the repository
|
||||
</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://cwiki.apache.org/confluence/display/TOMCAT/Specifications">Servlet Specification.</a>
|
||||
|
||||
</div></div>
|
||||
|
||||
|
||||
<div class="subsection"><h4 id="Edit_Source_Code_and_Pages">Edit Source Code and Pages</h4><div class="text">
|
||||
|
||||
<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>You should regularly refresh your development directory to reflect the
|
||||
work performed by other developers.</p>
|
||||
|
||||
<p>To create a new file, go to the appropriate directory and create the file.
|
||||
When you are satisfied with its contents (after building and testing is
|
||||
successful), add 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
|
||||
... build and test the application ...
|
||||
cvs or svn or git ... <-- Add this file to the repository
|
||||
</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 file, don't forget to add it to the source code
|
||||
control system.</p>
|
||||
|
||||
<p>To edit an existing source file, you will generally just start editing
|
||||
and testing, then commit the changed file when everything works.</p>
|
||||
|
||||
</div></div>
|
||||
|
||||
|
||||
<div class="subsection"><h4 id="Build_the_Web_Application">Build the Web Application</h4><div class="text">
|
||||
|
||||
<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>
|
||||
|
||||
</div></div>
|
||||
|
||||
|
||||
<div class="subsection"><h4 id="Test_Your_Web_Application">Test Your Web Application</h4><div class="text">
|
||||
|
||||
<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 your chosen source code control system) 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>
|
||||
|
||||
</div></div>
|
||||
|
||||
|
||||
<div class="subsection"><h4 id="Creating_a_Release">Creating a Release</h4><div class="text">
|
||||
|
||||
<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 source code control system to tag the current state of the code
|
||||
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>
|
||||
|
||||
</div></div>
|
||||
|
||||
|
||||
</div></div></div></div></div><footer><div id="footer">
|
||||
Copyright © 1999-2023, The Apache Software Foundation
|
||||
</div></footer></div></body></html>
|
508
tomcatfiles/docs/appdev/sample/build.xml
Normal file
|
@ -0,0 +1,508 @@
|
|||
<!--
|
||||
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 they 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 they 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?
|
||||
|
||||
-->
|
||||
|
||||
<property name="compile.debug" value="true"/>
|
||||
<property name="compile.deprecation" value="false"/>
|
||||
|
||||
|
||||
|
||||
<!-- ==================== 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}">
|
||||
<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>
|
17
tomcatfiles/docs/appdev/sample/docs/README.txt
Normal file
|
@ -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.
|
55
tomcatfiles/docs/appdev/sample/index.html
Normal file
|
@ -0,0 +1,55 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
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 charset="UTF-8" />
|
||||
<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_BASE/webapps</b> directory. A default Tomcat install
|
||||
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 which 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>
|
||||
<p>
|
||||
Note: <b>CATALINA_BASE</b> is usually the directory in which you
|
||||
unpacked the Tomcat distribution. For more information on
|
||||
<b>CATALINA_HOME</b>, <b>CATALINA_BASE</b> and the difference between
|
||||
them see <b>RUNNING.txt</b> in the directory you unpacked your Tomcat
|
||||
distribution.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
BIN
tomcatfiles/docs/appdev/sample/sample.war
Normal file
83
tomcatfiles/docs/appdev/sample/src/mypackage/Hello.java
Normal file
|
@ -0,0 +1,83 @@
|
|||
/*
|
||||
* 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");
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
try (PrintWriter writer = response.getWriter()) {
|
||||
|
||||
writer.println("<!DOCTYPE html><html>");
|
||||
writer.println("<head>");
|
||||
writer.println("<meta charset=\"UTF-8\" />");
|
||||
writer.println("<title>Sample Application Servlet Page</title>");
|
||||
writer.println("</head>");
|
||||
writer.println("<body>");
|
||||
|
||||
|
||||
writer.println("<div style=\"float: left; padding: 10px;\">");
|
||||
writer.println("<img src=\"images/tomcat.gif\" alt=\"\" />");
|
||||
writer.println("</div>");
|
||||
writer.println("<h1>Sample Application Servlet</h1>");
|
||||
writer.println("<p>");
|
||||
writer.println("This is the output of a servlet that is part of");
|
||||
writer.println("the Hello, World application.");
|
||||
writer.println("</p>");
|
||||
|
||||
writer.println("</body>");
|
||||
writer.println("</html>");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
40
tomcatfiles/docs/appdev/sample/web/WEB-INF/web.xml
Normal file
|
@ -0,0 +1,40 @@
|
|||
<?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.
|
||||
-->
|
||||
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
|
||||
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
|
||||
version="4.0">
|
||||
|
||||
<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>
|
37
tomcatfiles/docs/appdev/sample/web/hello.jsp
Normal file
|
@ -0,0 +1,37 @@
|
|||
<%--
|
||||
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.
|
||||
--%>
|
||||
<%@ page session="false" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>Sample Application JSP Page</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div style="float: left; padding: 10px;">
|
||||
<img src="images/tomcat.gif" alt="" />
|
||||
</div>
|
||||
<h1>Sample Application JSP Page</h1>
|
||||
This is the output of a JSP page that is part of the Hello, World
|
||||
application.
|
||||
|
||||
|
||||
<%= new String("Hello!") %>
|
||||
|
||||
</body>
|
||||
</html>
|
BIN
tomcatfiles/docs/appdev/sample/web/images/tomcat.gif
Normal file
After Width: | Height: | Size: 2.0 KiB |
39
tomcatfiles/docs/appdev/sample/web/index.html
Normal file
|
@ -0,0 +1,39 @@
|
|||
<!DOCTYPE html><!--
|
||||
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 charset="UTF-8" />
|
||||
<title>Sample "Hello, World" Application</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div style="float: left; padding: 10px;">
|
||||
<img src="images/tomcat.gif" alt="" />
|
||||
</div>
|
||||
<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.
|
||||
|
||||
<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>
|
251
tomcatfiles/docs/appdev/source.html
Normal file
|
@ -0,0 +1,251 @@
|
|||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="../images/docs-stylesheet.css" rel="stylesheet" type="text/css"><title>Application Developer's Guide (9.0.76) - Source Organization</title><meta name="author" content="Craig R. McClanahan"></head><body><div id="wrapper"><header><div id="header"><div><div><div class="logo noPrint"><a href="https://tomcat.apache.org/"><img alt="Tomcat Home" src="../images/tomcat.png"></a></div><div style="height: 1px;"></div><div class="asfLogo noPrint"><a href="https://www.apache.org/" target="_blank"><img src="../images/asf-logo.svg" alt="The Apache Software Foundation" style="width: 266px; height: 83px;"></a></div><h1>Application Developer's Guide</h1><div class="versionInfo">
|
||||
Version 9.0.76,
|
||||
<time datetime="2023-06-05">Jun 5 2023</time></div><div style="height: 1px;"></div><div style="clear: left;"></div></div></div></div></header><div id="middle"><div><div id="mainLeft" class="noprint"><div><nav><div><h2>Links</h2><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://cwiki.apache.org/confluence/display/TOMCAT/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul></div><div><h2>Contents</h2><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></div></nav></div></div><div id="mainRight"><div id="content"><h2>Source Organization</h2><h3 id="Table_of_Contents">Table of Contents</h3><div class="text">
|
||||
<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>
|
||||
</div><h3 id="Directory_Structure">Directory Structure</h3><div class="text">
|
||||
|
||||
<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://cwiki.apache.org/confluence/display/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>
|
||||
|
||||
<div class="subsection"><h4 id="External_Dependencies">External Dependencies</h4><div class="text">
|
||||
|
||||
<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>
|
||||
|
||||
</div></div>
|
||||
|
||||
</div><h3 id="Source_Code_Control">Source Code Control</h3><div class="text">
|
||||
|
||||
<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. 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. Source
|
||||
code control systems typically provide mechanisms to ignore these directories
|
||||
(Git uses a <code>.gitignore</code> file, Subversion uses the
|
||||
<code>svn:ignore</code> property, CVS uses a <code>.cvsignore</code> file, etc.)
|
||||
You should configure your source code control system to ignore:</p>
|
||||
<ul>
|
||||
<li>build</li>
|
||||
<li>dist</li>
|
||||
<li>build.properties</li>
|
||||
</ul>
|
||||
|
||||
<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.</p>
|
||||
|
||||
</div><h3 id="BUILD.XML_Configuration_File">BUILD.XML Configuration File</h3><div class="text">
|
||||
|
||||
<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>
|
||||
|
||||
</div></div></div></div></div><footer><div id="footer">
|
||||
Copyright © 1999-2023, The Apache Software Foundation
|
||||
</div></footer></div></body></html>
|
166
tomcatfiles/docs/appdev/web.xml.txt
Normal file
|
@ -0,0 +1,166 @@
|
|||
<?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.
|
||||
-->
|
||||
|
||||
<!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>webadmin</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>
|
131
tomcatfiles/docs/apr.html
Normal file
|
@ -0,0 +1,131 @@
|
|||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="./images/docs-stylesheet.css" rel="stylesheet" type="text/css"><title>Apache Tomcat 9 (9.0.76) - Apache Portable Runtime (APR) based Native library for Tomcat</title><meta name="author" content="Remy Maucherat"></head><body><div id="wrapper"><header><div id="header"><div><div><div class="logo noPrint"><a href="https://tomcat.apache.org/"><img alt="Tomcat Home" src="./images/tomcat.png"></a></div><div style="height: 1px;"></div><div class="asfLogo noPrint"><a href="https://www.apache.org/" target="_blank"><img src="./images/asf-logo.svg" alt="The Apache Software Foundation" style="width: 266px; height: 83px;"></a></div><h1>Apache Tomcat 9</h1><div class="versionInfo">
|
||||
Version 9.0.76,
|
||||
<time datetime="2023-06-05">Jun 5 2023</time></div><div style="height: 1px;"></div><div style="clear: left;"></div></div></div></div></header><div id="middle"><div><div id="mainLeft" class="noprint"><div><nav><div><h2>Links</h2><ul><li><a href="index.html">Docs Home</a></li><li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul></div><div><h2>User Guide</h2><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="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li><li><a href="rewrite.html">33) Rewrite</a></li><li><a href="cdi.html">34) CDI 2 and JAX-RS</a></li><li><a href="graal.html">35) AOT/GraalVM Support</a></li></ul></div><div><h2>Reference</h2><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 4.0 Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.3 Javadocs</a></li><li><a href="elapi/index.html">EL 3.0 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="jaspicapi/index.html">JASPIC 1.1 Javadocs</a></li><li><a href="annotationapi/index.html">Common Annotations 1.3 Javadocs</a></li><li><a href="https://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul></div><div><h2>Apache Tomcat Development</h2><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/Tomcat+Versions">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></div></nav></div></div><div id="mainRight"><div id="content"><h2>Apache Portable Runtime (APR) based Native library for Tomcat</h2><h3 id="Table_of_Contents">Table of Contents</h3><div class="text">
|
||||
<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></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>
|
||||
</div><h3 id="Introduction">Introduction</h3><div class="text">
|
||||
|
||||
<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>
|
||||
|
||||
</div><h3 id="Installation">Installation</h3><div class="text">
|
||||
|
||||
<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>
|
||||
|
||||
<div class="subsection"><h4 id="Windows">Windows</h4><div class="text">
|
||||
|
||||
<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>
|
||||
|
||||
</div></div>
|
||||
|
||||
<div class="subsection"><h4 id="Linux">Linux</h4><div class="text">
|
||||
|
||||
<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 1.0.2+ 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>
|
||||
|
||||
</div></div>
|
||||
|
||||
</div><h3 id="APR_Components">APR Components</h3><div class="text">
|
||||
|
||||
<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>
|
||||
|
||||
</div><h3 id="APR_Lifecycle_Listener_Configuration">APR Lifecycle Listener Configuration</h3><div class="text">
|
||||
<p>See <a href="config/listeners.html#APR_Lifecycle_Listener_-_org.apache.catalina.core.AprLifecycleListener">the
|
||||
listener configuration</a>.</p>
|
||||
</div><h3 id="APR_Connectors_Configuration">APR Connectors Configuration</h3><div class="text">
|
||||
|
||||
<div class="subsection"><h4 id="HTTP/HTTPS">HTTP/HTTPS</h4><div class="text">
|
||||
|
||||
<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>
|
||||
|
||||
|
||||
</div></div>
|
||||
|
||||
<div class="subsection"><h4 id="AJP">AJP</h4><div class="text">
|
||||
|
||||
<p>For AJP configuration, see the <a href="config/ajp.html">AJP</a>
|
||||
connector configuration documentation.</p>
|
||||
|
||||
</div></div>
|
||||
|
||||
</div></div></div></div></div><footer><div id="footer">
|
||||
Copyright © 1999-2023, The Apache Software Foundation
|
||||
</div></footer></div></body></html>
|
35
tomcatfiles/docs/architecture/index.html
Normal file
|
@ -0,0 +1,35 @@
|
|||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="../images/docs-stylesheet.css" rel="stylesheet" type="text/css"><title>Apache Tomcat 9 Architecture (9.0.76) - Table of Contents</title><meta name="author" content="Yoav Shapira"></head><body><div id="wrapper"><header><div id="header"><div><div><div class="logo noPrint"><a href="https://tomcat.apache.org/"><img alt="Tomcat Home" src="../images/tomcat.png"></a></div><div style="height: 1px;"></div><div class="asfLogo noPrint"><a href="https://www.apache.org/" target="_blank"><img src="../images/asf-logo.svg" alt="The Apache Software Foundation" style="width: 266px; height: 83px;"></a></div><h1>Apache Tomcat 9 Architecture</h1><div class="versionInfo">
|
||||
Version 9.0.76,
|
||||
<time datetime="2023-06-05">Jun 5 2023</time></div><div style="height: 1px;"></div><div style="clear: left;"></div></div></div></div></header><div id="middle"><div><div id="mainLeft" class="noprint"><div><nav><div><h2>Links</h2><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Architecture Home</a></li><li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul></div><div><h2>Contents</h2><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></div></nav></div></div><div id="mainRight"><div id="content"><h2>Table of Contents</h2><h3 id="Preface">Preface</h3><div class="text">
|
||||
|
||||
<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>
|
||||
|
||||
</div><h3 id="Table_of_Contents">Table of Contents</h3><div class="text">
|
||||
|
||||
<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>
|
||||
|
||||
</div></div></div></div></div><footer><div id="footer">
|
||||
Copyright © 1999-2023, The Apache Software Foundation
|
||||
</div></footer></div></body></html>
|
104
tomcatfiles/docs/architecture/overview.html
Normal file
|
@ -0,0 +1,104 @@
|
|||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="../images/docs-stylesheet.css" rel="stylesheet" type="text/css"><title>Apache Tomcat 9 Architecture (9.0.76) - Architecture Overview</title><meta name="author" content="Yoav Shapira"></head><body><div id="wrapper"><header><div id="header"><div><div><div class="logo noPrint"><a href="https://tomcat.apache.org/"><img alt="Tomcat Home" src="../images/tomcat.png"></a></div><div style="height: 1px;"></div><div class="asfLogo noPrint"><a href="https://www.apache.org/" target="_blank"><img src="../images/asf-logo.svg" alt="The Apache Software Foundation" style="width: 266px; height: 83px;"></a></div><h1>Apache Tomcat 9 Architecture</h1><div class="versionInfo">
|
||||
Version 9.0.76,
|
||||
<time datetime="2023-06-05">Jun 5 2023</time></div><div style="height: 1px;"></div><div style="clear: left;"></div></div></div></div></header><div id="middle"><div><div id="mainLeft" class="noprint"><div><nav><div><h2>Links</h2><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Architecture Home</a></li><li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul></div><div><h2>Contents</h2><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></div></nav></div></div><div id="mainRight"><div id="content"><h2>Architecture Overview</h2><h3 id="Overview">Overview</h3><div class="text">
|
||||
<p>
|
||||
This page provides an overview of the Tomcat server architecture.
|
||||
</p>
|
||||
</div><h3 id="Terms">Terms</h3><div class="text">
|
||||
|
||||
<div class="subsection"><h4 id="Server">Server</h4><div class="text">
|
||||
<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>
|
||||
</div></div>
|
||||
|
||||
<div class="subsection"><h4 id="Service">Service</h4><div class="text">
|
||||
<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>
|
||||
</div></div>
|
||||
|
||||
<div class="subsection"><h4 id="Engine">Engine</h4><div class="text">
|
||||
<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>
|
||||
</div></div>
|
||||
|
||||
<div class="subsection"><h4 id="Host">Host</h4><div class="text">
|
||||
<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>
|
||||
</div></div>
|
||||
|
||||
<div class="subsection"><h4 id="Connector">Connector</h4><div class="text">
|
||||
<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>
|
||||
</div></div>
|
||||
|
||||
<div class="subsection"><h4 id="Context">Context</h4><div class="text">
|
||||
<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>
|
||||
</div></div>
|
||||
</div><h3 id="Comments">Comments</h3><div class="text">
|
||||
<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>
|
||||
</div></div></div></div></div><footer><div id="footer">
|
||||
Copyright © 1999-2023, The Apache Software Foundation
|
||||
</div></footer></div></body></html>
|
43
tomcatfiles/docs/architecture/requestProcess.html
Normal file
|
@ -0,0 +1,43 @@
|
|||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="../images/docs-stylesheet.css" rel="stylesheet" type="text/css"><title>Apache Tomcat 9 Architecture (9.0.76) - Request Process Flow</title><meta name="author" content="Yoav Shapira"></head><body><div id="wrapper"><header><div id="header"><div><div><div class="logo noPrint"><a href="https://tomcat.apache.org/"><img alt="Tomcat Home" src="../images/tomcat.png"></a></div><div style="height: 1px;"></div><div class="asfLogo noPrint"><a href="https://www.apache.org/" target="_blank"><img src="../images/asf-logo.svg" alt="The Apache Software Foundation" style="width: 266px; height: 83px;"></a></div><h1>Apache Tomcat 9 Architecture</h1><div class="versionInfo">
|
||||
Version 9.0.76,
|
||||
<time datetime="2023-06-05">Jun 5 2023</time></div><div style="height: 1px;"></div><div style="clear: left;"></div></div></div></div></header><div id="middle"><div><div id="mainLeft" class="noprint"><div><nav><div><h2>Links</h2><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Architecture Home</a></li><li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul></div><div><h2>Contents</h2><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></div></nav></div></div><div id="mainRight"><div id="content"><h2>Request Process Flow</h2><h3 id="Request_Process_Flow">Request Process Flow</h3><div class="text">
|
||||
|
||||
<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>
|
||||
|
||||
<div class="subsection"><h4 id="description">description</h4><div class="text">
|
||||
<p>
|
||||
TODO
|
||||
</p>
|
||||
</div></div>
|
||||
|
||||
<div class="subsection"><h4 id="diagrams">diagrams</h4><div class="text">
|
||||
<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>
|
||||
|
||||
</div></div>
|
||||
|
||||
<div class="subsection"><h4 id="comments">comments</h4><div class="text">
|
||||
<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>
|
||||
|
||||
</div></div>
|
||||
|
||||
</div></div></div></div></div><footer><div id="footer">
|
||||
Copyright © 1999-2023, The Apache Software Foundation
|
||||
</div></footer></div></body></html>
|
After Width: | Height: | Size: 42 KiB |
BIN
tomcatfiles/docs/architecture/requestProcess/request-process.png
Normal file
After Width: | Height: | Size: 107 KiB |
42
tomcatfiles/docs/architecture/startup.html
Normal file
|
@ -0,0 +1,42 @@
|
|||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="../images/docs-stylesheet.css" rel="stylesheet" type="text/css"><title>Apache Tomcat 9 Architecture (9.0.76) - Startup</title><meta name="author" content="Yoav Shapira"></head><body><div id="wrapper"><header><div id="header"><div><div><div class="logo noPrint"><a href="https://tomcat.apache.org/"><img alt="Tomcat Home" src="../images/tomcat.png"></a></div><div style="height: 1px;"></div><div class="asfLogo noPrint"><a href="https://www.apache.org/" target="_blank"><img src="../images/asf-logo.svg" alt="The Apache Software Foundation" style="width: 266px; height: 83px;"></a></div><h1>Apache Tomcat 9 Architecture</h1><div class="versionInfo">
|
||||
Version 9.0.76,
|
||||
<time datetime="2023-06-05">Jun 5 2023</time></div><div style="height: 1px;"></div><div style="clear: left;"></div></div></div></div></header><div id="middle"><div><div id="mainLeft" class="noprint"><div><nav><div><h2>Links</h2><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Architecture Home</a></li><li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul></div><div><h2>Contents</h2><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></div></nav></div></div><div id="mainRight"><div id="content"><h2>Startup</h2><h3 id="Server_Startup">Server Startup</h3><div class="text">
|
||||
|
||||
<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>
|
||||
|
||||
<div class="subsection"><h4 id="description">description</h4><div class="text">
|
||||
<p>
|
||||
A text description of the startup procedure is available
|
||||
<a href="startup/serverStartup.txt">here.</a>
|
||||
</p>
|
||||
</div></div>
|
||||
|
||||
<div class="subsection"><h4 id="diagram">diagram</h4><div class="text">
|
||||
<p>
|
||||
A UML sequence diagram of the startup procedure is available
|
||||
<a href="startup/serverStartup.pdf">here.</a>
|
||||
</p>
|
||||
</div></div>
|
||||
|
||||
<div class="subsection"><h4 id="comments">comments</h4><div class="text">
|
||||
<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>
|
||||
|
||||
</div></div>
|
||||
|
||||
</div></div></div></div></div><footer><div id="footer">
|
||||
Copyright © 1999-2023, The Apache Software Foundation
|
||||
</div></footer></div></body></html>
|
BIN
tomcatfiles/docs/architecture/startup/serverStartup.pdf
Normal file
139
tomcatfiles/docs/architecture/startup/serverStartup.txt
Normal file
|
@ -0,0 +1,139 @@
|
|||
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 Startup Sequence
|
||||
|
||||
Sequence 1. Start from Command Line
|
||||
Class: org.apache.catalina.startup.Bootstrap
|
||||
What it does:
|
||||
a) Set up classloaders
|
||||
commonLoader (common)-> System Loader
|
||||
sharedLoader (shared)-> commonLoader -> System Loader
|
||||
catalinaLoader(server) -> commonLoader -> System Loader
|
||||
(by default the commonLoader is used for the
|
||||
sharedLoader and the serverLoader)
|
||||
b) Load startup class (reflection)
|
||||
org.apache.catalina.startup.Catalina
|
||||
setParentClassloader -> sharedLoader
|
||||
Thread.contextClassloader -> catalinaLoader
|
||||
c) Bootstrap.daemon.init() complete
|
||||
|
||||
Sequence 2. Process command line argument (start, stop)
|
||||
Class: org.apache.catalina.startup.Bootstrap (assume command->start)
|
||||
What it does:
|
||||
a) Catalina.setAwait(true);
|
||||
b) Catalina.load()
|
||||
b1) initDirs() -> set properties like
|
||||
catalina.home
|
||||
catalina.base == catalina.home (most cases)
|
||||
b2) initNaming
|
||||
setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY,
|
||||
org.apache.naming.java.javaURLContextFactory ->default)
|
||||
b3) createStartDigester()
|
||||
Configures a digester for the main server.xml elements like
|
||||
org.apache.catalina.core.StandardServer (can change of course :)
|
||||
org.apache.catalina.deploy.NamingResources
|
||||
Stores naming resources in the J2EE JNDI tree
|
||||
org.apache.catalina.LifecycleListener
|
||||
implements events for start/stop of major components
|
||||
org.apache.catalina.core.StandardService
|
||||
The single entry for a set of connectors,
|
||||
so that a container can listen to multiple connectors
|
||||
ie, single entry
|
||||
org.apache.catalina.Connector
|
||||
Connectors to listen for incoming requests only
|
||||
It also adds the following rulesets to the digester
|
||||
NamingRuleSet
|
||||
EngineRuleSet
|
||||
HostRuleSet
|
||||
ContextRuleSet
|
||||
b4) Load the server.xml and parse it using the digester
|
||||
Parsing the server.xml using the digester is an automatic
|
||||
XML-object mapping tool, that will create the objects defined in server.xml
|
||||
Startup of the actual container has not started yet.
|
||||
b5) Assigns System.out and System.err to the SystemLogHandler class
|
||||
b6) Calls initialize on all components, this makes each object register itself with the
|
||||
JMX agent.
|
||||
During the process call the Connectors also initialize the adapters.
|
||||
The adapters are the components that do the request pre-processing.
|
||||
Typical adapters are HTTP1.1 (default if no protocol is specified,
|
||||
org.apache.coyote.http11.Http11NioProtocol)
|
||||
AJP1.3 for mod_jk etc.
|
||||
|
||||
c) Catalina.start()
|
||||
c1) Starts the NamingContext and binds all JNDI references into it
|
||||
c2) Starts the services under <Server> which are:
|
||||
StandardService -> starts Engine (ContainerBase -> Realm,Cluster etc)
|
||||
c3) StandardHost (started by the service)
|
||||
Configures an ErrorReportValve to do proper HTML output for different HTTP
|
||||
errors codes
|
||||
Starts the Valves in the pipeline (at least the ErrorReportValve)
|
||||
Configures the StandardHostValve,
|
||||
this valves ties the Webapp Class loader to the thread context
|
||||
it also finds the session for the request
|
||||
and invokes the context pipeline
|
||||
Starts the HostConfig component
|
||||
This component deploys all the webapps
|
||||
(webapps & conf/Catalina/localhost/*.xml)
|
||||
HostConfig will create a Digester for your context, this digester
|
||||
will then invoke ContextConfig.start()
|
||||
The ContextConfig.start() will process the default web.xml (conf/web.xml)
|
||||
and then process the applications web.xml (WEB-INF/web.xml)
|
||||
|
||||
c4) During the lifetime of the container (StandardEngine) there is a background thread that
|
||||
keeps checking if the context has changed. If a context changes (timestamp of war file,
|
||||
context xml file, web.xml) then a reload is issued (stop/remove/deploy/start)
|
||||
|
||||
d) Tomcat receives a request on an HTTP port
|
||||
d1) The request is received by a separate thread which is waiting in the ThreadPoolExecutor
|
||||
class. It is waiting for a request in a regular ServerSocket.accept() method.
|
||||
When a request is received, this thread wakes up.
|
||||
d2) The ThreadPoolExecutor assigns the a TaskThread to handle the request.
|
||||
It also supplies a JMX object name to the catalina container (not used I believe)
|
||||
d3) The processor to handle the request in this case is Coyote Http11Processor,
|
||||
and the process method is invoked.
|
||||
This same processor is also continuing to check the input stream of the socket
|
||||
until the keep alive point is reached or the connection is disconnected.
|
||||
d4) The HTTP request is parsed using an internal buffer class (Http11InputBuffer)
|
||||
The buffer class parses the request line, the headers, etc and store the result in a
|
||||
Coyote request (not an HTTP request) This request contains all the HTTP info, such
|
||||
as servername, port, scheme, etc.
|
||||
d5) The processor contains a reference to an Adapter, in this case it is the
|
||||
CoyoteAdapter. Once the request has been parsed, the Http11Processor
|
||||
invokes service() on the adapter. In the service method, the Request contains a
|
||||
CoyoteRequest and CoyoteResponse (null for the first time)
|
||||
The CoyoteRequest(Response) implements HttpRequest(Response) and HttpServletRequest(Response)
|
||||
The adapter parses and associates everything with the request, cookies, the context through a
|
||||
Mapper, etc
|
||||
d6) When the parsing is finished, the CoyoteAdapter invokes its container (StandardEngine)
|
||||
and invokes the invoke(request,response) method.
|
||||
This initiates the HTTP request into the Catalina container starting at the engine level
|
||||
d7) The StandardEngine.invoke() simply invokes the container pipeline.invoke()
|
||||
d8) By default the engine only has one valve the StandardEngineValve, this valve simply
|
||||
invokes the invoke() method on the Host pipeline (StandardHost.getPipeLine())
|
||||
d9) the StandardHost has two valves by default, the StandardHostValve and the ErrorReportValve
|
||||
d10) The standard host valve associates the correct class loader with the current thread
|
||||
It also retrieves the Manager and the session associated with the request (if there is one)
|
||||
If there is a session access() is called to keep the session alive
|
||||
d11) After that the StandardHostValve invokes the pipeline on the context associated
|
||||
with the request.
|
||||
d12) The first valve that gets invoked by the Context pipeline is the FormAuthenticator
|
||||
valve. Then the StandardContextValve gets invoke.
|
||||
The StandardContextValve invokes any context listeners associated with the context.
|
||||
Next it invokes the pipeline on the Wrapper component (StandardWrapperValve)
|
||||
d13) During the invocation of the StandardWrapperValve, the JSP wrapper (Jasper) gets invoked
|
||||
This results in the actual compilation of the JSP.
|
||||
And then invokes the actual servlet.
|
||||
e) Invocation of the servlet class
|
19
tomcatfiles/docs/balancer-howto.html
Normal file
|
@ -0,0 +1,19 @@
|
|||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="./images/docs-stylesheet.css" rel="stylesheet" type="text/css"><title>Apache Tomcat 9 (9.0.76) - Load Balancer How-To</title><meta name="author" content="Yoav Shapira"><meta name="author" content="Remy Maucherat"><meta name="author" content="Andy Oliver"></head><body><div id="wrapper"><header><div id="header"><div><div><div class="logo noPrint"><a href="https://tomcat.apache.org/"><img alt="Tomcat Home" src="./images/tomcat.png"></a></div><div style="height: 1px;"></div><div class="asfLogo noPrint"><a href="https://www.apache.org/" target="_blank"><img src="./images/asf-logo.svg" alt="The Apache Software Foundation" style="width: 266px; height: 83px;"></a></div><h1>Apache Tomcat 9</h1><div class="versionInfo">
|
||||
Version 9.0.76,
|
||||
<time datetime="2023-06-05">Jun 5 2023</time></div><div style="height: 1px;"></div><div style="clear: left;"></div></div></div></div></header><div id="middle"><div><div id="mainLeft" class="noprint"><div><nav><div><h2>Links</h2><ul><li><a href="index.html">Docs Home</a></li><li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul></div><div><h2>User Guide</h2><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="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li><li><a href="rewrite.html">33) Rewrite</a></li><li><a href="cdi.html">34) CDI 2 and JAX-RS</a></li><li><a href="graal.html">35) AOT/GraalVM Support</a></li></ul></div><div><h2>Reference</h2><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 4.0 Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.3 Javadocs</a></li><li><a href="elapi/index.html">EL 3.0 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="jaspicapi/index.html">JASPIC 1.1 Javadocs</a></li><li><a href="annotationapi/index.html">Common Annotations 1.3 Javadocs</a></li><li><a href="https://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul></div><div><h2>Apache Tomcat Development</h2><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/Tomcat+Versions">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></div></nav></div></div><div id="mainRight"><div id="content"><h2>Load Balancer How-To</h2><h3 id="Table_of_Contents">Table of Contents</h3><div class="text">
|
||||
<ul><li><a href="#Using_the_JK_1.2.x_native_connector">Using the JK 1.2.x native connector</a></li><li><a href="#Using_Apache_HTTP_Server_2.x_with_mod_proxy">Using Apache HTTP Server 2.x with mod_proxy</a></li></ul>
|
||||
</div><h3 id="Using_the_JK_1.2.x_native_connector">Using the JK 1.2.x native connector</h3><div class="text">
|
||||
|
||||
Please refer to the JK 1.2.x documentation.
|
||||
|
||||
</div><h3 id="Using_Apache_HTTP_Server_2.x_with_mod_proxy">Using Apache HTTP Server 2.x with mod_proxy</h3><div class="text">
|
||||
|
||||
Please refer to the mod_proxy documentation for Apache HTTP Server 2.2. This supports either
|
||||
HTTP or AJP load balancing. This new version of mod_proxy is also usable with
|
||||
Apache HTTP Server 2.0, but mod_proxy will have to be compiled separately using the code
|
||||
from Apache HTTP Server 2.2.
|
||||
|
||||
</div></div></div></div></div><footer><div id="footer">
|
||||
Copyright © 1999-2023, The Apache Software Foundation
|
||||
</div></footer></div></body></html>
|
223
tomcatfiles/docs/building.html
Normal file
|
@ -0,0 +1,223 @@
|
|||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="./images/docs-stylesheet.css" rel="stylesheet" type="text/css"><title>Apache Tomcat 9 (9.0.76) - Building Tomcat</title></head><body><div id="wrapper"><header><div id="header"><div><div><div class="logo noPrint"><a href="https://tomcat.apache.org/"><img alt="Tomcat Home" src="./images/tomcat.png"></a></div><div style="height: 1px;"></div><div class="asfLogo noPrint"><a href="https://www.apache.org/" target="_blank"><img src="./images/asf-logo.svg" alt="The Apache Software Foundation" style="width: 266px; height: 83px;"></a></div><h1>Apache Tomcat 9</h1><div class="versionInfo">
|
||||
Version 9.0.76,
|
||||
<time datetime="2023-06-05">Jun 5 2023</time></div><div style="height: 1px;"></div><div style="clear: left;"></div></div></div></div></header><div id="middle"><div><div id="mainLeft" class="noprint"><div><nav><div><h2>Links</h2><ul><li><a href="index.html">Docs Home</a></li><li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul></div><div><h2>User Guide</h2><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="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li><li><a href="rewrite.html">33) Rewrite</a></li><li><a href="cdi.html">34) CDI 2 and JAX-RS</a></li><li><a href="graal.html">35) AOT/GraalVM Support</a></li></ul></div><div><h2>Reference</h2><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 4.0 Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.3 Javadocs</a></li><li><a href="elapi/index.html">EL 3.0 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="jaspicapi/index.html">JASPIC 1.1 Javadocs</a></li><li><a href="annotationapi/index.html">Common Annotations 1.3 Javadocs</a></li><li><a href="https://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul></div><div><h2>Apache Tomcat Development</h2><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/Tomcat+Versions">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></div></nav></div></div><div id="mainRight"><div id="content"><h2>Building Tomcat</h2><h3 id="Table_of_Contents">Table of Contents</h3><div class="text">
|
||||
<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Download_a_Java_Development_Kit_(JDK)">Download a Java Development Kit (JDK)</a></li><li><a href="#Install_Apache_Ant">Install Apache Ant</a></li><li><a href="#Obtain_the_Tomcat_source_code">Obtain the Tomcat source code</a></li><li><a href="#Configure_download_area">Configure download area</a></li><li><a href="#Building_Tomcat">Building Tomcat</a></li><li><a href="#Building_with_Eclipse">Building with Eclipse</a></li><li><a href="#Building_with_other_IDEs">Building with other IDEs</a></li></ul>
|
||||
</div><h3 id="Introduction">Introduction</h3><div class="text">
|
||||
|
||||
<p>
|
||||
Building Apache Tomcat from source is very easy, and is the first step to
|
||||
contributing to Tomcat. The complete and comprehensive instructions are
|
||||
provided in the file <a href="BUILDING.txt">BUILDING.txt</a>.
|
||||
The following is a quick step by step guide.
|
||||
</p>
|
||||
|
||||
</div><h3 id="Download_a_Java_Development_Kit_(JDK)">Download a Java Development Kit (JDK)</h3><div class="text">
|
||||
|
||||
<p>
|
||||
Building Apache Tomcat requires a JDK (version <build-java-version></build-java-version>) or later to be installed. You
|
||||
can download one from
|
||||
<a href="https://adoptium.net/temurin/releases">https://adoptium.net/temurin/releases</a>
|
||||
or another JDK vendor.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<b>IMPORTANT</b>: Set an environment variable JAVA_HOME to the pathname of the
|
||||
directory into which you installed the JDK release.
|
||||
</p>
|
||||
|
||||
</div><h3 id="Install_Apache_Ant">Install Apache Ant</h3><div class="text">
|
||||
|
||||
<p>
|
||||
Download a binary distribution of Ant <ant-version-required></ant-version-required> or later from
|
||||
<a href="https://ant.apache.org/bindownload.cgi">here</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Unpack the binary distribution into a convenient location so that the
|
||||
Ant release resides in its own directory (conventionally named
|
||||
<code>apache-ant-[version]</code>). For the remainder of this guide,
|
||||
the symbolic name <code>${ant.home}</code> is used to refer to the full pathname of
|
||||
the Ant installation directory.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<b>IMPORTANT</b>: Create an ANT_HOME environment variable to point the directory <code>${ant.home}</code>,
|
||||
and modify the PATH environment variable to include directory
|
||||
<code>${ant.home}/bin</code> in its list. This makes the <code>ant</code> command line script
|
||||
available, which will be used to actually perform the build.
|
||||
</p>
|
||||
|
||||
</div><h3 id="Obtain_the_Tomcat_source_code">Obtain the Tomcat source code</h3><div class="text">
|
||||
|
||||
<p>
|
||||
Tomcat Git repository URL:
|
||||
<a href="https://github.com/apache/tomcat">https://github.com/apache/tomcat</a>
|
||||
</p>
|
||||
<p>
|
||||
Tomcat source packages:
|
||||
<a href="https://tomcat.apache.org/download-90.cgi">https://tomcat.apache.org/download-90.cgi</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Clone the source repository using Git, selecting a tag for released version or
|
||||
9.0.x for the current development code, or download and unpack a
|
||||
source package. For the remainder of this guide, the symbolic name
|
||||
<code>${tomcat.source}</code> is used to refer to the
|
||||
location where the source has been placed.
|
||||
</p>
|
||||
|
||||
</div><h3 id="Configure_download_area">Configure download area</h3><div class="text">
|
||||
|
||||
<p>
|
||||
Building Tomcat involves downloading a number of libraries that it depends on.
|
||||
It is strongly recommended to configure download area for those libraries.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
By default the build is configured to download the dependencies into the
|
||||
<code>${user.home}/tomcat-build-libs</code> directory. You can change this
|
||||
(see below) but it must be an absolute path.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The build is controlled by creating a
|
||||
<code>${tomcat.source}/build.properties</code> file. It can be used to
|
||||
redefine any property that is present in <code>build.properties.default</code>
|
||||
and <code>build.xml</code> files. The <code>build.properties</code> file
|
||||
does not exist by default. You have to create it.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The download area is defined by property <code>base.path</code>. For example:
|
||||
</p>
|
||||
|
||||
<div class="codeBox"><pre><code># ----- 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</code></pre></div>
|
||||
|
||||
<p>
|
||||
Different versions of Tomcat are allowed to share the same download area.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Another example:
|
||||
</p>
|
||||
|
||||
<div class="codeBox"><pre><code>base.path=${user.dir}/../libraries-tomcat9.0</code></pre></div>
|
||||
|
||||
<p>
|
||||
Users who access the Internet through a proxy must use the properties
|
||||
file to indicate to Ant the proxy configuration:
|
||||
</p>
|
||||
|
||||
<div class="codeBox"><pre><code># ----- Proxy setup -----
|
||||
proxy.host=proxy.domain
|
||||
proxy.port=8080
|
||||
proxy.use=on</code></pre></div>
|
||||
|
||||
</div><h3 id="Building_Tomcat">Building Tomcat</h3><div class="text">
|
||||
|
||||
<p>
|
||||
Use the following commands to build Tomcat:
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<code>cd ${tomcat.source}</code><br>
|
||||
<code>ant</code>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Once the build has completed successfully, a usable Tomcat installation will have been
|
||||
produced in the <code>${tomcat.source}/output/build</code> directory, and can be started
|
||||
and stopped with the usual scripts.
|
||||
</p>
|
||||
</div><h3 id="Building_with_Eclipse">Building with Eclipse</h3><div class="text">
|
||||
|
||||
<p>
|
||||
<b>IMPORTANT:</b> This is not a supported means of building Tomcat; this information is
|
||||
provided without warranty :-).
|
||||
The only supported means of building Tomcat is with the Ant build described above.
|
||||
However, some developers like to work on Java code with a Java IDE,
|
||||
and the following steps have been used by some developers.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<b>NOTE:</b> This will not let you build everything under Eclipse;
|
||||
the build process requires use of Ant for the many stages that aren't
|
||||
simple Java compilations.
|
||||
However, it will allow you to view and edit the Java code,
|
||||
get warnings, reformat code, perform refactorings, run Tomcat
|
||||
under the IDE, and so on.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<b>WARNING:</b> Do not forget to create and configure
|
||||
<code>${tomcat.source}/build.properties</code> file as described above
|
||||
before running any Ant targets.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Sample Eclipse project files and launch targets are provided in the
|
||||
<code>res/ide-support/eclipse</code> directory of the source tree.
|
||||
The instructions below will automatically copy these into the required locations.
|
||||
</p>
|
||||
<p>
|
||||
An Ant target is provided as a convenience to download all binary dependencies, and to create
|
||||
the Eclipse project and classpath files in the root of the source tree.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<code>cd ${tomcat.source}</code><br>
|
||||
<code>ant ide-eclipse</code>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Start Eclipse and create a new Workspace.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Use <em>File->Import</em> and choose <em>Existing Projects into Workspace</em>.
|
||||
From there choose the root directory of the Tomcat source tree (<code>${tomcat.source}</code>)
|
||||
and import the Tomcat project located there.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<code>start-tomcat</code> and <code>stop-tomcat</code> launch configurations are provided in
|
||||
<code>res/ide-support/eclipse</code> and will be available in the <em>Run->Run Configurations</em>
|
||||
dialog. Use these to start and stop Tomcat from Eclipse.
|
||||
If you want to configure these yourself (or are using a different IDE)
|
||||
then use <code>org.apache.catalina.startup.Bootstrap</code> as the main class,
|
||||
<code>start</code>/<code>stop</code> etc. as program arguments, and specify <code>-Dcatalina.home=...</code>
|
||||
(with the name of your build directory) as VM arguments.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Tweaking a few formatting preferences will make it much easier to keep consistent with Tomcat
|
||||
coding conventions (and have your contributions accepted):
|
||||
</p>
|
||||
|
||||
<table class="defaultTable">
|
||||
<tr><td>Java -> Code Style -> Formatter -> Edit...</td>
|
||||
<td>Tab policy: Spaces only<br>Tab and Indentation size: 4</td></tr>
|
||||
<tr><td>General -> Editors -> Text Editors</td>
|
||||
<td>Displayed tab width: 2<br>Insert spaces for tabs<br>Show whitespace characters (optional)</td></tr>
|
||||
<tr><td>XML -> XML Files -> Editor</td><td>Indent using spaces<br>Indentation size: 2</td></tr>
|
||||
<tr><td>Ant -> Editor -> Formatter</td><td>Tab size: 2<br>Use tab character instead of spaces: unchecked</td></tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
The recommended configuration of Compiler Warnings is documented in
|
||||
<code>res/ide-support/eclipse/java-compiler-errors-warnings.txt</code> file.
|
||||
</p>
|
||||
|
||||
</div><h3 id="Building_with_other_IDEs">Building with other IDEs</h3><div class="text">
|
||||
<p>
|
||||
The same general approach should work for most IDEs; it has been reported
|
||||
to work in IntelliJ IDEA, for example.
|
||||
</p>
|
||||
|
||||
</div></div></div></div></div><footer><div id="footer">
|
||||
Copyright © 1999-2023, The Apache Software Foundation
|
||||
</div></footer></div></body></html>
|
145
tomcatfiles/docs/cdi.html
Normal file
|
@ -0,0 +1,145 @@
|
|||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="./images/docs-stylesheet.css" rel="stylesheet" type="text/css"><title>Apache Tomcat 9 (9.0.76) - CDI 2, JAX-RS and dependent libraries support</title></head><body><div id="wrapper"><header><div id="header"><div><div><div class="logo noPrint"><a href="https://tomcat.apache.org/"><img alt="Tomcat Home" src="./images/tomcat.png"></a></div><div style="height: 1px;"></div><div class="asfLogo noPrint"><a href="https://www.apache.org/" target="_blank"><img src="./images/asf-logo.svg" alt="The Apache Software Foundation" style="width: 266px; height: 83px;"></a></div><h1>Apache Tomcat 9</h1><div class="versionInfo">
|
||||
Version 9.0.76,
|
||||
<time datetime="2023-06-05">Jun 5 2023</time></div><div style="height: 1px;"></div><div style="clear: left;"></div></div></div></div></header><div id="middle"><div><div id="mainLeft" class="noprint"><div><nav><div><h2>Links</h2><ul><li><a href="index.html">Docs Home</a></li><li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul></div><div><h2>User Guide</h2><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="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li><li><a href="rewrite.html">33) Rewrite</a></li><li><a href="cdi.html">34) CDI 2 and JAX-RS</a></li><li><a href="graal.html">35) AOT/GraalVM Support</a></li></ul></div><div><h2>Reference</h2><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 4.0 Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.3 Javadocs</a></li><li><a href="elapi/index.html">EL 3.0 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="jaspicapi/index.html">JASPIC 1.1 Javadocs</a></li><li><a href="annotationapi/index.html">Common Annotations 1.3 Javadocs</a></li><li><a href="https://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul></div><div><h2>Apache Tomcat Development</h2><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/Tomcat+Versions">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></div></nav></div></div><div id="mainRight"><div id="content"><h2>CDI 2, JAX-RS and dependent libraries support</h2><h3 id="Table_of_Contents">Table of Contents</h3><div class="text">
|
||||
<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#CDI_2_support">CDI 2 support</a></li><li><a href="#JAX-RS_support">JAX-RS support</a></li><li><a href="#Eclipse_Microprofile_support">Eclipse Microprofile support</a></li></ul>
|
||||
</div><h3 id="Introduction">Introduction</h3><div class="text">
|
||||
|
||||
<p>
|
||||
CDI and JAX-RS are dependencies for many other APIs and libraries. This
|
||||
guide explains how to add support for them in Tomcat using two optional
|
||||
modules that are provided in the Tomcat sources.
|
||||
</p>
|
||||
|
||||
</div><h3 id="CDI_2_support">CDI 2 support</h3><div class="text">
|
||||
|
||||
<p>
|
||||
CDI 2 support is provided by the <code>modules/owb</code> optional module.
|
||||
It packages the Apache OpenWebBeans project and allows adding CDI 2 support
|
||||
to the Tomcat container. The build process of the module uses Apache Maven,
|
||||
and is not available as a binary bundle as it is built using a number of
|
||||
publicly available JARs.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The process to build CDI support is the following.
|
||||
<div class="codeBox"><pre><code>cd $TOMCAT_SRC/modules/owb
|
||||
mvn clean && mvn package</code></pre></div>
|
||||
The resulting JAR at
|
||||
<code>target/tomcat-owb-x.y.z.jar</code> (where x.y.z depends on the
|
||||
Apache OpenWebBeans version used during the build)
|
||||
should then be placed into the <code>lib</code> folder of the Tomcat
|
||||
installation.<br>
|
||||
CDI support can then be enabled for all webapps in the container by adding
|
||||
the following listener in <code>server.xml</code> nested inside the
|
||||
<code>Server</code> element:
|
||||
<div class="codeBox"><pre><code><Listener className="org.apache.webbeans.web.tomcat.OpenWebBeansListener" optional="true" startWithoutBeansXml="false" /></code></pre></div>
|
||||
The listener will produce a non fatal error if the CDI container loading
|
||||
fails.<br>
|
||||
CDI support can also be enabled at the individual webapp level by adding
|
||||
the following listener to the webapp <code>context.xml</code> file nested
|
||||
inside the <code>Server</code> element:
|
||||
<div class="codeBox"><pre><code><Listener className="org.apache.webbeans.web.tomcat.OpenWebBeansContextLifecycleListener" /></code></pre></div>
|
||||
</p>
|
||||
|
||||
</div><h3 id="JAX-RS_support">JAX-RS support</h3><div class="text">
|
||||
|
||||
<p>
|
||||
JAX-RS support is provided by the <code>modules/cxf</code> optional module.
|
||||
It packages the Apache CXF project and allows adding JAX-RS support
|
||||
to individual webapps. The build process of the module uses Apache Maven,
|
||||
and is not available as a binary bundle as it is built using a number of
|
||||
publicly available JARs. The support depends on CDI 2 support, which should
|
||||
have previously been installed at either the container or webapp level.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The process to build JAX-RS support is the following.
|
||||
<div class="codeBox"><pre><code>cd $TOMCAT_SRC/modules/cxf
|
||||
mvn clean && mvn package</code></pre></div>
|
||||
The resulting JAR at
|
||||
<code>target/tomcat-cxf-x.y.z.jar</code> (where x.y.z depends on the
|
||||
Apache CXF version used during the build)
|
||||
should then be placed into the <code>/WEB-INF/lib</code> folder of the
|
||||
desired web application.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
If the CDI 2 support is available at the container
|
||||
level, the JAR can also be placed in the Tomcat <code>lib</code> folder,
|
||||
but in that case the CXF Servlet declaration must be individually added
|
||||
in each webapp as needed (it is normally loaded by the web fragment that is
|
||||
present in the JAR). The CXF Servlet class that should be used is
|
||||
<code>org.apache.cxf.cdi.CXFCdiServlet</code> and should be mapped to the
|
||||
desired root path where JAX-RS resources will be available.
|
||||
</p>
|
||||
|
||||
</div><h3 id="Eclipse_Microprofile_support">Eclipse Microprofile support</h3><div class="text">
|
||||
|
||||
<p>
|
||||
ASF artifacts are available that implement Eclipse Microprofile
|
||||
specifications using CDI 2 extensions. Once the CDI 2 and JAX-RS support
|
||||
is installed, they will be usable by individual webapps.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The following implementations are available (reference:
|
||||
<code>org.apache.tomee.microprofile.TomEEMicroProfileListener</code>) as
|
||||
Maven artifacts which must be added to the webapp <code>/WEB-INF/lib</code>
|
||||
folders:
|
||||
<ul>
|
||||
<li><strong>Configuration</strong>:
|
||||
Maven artifact:
|
||||
<code>org.apache.geronimo.config:geronimo-config</code>
|
||||
CDI extension class:
|
||||
<code>org.apache.geronimo.config.cdi.ConfigExtension</code>
|
||||
</li>
|
||||
<li><strong>Fault Tolerance</strong>:
|
||||
Maven artifact:
|
||||
<code>org.apache.geronimo.safeguard:safeguard-parent</code>
|
||||
CDI extension class:
|
||||
<code>org.apache.safeguard.impl.cdi.SafeguardExtension</code>
|
||||
</li>
|
||||
<li><strong>Health</strong>:
|
||||
Maven artifact:
|
||||
<code>org.apache.geronimo:geronimo-health</code>
|
||||
CDI extension class:
|
||||
<code>org.apache.geronimo.microprofile.impl.health.cdi.GeronimoHealthExtension</code>
|
||||
</li>
|
||||
<li><strong>Metrics</strong>:
|
||||
Maven artifact:
|
||||
<code>org.apache.geronimo:geronimo-metrics</code>
|
||||
CDI extension class:
|
||||
<code>org.apache.geronimo.microprofile.metrics.cdi.MetricsExtension</code>
|
||||
</li>
|
||||
<li><strong>OpenTracing</strong>:
|
||||
Maven artifact:
|
||||
<code>org.apache.geronimo:geronimo-opentracing</code>
|
||||
CDI extension class:
|
||||
<code>org.apache.geronimo.microprofile.opentracing.microprofile.cdi.OpenTracingExtension</code>
|
||||
</li>
|
||||
<li><strong>OpenAPI</strong>:
|
||||
Maven artifact:
|
||||
<code>org.apache.geronimo:geronimo-openapi</code>
|
||||
CDI extension class:
|
||||
<code>org.apache.geronimo.microprofile.openapi.cdi.GeronimoOpenAPIExtension</code>
|
||||
</li>
|
||||
<li><strong>Rest client</strong>:
|
||||
Maven artifact:
|
||||
<code>org.apache.cxf:cxf-rt-rs-mp-client</code>
|
||||
CDI extension class:
|
||||
<code>org.apache.cxf.microprofile.client.cdi.RestClientExtension</code>
|
||||
</li>
|
||||
<li><strong>JSON Web Tokens</strong>:
|
||||
Note: Fore reference only, unusable outside Apache TomEE;
|
||||
Maven artifact:
|
||||
<code>org.apache.tomee:mp-jwt</code>
|
||||
CDI extension class:
|
||||
<code>org.apache.tomee.microprofile.jwt.cdi.MPJWTCDIExtension</code>
|
||||
</li>
|
||||
</ul>
|
||||
</p>
|
||||
|
||||
</div></div></div></div></div><footer><div id="footer">
|
||||
Copyright © 1999-2023, The Apache Software Foundation
|
||||
</div></footer></div></body></html>
|
133
tomcatfiles/docs/cgi-howto.html
Normal file
|
@ -0,0 +1,133 @@
|
|||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="./images/docs-stylesheet.css" rel="stylesheet" type="text/css"><title>Apache Tomcat 9 (9.0.76) - CGI How To</title></head><body><div id="wrapper"><header><div id="header"><div><div><div class="logo noPrint"><a href="https://tomcat.apache.org/"><img alt="Tomcat Home" src="./images/tomcat.png"></a></div><div style="height: 1px;"></div><div class="asfLogo noPrint"><a href="https://www.apache.org/" target="_blank"><img src="./images/asf-logo.svg" alt="The Apache Software Foundation" style="width: 266px; height: 83px;"></a></div><h1>Apache Tomcat 9</h1><div class="versionInfo">
|
||||
Version 9.0.76,
|
||||
<time datetime="2023-06-05">Jun 5 2023</time></div><div style="height: 1px;"></div><div style="clear: left;"></div></div></div></div></header><div id="middle"><div><div id="mainLeft" class="noprint"><div><nav><div><h2>Links</h2><ul><li><a href="index.html">Docs Home</a></li><li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul></div><div><h2>User Guide</h2><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="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li><li><a href="rewrite.html">33) Rewrite</a></li><li><a href="cdi.html">34) CDI 2 and JAX-RS</a></li><li><a href="graal.html">35) AOT/GraalVM Support</a></li></ul></div><div><h2>Reference</h2><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 4.0 Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.3 Javadocs</a></li><li><a href="elapi/index.html">EL 3.0 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="jaspicapi/index.html">JASPIC 1.1 Javadocs</a></li><li><a href="annotationapi/index.html">Common Annotations 1.3 Javadocs</a></li><li><a href="https://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul></div><div><h2>Apache Tomcat Development</h2><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/Tomcat+Versions">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></div></nav></div></div><div id="mainRight"><div id="content"><h2>CGI How To</h2><h3 id="Table_of_Contents">Table of Contents</h3><div class="text">
|
||||
<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Installation">Installation</a></li><li><a href="#Configuration">Configuration</a></li></ul>
|
||||
</div><h3 id="Introduction">Introduction</h3><div class="text">
|
||||
|
||||
<p>The CGI (Common Gateway Interface) defines a way for a web server to
|
||||
interact with external content-generating programs, which are often
|
||||
referred to as CGI programs or CGI scripts.
|
||||
</p>
|
||||
|
||||
<p>Within Tomcat, CGI support can be added when you are using Tomcat as your
|
||||
HTTP server and require CGI support. Typically this is done
|
||||
during development when you don't want to run a web server like
|
||||
Apache httpd.
|
||||
Tomcat's CGI support is largely compatible with Apache httpd's,
|
||||
but there are some limitations (e.g., only one cgi-bin directory).
|
||||
</p>
|
||||
|
||||
<p>CGI support is implemented using the servlet class
|
||||
<code>org.apache.catalina.servlets.CGIServlet</code>. Traditionally,
|
||||
this servlet is mapped to the URL pattern "/cgi-bin/*".</p>
|
||||
|
||||
<p>By default CGI support is disabled in Tomcat.</p>
|
||||
</div><h3 id="Installation">Installation</h3><div class="text">
|
||||
|
||||
<p><strong>CAUTION</strong> - CGI scripts are used to execute programs
|
||||
external to the Tomcat JVM. If you are using the Java SecurityManager this
|
||||
will bypass your security policy configuration in <code>catalina.policy.</code></p>
|
||||
|
||||
<p>To enable CGI support:</p>
|
||||
|
||||
<ol>
|
||||
<li><p>There are commented-out sample servlet and servlet-mapping elements for
|
||||
CGI servlet in the default <code>$CATALINA_BASE/conf/web.xml</code> file.
|
||||
To enable CGI support in your web application, copy that servlet and
|
||||
servlet-mapping declarations into <code>WEB-INF/web.xml</code> file of your
|
||||
web application.</p>
|
||||
|
||||
<p>Uncommenting the servlet and servlet-mapping in
|
||||
<code>$CATALINA_BASE/conf/web.xml</code> file enables CGI for all installed
|
||||
web applications at once.</p>
|
||||
</li>
|
||||
|
||||
<li><p>Set <code>privileged="true"</code> on the Context element for your
|
||||
web application.</p>
|
||||
|
||||
<p>Only Contexts which are marked as privileged are allowed to use the
|
||||
CGI servlet. Note that modifying the global <code>$CATALINA_BASE/conf/context.xml</code>
|
||||
file affects all web applications. See
|
||||
<a href="config/context.html">Context documentation</a> for details.</p>
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
</div><h3 id="Configuration">Configuration</h3><div class="text">
|
||||
|
||||
<p>There are several servlet init parameters which can be used to
|
||||
configure the behaviour of the CGI servlet.</p>
|
||||
<ul>
|
||||
<li><strong>cgiMethods</strong> - Comma separated list of HTTP methods. Requests
|
||||
using one of these methods will be passed to the CGI script for the script to
|
||||
generate the response. The default value is <code>GET,POST</code>. Use
|
||||
<code>*</code> for the script to handle all requests regardless of method.
|
||||
Unless over-ridden by the configuration of this parameter, requests using HEAD,
|
||||
OPTIONS or TRACE will have handled by the superclass.</li>
|
||||
<li><strong>cgiPathPrefix</strong> - The CGI search path will start at
|
||||
the web application root directory + File.separator + this prefix.
|
||||
By default there is no value, which results in the web application root
|
||||
directory being used as the search path. The recommended value is
|
||||
<code>WEB-INF/cgi</code></li>
|
||||
<li><strong>cmdLineArgumentsDecoded</strong> - If command line arguments
|
||||
are enabled (via <strong>enableCmdLineArguments</strong>) and Tomcat is running
|
||||
on Windows then each individual decoded command line argument must match this
|
||||
pattern else the request will be rejected. This is to protect against known
|
||||
issues passing command line arguments from Java to Windows. These issues can
|
||||
lead to remote code execution. For more information on these issues see
|
||||
<a href="https://codewhitesec.blogspot.com/2016/02/java-and-command-line-injections-in-windows.html">Markus
|
||||
Wulftange's blog</a> and this archived
|
||||
<a href="https://web.archive.org/web/20161228144344/https://blogs.msdn.microsoft.com/twistylittlepassagesallalike/2011/04/23/everyone-quotes-command-line-arguments-the-wrong-way/">blog
|
||||
by Daniel Colascione</a>.</li>
|
||||
<li><strong>cmdLineArgumentsEncoded</strong> - If command line arguments
|
||||
are enabled (via <strong>enableCmdLineArguments</strong>) individual encoded
|
||||
command line argument must match this pattern else the request will be rejected.
|
||||
The default matches the allowed values defined by RFC3875 and is
|
||||
<code>[\w\Q%;/?:@&,$-.!~*'()\E]+</code></li>
|
||||
<li><strong>enableCmdLineArguments</strong> - Are command line arguments
|
||||
generated from the query string as per section 4.4 of 3875 RFC? The default is
|
||||
<code>false</code>.</li>
|
||||
<li><strong>environment-variable-</strong> - An environment to be set for the
|
||||
execution environment of the CGI script. The name of variable is taken from the
|
||||
parameter name. To configure an environment variable named FOO, configure a
|
||||
parameter named environment-variable-FOO. The parameter value is used as the
|
||||
environment variable value. The default is no environment variables.</li>
|
||||
<li><strong>executable</strong> - The name of the executable to be used to
|
||||
run the script. You may explicitly set this parameter to be an empty string
|
||||
if your script is itself executable (e.g. an exe file). Default is
|
||||
<code>perl</code>.</li>
|
||||
<li><strong>executable-arg-1</strong>, <strong>executable-arg-2</strong>,
|
||||
and so on - additional arguments for the executable. These precede the
|
||||
CGI script name. By default there are no additional arguments.</li>
|
||||
<li><strong>envHttpHeaders</strong> - A regular expression used to select the
|
||||
HTTP headers passed to the CGI process as environment variables. Note that
|
||||
headers are converted to upper case before matching and that the entire header
|
||||
name must match the pattern. Default is
|
||||
<code>ACCEPT[-0-9A-Z]*|CACHE-CONTROL|COOKIE|HOST|IF-[-0-9A-Z]*|REFERER|USER-AGENT</code>
|
||||
</li>
|
||||
<li><strong>parameterEncoding</strong> - Name of the parameter encoding
|
||||
to be used with the CGI servlet. Default is
|
||||
<code>System.getProperty("file.encoding","UTF-8")</code>. That is the system
|
||||
default encoding, or UTF-8 if that system property is not available.</li>
|
||||
<li><strong>passShellEnvironment</strong> - Should the shell environment
|
||||
variables from Tomcat process (if any) be passed to the CGI script? Default is
|
||||
<code>false</code>.</li>
|
||||
<li><strong>stderrTimeout</strong> - The time (in milliseconds) to wait for
|
||||
the reading of stderr to complete before terminating the CGI process. Default
|
||||
is <code>2000</code>.</li>
|
||||
</ul>
|
||||
|
||||
<p>The CGI script executed depends on the configuration of the CGI Servlet and
|
||||
how the request is mapped to the CGI Servlet. The CGI search path starts at the
|
||||
web application root directory + File.separator + cgiPathPrefix. The
|
||||
<strong>pathInfo</strong> is then searched unless it is <code>null</code> - in
|
||||
which case the <strong>servletPath</strong> is searched.</p>
|
||||
|
||||
<p>The search starts with the first path segment and expands one path segment
|
||||
at a time until no path segments are left (resulting in a 404) or a script is
|
||||
found. Any remaining path segments are passed to the script in the
|
||||
<strong>PATH_INFO</strong> environment variable.</p>
|
||||
|
||||
</div></div></div></div></div><footer><div id="footer">
|
||||
Copyright © 1999-2023, The Apache Software Foundation
|
||||
</div></footer></div></body></html>
|
13881
tomcatfiles/docs/changelog.html
Normal file
266
tomcatfiles/docs/class-loader-howto.html
Normal file
|
@ -0,0 +1,266 @@
|
|||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="./images/docs-stylesheet.css" rel="stylesheet" type="text/css"><title>Apache Tomcat 9 (9.0.76) - Class Loader How-To</title><meta name="author" content="Craig R. McClanahan"><meta name="author" content="Yoav Shapira"></head><body><div id="wrapper"><header><div id="header"><div><div><div class="logo noPrint"><a href="https://tomcat.apache.org/"><img alt="Tomcat Home" src="./images/tomcat.png"></a></div><div style="height: 1px;"></div><div class="asfLogo noPrint"><a href="https://www.apache.org/" target="_blank"><img src="./images/asf-logo.svg" alt="The Apache Software Foundation" style="width: 266px; height: 83px;"></a></div><h1>Apache Tomcat 9</h1><div class="versionInfo">
|
||||
Version 9.0.76,
|
||||
<time datetime="2023-06-05">Jun 5 2023</time></div><div style="height: 1px;"></div><div style="clear: left;"></div></div></div></div></header><div id="middle"><div><div id="mainLeft" class="noprint"><div><nav><div><h2>Links</h2><ul><li><a href="index.html">Docs Home</a></li><li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul></div><div><h2>User Guide</h2><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="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li><li><a href="rewrite.html">33) Rewrite</a></li><li><a href="cdi.html">34) CDI 2 and JAX-RS</a></li><li><a href="graal.html">35) AOT/GraalVM Support</a></li></ul></div><div><h2>Reference</h2><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 4.0 Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.3 Javadocs</a></li><li><a href="elapi/index.html">EL 3.0 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="jaspicapi/index.html">JASPIC 1.1 Javadocs</a></li><li><a href="annotationapi/index.html">Common Annotations 1.3 Javadocs</a></li><li><a href="https://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul></div><div><h2>Apache Tomcat Development</h2><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/Tomcat+Versions">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></div></nav></div></div><div id="mainRight"><div id="content"><h2>Class Loader How-To</h2><h3 id="Table_of_Contents">Table of Contents</h3><div class="text">
|
||||
<ul><li><a href="#Overview">Overview</a></li><li><a href="#Class_Loader_Definitions">Class Loader Definitions</a></li><li><a href="#XML_Parsers_and_Java">XML Parsers and Java</a></li><li><a href="#Running_under_a_security_manager">Running under a security manager</a></li><li><a href="#Advanced_configuration">Advanced configuration</a></li></ul>
|
||||
</div><h3 id="Overview">Overview</h3><div class="text">
|
||||
|
||||
<p>Like many server applications, Tomcat installs a variety of class loaders
|
||||
(that is, classes that implement <code>java.lang.ClassLoader</code>) to allow
|
||||
different portions of the container, and the web applications running on the
|
||||
container, to have access to different repositories of available classes and
|
||||
resources. This mechanism is used to provide the functionality defined in the
|
||||
Servlet Specification, version 2.4 — in particular, Sections 9.4
|
||||
and 9.6.</p>
|
||||
|
||||
<p>In a Java environment, class loaders are
|
||||
arranged in a parent-child tree. Normally, when a class loader is asked to
|
||||
load a particular class or resource, it delegates the request to a parent
|
||||
class loader first, and then looks in its own repositories only if the parent
|
||||
class loader(s) cannot find the requested class or resource. Note, that the
|
||||
model for web application class loaders <em>differs</em> slightly from this,
|
||||
as discussed below, but the main principles are the same.</p>
|
||||
|
||||
<p>When Tomcat is started, it creates a set of class loaders that are
|
||||
organized into the following parent-child relationships, where the parent
|
||||
class loader is above the child class loader:</p>
|
||||
|
||||
<div class="codeBox"><pre><code> Bootstrap
|
||||
|
|
||||
System
|
||||
|
|
||||
Common
|
||||
/ \
|
||||
Webapp1 Webapp2 ...</code></pre></div>
|
||||
|
||||
<p>The characteristics of each of these class loaders, including the source
|
||||
of classes and resources that they make visible, are discussed in detail in
|
||||
the following section.</p>
|
||||
|
||||
</div><h3 id="Class_Loader_Definitions">Class Loader Definitions</h3><div class="text">
|
||||
|
||||
<p>As indicated in the diagram above, Tomcat creates the following class
|
||||
loaders as it is initialized:</p>
|
||||
<ul>
|
||||
<li><p><strong>Bootstrap</strong> — This class loader contains the basic
|
||||
runtime classes provided by the Java Virtual Machine, plus any classes from
|
||||
JAR files present in the System Extensions directory
|
||||
(<code>$JAVA_HOME/jre/lib/ext</code>). <em>Note</em>: some JVMs may
|
||||
implement this as more than one class loader, or it may not be visible
|
||||
(as a class loader) at all.</p></li>
|
||||
<li><p><strong>System</strong> — This class loader is normally initialized
|
||||
from the contents of the <code>CLASSPATH</code> environment variable. All
|
||||
such classes are visible to both Tomcat internal classes, and to web
|
||||
applications. However, the standard Tomcat startup scripts
|
||||
(<code>$CATALINA_HOME/bin/catalina.sh</code> or
|
||||
<code>%CATALINA_HOME%\bin\catalina.bat</code>) totally ignore the contents
|
||||
of the <code>CLASSPATH</code> environment variable itself, and instead
|
||||
build the System class loader from the following repositories:
|
||||
</p>
|
||||
<ul>
|
||||
<li><p><em>$CATALINA_HOME/bin/bootstrap.jar</em> — Contains the
|
||||
main() method that is used to initialize the Tomcat server, and the
|
||||
class loader implementation classes it depends on.</p></li>
|
||||
<li><p><em>$CATALINA_BASE/bin/tomcat-juli.jar</em> or
|
||||
<em>$CATALINA_HOME/bin/tomcat-juli.jar</em> — Logging
|
||||
implementation classes. These include enhancement classes to
|
||||
<code>java.util.logging</code> API, known as Tomcat JULI,
|
||||
and a package-renamed copy of Apache Commons Logging library
|
||||
used internally by Tomcat.
|
||||
See <a href="logging.html">logging documentation</a> for more
|
||||
details.</p>
|
||||
<p>If <code>tomcat-juli.jar</code> is present in
|
||||
<em>$CATALINA_BASE/bin</em>, it is used instead of the one in
|
||||
<em>$CATALINA_HOME/bin</em>. It is useful in certain logging
|
||||
configurations</p></li>
|
||||
<li><p><em>$CATALINA_HOME/bin/commons-daemon.jar</em> — The classes
|
||||
from <a href="https://commons.apache.org/daemon/">Apache Commons
|
||||
Daemon</a> project.
|
||||
This JAR file is not present in the <code>CLASSPATH</code> built by
|
||||
<code>catalina.bat</code>|<code>.sh</code> scripts, but is referenced
|
||||
from the manifest file of <em>bootstrap.jar</em>.</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong>Common</strong> — This class loader contains additional
|
||||
classes that are made visible to both Tomcat internal classes and to all
|
||||
web applications.</p>
|
||||
<p>Normally, application classes should <strong>NOT</strong>
|
||||
be placed here. The locations searched by this class loader are defined by
|
||||
the <code>common.loader</code> property in
|
||||
$CATALINA_BASE/conf/catalina.properties. The default setting will search the
|
||||
following locations in the order they are listed:</p>
|
||||
<ul>
|
||||
<li>unpacked classes and resources in <code>$CATALINA_BASE/lib</code></li>
|
||||
<li>JAR files in <code>$CATALINA_BASE/lib</code></li>
|
||||
<li>unpacked classes and resources in <code>$CATALINA_HOME/lib</code></li>
|
||||
<li>JAR files in <code>$CATALINA_HOME/lib</code></li>
|
||||
</ul>
|
||||
<p>By default, this includes the following:</p>
|
||||
<ul>
|
||||
<li><em>annotations-api.jar</em> — Common Annotations 1.3 classes.
|
||||
</li>
|
||||
<li><em>catalina.jar</em> — Implementation of the Catalina servlet
|
||||
container portion of Tomcat.</li>
|
||||
<li><em>catalina-ant.jar</em> — Optional. Tomcat Catalina Ant tasks
|
||||
for working with the Manager web application.</li>
|
||||
<li><em>catalina-ha.jar</em> — Optional. High availability package
|
||||
that provides session clustering functionality built on Tribes.</li>
|
||||
<li><em>catalina-ssi.jar</em> — Optional. Server-side Includes module.
|
||||
</li>
|
||||
<li><em>catalina-storeconfig.jar</em> — Optional. Generation of XML
|
||||
configuration files from current state.</li>
|
||||
<li><em>catalina-tribes.jar</em> — Optional. Group communication
|
||||
package used by the high availabaility package.</li>
|
||||
<li><em>ecj-*.jar</em> — Optional. Eclipse JDT Java compiler used to
|
||||
compile JSPs to Servlets.</li>
|
||||
<li><em>el-api.jar</em> — Optional. EL 3.0 API.</li>
|
||||
<li><em>jasper.jar</em> — Optional. Tomcat Jasper JSP Compiler and
|
||||
Runtime.</li>
|
||||
<li><em>jasper-el.jar</em> — Optional. Tomcat EL implementation.</li>
|
||||
<li><em>jaspic-api.jar</em> — JASPIC 1.1 API.</li>
|
||||
<li><em>jsp-api.jar</em> — Optional. JSP 2.3 API.</li>
|
||||
<li><em>servlet-api.jar</em> — Java Servlet 4.0 API.</li>
|
||||
<li><em>tomcat-api.jar</em> — Several interfaces defined by Tomcat.
|
||||
</li>
|
||||
<li><em>tomcat-coyote.jar</em> — Tomcat connectors and utility
|
||||
classes.</li>
|
||||
<li><em>tomcat-dbcp.jar</em> — Optional. Database connection pool
|
||||
implementation based on package-renamed copy of Apache Commons Pool 2
|
||||
and Apache Commons DBCP 2.</li>
|
||||
<li><em>tomcat-i18n-**.jar</em> — Optional JARs containing resource
|
||||
bundles for other languages. As default bundles are also included in
|
||||
each individual JAR, they can be safely removed if no
|
||||
internationalization of messages is needed.</li>
|
||||
<li><em>tomcat-jdbc.jar</em> — Optional. An alternative database
|
||||
connection pool implementation, known as Tomcat JDBC pool. See
|
||||
<a href="jdbc-pool.html">documentation</a> for more details.</li>
|
||||
<li><em>tomcat-jni.jar</em> — Provides the integration with the Tomcat
|
||||
Native library.</li>
|
||||
<li><em>tomcat-util.jar</em> — Common classes used by various
|
||||
components of Apache Tomcat.</li>
|
||||
<li><em>tomcat-util-scan.jar</em> — Provides the class scanning
|
||||
functionality used by Tomcat.</li>
|
||||
<li><em>tomcat-websocket.jar</em> — Optional. Java WebSocket 1.1
|
||||
implementation</li>
|
||||
<li><em>websocket-api.jar</em> — Optional. Java WebSocket 1.1 API
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><p><strong>WebappX</strong> — A class loader is created for each web
|
||||
application that is deployed in a single Tomcat instance. All unpacked
|
||||
classes and resources in the <code>/WEB-INF/classes</code> directory of
|
||||
your web application, plus classes and resources in JAR files
|
||||
under the <code>/WEB-INF/lib</code> directory of your web application,
|
||||
are made visible to this web application, but not to other ones.</p></li>
|
||||
</ul>
|
||||
|
||||
<p>As mentioned above, the web application class loader diverges from the
|
||||
default Java delegation model (in accordance with the recommendations in the
|
||||
Servlet Specification, version 2.4, section 9.7.2 Web Application Classloader).
|
||||
When a request to load a
|
||||
class from the web application's <em>WebappX</em> class loader is processed,
|
||||
this class loader will look in the local repositories <strong>first</strong>,
|
||||
instead of delegating before looking. There are exceptions. Classes which are
|
||||
part of the JRE base classes cannot be overridden. There are some exceptions
|
||||
such as the XML parser components which can be overridden using the appropriate
|
||||
JVM feature which is the endorsed standards override feature for Java <= 8
|
||||
and the upgradeable modules feature for Java 9+.
|
||||
Lastly, the web application class loader will always delegate first for JavaEE
|
||||
API classes for the specifications implemented by Tomcat
|
||||
(Servlet, JSP, EL, WebSocket). All other class loaders in Tomcat follow the
|
||||
usual delegation pattern.</p>
|
||||
|
||||
<p>Therefore, from the perspective of a web application, class or resource
|
||||
loading looks in the following repositories, in this order:</p>
|
||||
<ul>
|
||||
<li>Bootstrap classes of your JVM</li>
|
||||
<li><em>/WEB-INF/classes</em> of your web application</li>
|
||||
<li><em>/WEB-INF/lib/*.jar</em> of your web application</li>
|
||||
<li>System class loader classes (described above)</li>
|
||||
<li>Common class loader classes (described above)</li>
|
||||
</ul>
|
||||
|
||||
<p>If the web application class loader is
|
||||
<a href="config/loader.html">configured</a> with
|
||||
<code><Loader delegate="true"/></code>
|
||||
then the order becomes:</p>
|
||||
<ul>
|
||||
<li>Bootstrap classes of your JVM</li>
|
||||
<li>System class loader classes (described above)</li>
|
||||
<li>Common class loader classes (described above)</li>
|
||||
<li><em>/WEB-INF/classes</em> of your web application</li>
|
||||
<li><em>/WEB-INF/lib/*.jar</em> of your web application</li>
|
||||
</ul>
|
||||
|
||||
</div><h3 id="XML_Parsers_and_Java">XML Parsers and Java</h3><div class="text">
|
||||
|
||||
<p>Starting with Java 1.4 a copy of JAXP APIs and an XML parser are packed
|
||||
inside the JRE. This has impacts on applications that wish to use their own
|
||||
XML parser.</p>
|
||||
|
||||
<p>In old versions of Tomcat, you could simply replace the XML parser
|
||||
in the Tomcat libraries directory to change the parser
|
||||
used by all web applications. However, this technique will not be effective
|
||||
when you are running modern versions of Java, because the usual class loader
|
||||
delegation process will always choose the implementation inside the JDK in
|
||||
preference to this one.</p>
|
||||
|
||||
<p>Java <= 8 supports a mechanism called the "Endorsed Standards Override
|
||||
Mechanism" 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. For more information, see:
|
||||
<a href="http://docs.oracle.com/javase/1.5.0/docs/guide/standards/index.html">
|
||||
http://docs.oracle.com/javase/1.5.0/docs/guide/standards/index.html</a>. For
|
||||
Java 9+, use the upgradeable modules feature.</p>
|
||||
|
||||
<p>Tomcat utilizes the endorsed mechanism by including the system property setting
|
||||
<code>-Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS</code> in the
|
||||
command line that starts the container. The default value of this option is
|
||||
<em>$CATALINA_HOME/endorsed</em>. This <em>endorsed</em> directory is not
|
||||
created by default. Note that the endorsed feature is no longer supported
|
||||
with Java 9 and the above system property will only be set if either the
|
||||
directory <em>$CATALINA_HOME/endorsed</em> exists, or the variable
|
||||
<code>JAVA_ENDORSED_DIRS</code> has been set.
|
||||
</p>
|
||||
|
||||
<p>Note that overriding any JRE component carries risk. If the overriding
|
||||
component does not provide a 100% compatible API (e.g. the API provided by
|
||||
Xerces is not 100% compatible with the XML API provided by the JRE) then there
|
||||
is a risk that Tomcat and/or the deployed application will experience errors.</p>
|
||||
|
||||
</div><h3 id="Running_under_a_security_manager">Running under a security manager</h3><div class="text">
|
||||
|
||||
<p>When running under a security manager the locations from which classes
|
||||
are permitted to be loaded will also depend on the contents of your policy
|
||||
file. See <a href="security-manager-howto.html">Security Manager How-To</a>
|
||||
for further information.</p>
|
||||
|
||||
</div><h3 id="Advanced_configuration">Advanced configuration</h3><div class="text">
|
||||
|
||||
<p>A more complex class loader hierarchy may also be configured. See the diagram
|
||||
below. By default, the <strong>Server</strong> and <strong>Shared</strong>
|
||||
class loaders are not defined and the simplified hierarchy shown above is used.
|
||||
This more complex hierarchy may be use by defining values for the
|
||||
<code>server.loader</code> and/or <code>shared.loader</code> properties in
|
||||
<code>conf/catalina.properties</code>.</p>
|
||||
|
||||
<div class="codeBox"><pre><code>
|
||||
Bootstrap
|
||||
|
|
||||
System
|
||||
|
|
||||
Common
|
||||
/ \
|
||||
Server Shared
|
||||
/ \
|
||||
Webapp1 Webapp2 ...</code></pre></div>
|
||||
|
||||
<p>The <strong>Server</strong> class loader is only visible to Tomcat internals
|
||||
and is completely invisible to web applications.</p>
|
||||
|
||||
<p>The <strong>Shared</strong> class loader is visible to all web applications
|
||||
and may be used to shared code across all web applications. However, any updates
|
||||
to this shared code will require a Tomcat restart.</p>
|
||||
|
||||
</div></div></div></div></div><footer><div id="footer">
|
||||
Copyright © 1999-2023, The Apache Software Foundation
|
||||
</div></footer></div></body></html>
|
651
tomcatfiles/docs/cluster-howto.html
Normal file
|
@ -0,0 +1,651 @@
|
|||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="./images/docs-stylesheet.css" rel="stylesheet" type="text/css"><title>Apache Tomcat 9 (9.0.76) - Clustering/Session Replication How-To</title><meta name="author" content="Filip Hanik"><meta name="author" content="Peter Rossbach"></head><body><div id="wrapper"><header><div id="header"><div><div><div class="logo noPrint"><a href="https://tomcat.apache.org/"><img alt="Tomcat Home" src="./images/tomcat.png"></a></div><div style="height: 1px;"></div><div class="asfLogo noPrint"><a href="https://www.apache.org/" target="_blank"><img src="./images/asf-logo.svg" alt="The Apache Software Foundation" style="width: 266px; height: 83px;"></a></div><h1>Apache Tomcat 9</h1><div class="versionInfo">
|
||||
Version 9.0.76,
|
||||
<time datetime="2023-06-05">Jun 5 2023</time></div><div style="height: 1px;"></div><div style="clear: left;"></div></div></div></div></header><div id="middle"><div><div id="mainLeft" class="noprint"><div><nav><div><h2>Links</h2><ul><li><a href="index.html">Docs Home</a></li><li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul></div><div><h2>User Guide</h2><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="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li><li><a href="rewrite.html">33) Rewrite</a></li><li><a href="cdi.html">34) CDI 2 and JAX-RS</a></li><li><a href="graal.html">35) AOT/GraalVM Support</a></li></ul></div><div><h2>Reference</h2><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 4.0 Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.3 Javadocs</a></li><li><a href="elapi/index.html">EL 3.0 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="jaspicapi/index.html">JASPIC 1.1 Javadocs</a></li><li><a href="annotationapi/index.html">Common Annotations 1.3 Javadocs</a></li><li><a href="https://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul></div><div><h2>Apache Tomcat Development</h2><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/Tomcat+Versions">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></div></nav></div></div><div id="mainRight"><div id="content"><h2>Clustering/Session Replication How-To</h2><h3 id="Important_Note">Important Note</h3><div class="text">
|
||||
<p><b>You can also check the <a href="config/cluster.html">configuration reference documentation.</a></b>
|
||||
</p>
|
||||
</div><h3 id="Table_of_Contents">Table of Contents</h3><div class="text">
|
||||
<ul><li><a href="#For_the_impatient">For the impatient</a></li><li><a href="#Security">Security</a></li><li><a href="#Cluster_Basics">Cluster Basics</a></li><li><a href="#Overview">Overview</a></li><li><a href="#Cluster_Information">Cluster Information</a></li><li><a href="#Bind_session_after_crash_to_failover_node">Bind session after crash to failover node</a></li><li><a href="#Configuration_Example">Configuration Example</a></li><li><a href="#Cluster_Architecture">Cluster Architecture</a></li><li><a href="#How_it_Works">How it Works</a></li><li><a href="#Monitoring_your_Cluster_with_JMX">Monitoring your Cluster with JMX</a></li><li><a href="#FAQ">FAQ</a></li></ul>
|
||||
</div><h3 id="For_the_impatient">For the impatient</h3><div class="text">
|
||||
<p>
|
||||
Simply add
|
||||
</p>
|
||||
<div class="codeBox"><pre><code><Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/></code></pre></div>
|
||||
<p>
|
||||
to your <code><Engine></code> or your <code><Host></code> element to enable clustering.
|
||||
</p>
|
||||
<p>
|
||||
Using the above configuration will enable all-to-all session replication
|
||||
using the <code>DeltaManager</code> to replicate session deltas. By all-to-all, we mean that <i>every</i>
|
||||
session gets replicated to <i>all the other nodes</i> in the cluster.
|
||||
This works great for smaller clusters, but we don't recommend it for larger clusters — more than 4 nodes or so.
|
||||
Also, when using the DeltaManager, Tomcat will replicate sessions to <i>all</i> nodes,
|
||||
<i>even nodes that don't have the application deployed</i>.<br>
|
||||
To get around these problem, you'll want to use the <code>BackupManager</code>. The <code>BackupManager</code>
|
||||
only replicates the session data to <i>one</i> backup node, and only to nodes that have the application deployed.
|
||||
Once you have a simple cluster running with the <code>DeltaManager</code>, you will probably want to
|
||||
migrate to the <code>BackupManager</code> as you increase the number of nodes in your cluster.
|
||||
</p>
|
||||
<p>
|
||||
Here are some of the important default values:
|
||||
</p>
|
||||
<ol>
|
||||
<li>Multicast address is 228.0.0.4</li>
|
||||
<li>Multicast port is 45564 (the port and the address together determine cluster membership.</li>
|
||||
<li>The IP broadcasted is <code>java.net.InetAddress.getLocalHost().getHostAddress()</code> (make sure you don't broadcast 127.0.0.1, this is a common error)</li>
|
||||
<li>The TCP port listening for replication messages is the first available server socket in range <code>4000-4100</code></li>
|
||||
<li>Listener is configured <code>ClusterSessionListener</code></li>
|
||||
<li>Two interceptors are configured <code>TcpFailureDetector</code> and <code>MessageDispatchInterceptor</code></li>
|
||||
</ol>
|
||||
<p>
|
||||
The following is the default cluster configuration:
|
||||
</p>
|
||||
<div class="codeBox"><pre><code> <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
|
||||
channelSendOptions="8">
|
||||
|
||||
<Manager className="org.apache.catalina.ha.session.DeltaManager"
|
||||
expireSessionsOnShutdown="false"
|
||||
notifyListenersOnReplication="true"/>
|
||||
|
||||
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
|
||||
<Membership className="org.apache.catalina.tribes.membership.McastService"
|
||||
address="228.0.0.4"
|
||||
port="45564"
|
||||
frequency="500"
|
||||
dropTime="3000"/>
|
||||
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
|
||||
address="auto"
|
||||
port="4000"
|
||||
autoBind="100"
|
||||
selectorTimeout="5000"
|
||||
maxThreads="6"/>
|
||||
|
||||
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
|
||||
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
|
||||
</Sender>
|
||||
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
|
||||
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/>
|
||||
</Channel>
|
||||
|
||||
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
|
||||
filter=""/>
|
||||
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
|
||||
|
||||
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
|
||||
tempDir="/tmp/war-temp/"
|
||||
deployDir="/tmp/war-deploy/"
|
||||
watchDir="/tmp/war-listen/"
|
||||
watchEnabled="false"/>
|
||||
|
||||
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
|
||||
</Cluster></code></pre></div>
|
||||
<p>We will cover this section in more detail later in this document.</p>
|
||||
</div><h3 id="Security">Security</h3><div class="text">
|
||||
|
||||
<p>The cluster implementation is written on the basis that a secure, trusted
|
||||
network is used for all of the cluster related network traffic. It is not safe
|
||||
to run a cluster on a insecure, untrusted network.</p>
|
||||
|
||||
<p>There are many options for providing a secure, trusted network for use by a
|
||||
Tomcat cluster. These include:</p>
|
||||
<ul>
|
||||
<li>private LAN</li>
|
||||
<li>a Virtual Private Network (VPN)</li>
|
||||
<li>IPSEC</li>
|
||||
</ul>
|
||||
|
||||
<p>The <a href="cluster-interceptor.html#org.apache.catalina.tribes.group.interceptors.EncryptInterceptor_Attributes">EncryptInterceptor</a>
|
||||
provides confidentiality and integrity protection but it does not protect
|
||||
against all risks associated with running a Tomcat cluster on an untrusted
|
||||
network, particularly DoS attacks.</p>
|
||||
|
||||
</div><h3 id="Cluster_Basics">Cluster Basics</h3><div class="text">
|
||||
|
||||
<p>To run session replication in your Tomcat 9 container, the following steps
|
||||
should be completed:</p>
|
||||
<ul>
|
||||
<li>All your session attributes must implement <code>java.io.Serializable</code></li>
|
||||
<li>Uncomment the <code>Cluster</code> element in server.xml</li>
|
||||
<li>If you have defined custom cluster valves, make sure you have the <code>ReplicationValve</code> defined as well under the Cluster element in server.xml</li>
|
||||
<li>If your Tomcat instances are running on the same machine, make sure the <code>Receiver.port</code>
|
||||
attribute is unique for each instance, in most cases Tomcat is smart enough to resolve this on it's own by autodetecting available ports in the range 4000-4100</li>
|
||||
<li>Make sure your <code>web.xml</code> has the
|
||||
<code><distributable/></code> element</li>
|
||||
<li>If you are using mod_jk, make sure that jvmRoute attribute is set at your Engine <code><Engine name="Catalina" jvmRoute="node01" ></code>
|
||||
and that the jvmRoute attribute value matches your worker name in workers.properties</li>
|
||||
<li>Make sure that all nodes have the same time and sync with NTP service!</li>
|
||||
<li>Make sure that your loadbalancer is configured for sticky session mode.</li>
|
||||
</ul>
|
||||
<p>Load balancing can be achieved through many techniques, as seen in the
|
||||
<a href="balancer-howto.html">Load Balancing</a> chapter.</p>
|
||||
<p>Note: Remember that your session state is tracked by a cookie, so your URL must look the same from the out
|
||||
side otherwise, a new session will be created.</p>
|
||||
<p>The Cluster module uses the Tomcat JULI logging framework, so you can configure logging
|
||||
through the regular logging.properties file. To track messages, you can enable logging on the key: <code>org.apache.catalina.tribes.MESSAGES</code></p>
|
||||
</div><h3 id="Overview">Overview</h3><div class="text">
|
||||
|
||||
<p>To enable session replication in Tomcat, three different paths can be followed to achieve the exact same thing:</p>
|
||||
<ol>
|
||||
<li>Using session persistence, and saving the session to a shared file system (PersistenceManager + FileStore)</li>
|
||||
<li>Using session persistence, and saving the session to a shared database (PersistenceManager + JDBCStore)</li>
|
||||
<li>Using in-memory-replication, using the SimpleTcpCluster that ships with Tomcat (lib/catalina-tribes.jar + lib/catalina-ha.jar)</li>
|
||||
</ol>
|
||||
|
||||
<p>Tomcat can perform an all-to-all replication of session state using the <code>DeltaManager</code> or
|
||||
perform backup replication to only one node using the <code>BackupManager</code>.
|
||||
The all-to-all replication is an algorithm that is only efficient when the clusters are small. For larger clusters, you
|
||||
should use the BackupManager to use a primary-secondary session replication strategy where the session will only be
|
||||
stored at one backup node.<br>
|
||||
|
||||
Currently you can use the domain worker attribute (mod_jk > 1.2.8) to build cluster partitions
|
||||
with the potential of having a more scalable cluster solution with the DeltaManager
|
||||
(you'll need to configure the domain interceptor for this).
|
||||
In order to keep the network traffic down in an all-to-all environment, you can split your cluster
|
||||
into smaller groups. This can be easily achieved by using different multicast addresses for the different groups.
|
||||
A very simple setup would look like this:
|
||||
</p>
|
||||
|
||||
<div class="codeBox"><pre><code> DNS Round Robin
|
||||
|
|
||||
Load Balancer
|
||||
/ \
|
||||
Cluster1 Cluster2
|
||||
/ \ / \
|
||||
Tomcat1 Tomcat2 Tomcat3 Tomcat4</code></pre></div>
|
||||
|
||||
<p>What is important to mention here, is that session replication is only the beginning of clustering.
|
||||
Another popular concept used to implement clusters is farming, i.e., you deploy your apps only to one
|
||||
server, and the cluster will distribute the deployments across the entire cluster.
|
||||
This is all capabilities that can go into with the FarmWarDeployer (s. cluster example at <code>server.xml</code>)</p>
|
||||
<p>In the next section will go deeper into how session replication works and how to configure it.</p>
|
||||
|
||||
</div><h3 id="Cluster_Information">Cluster Information</h3><div class="text">
|
||||
<p>Membership is established using multicast heartbeats.
|
||||
Hence, if you wish to subdivide your clusters, you can do this by
|
||||
changing the multicast IP address or port in the <code><Membership></code> element.
|
||||
</p>
|
||||
<p>
|
||||
The heartbeat contains the IP address of the Tomcat node and the TCP port that
|
||||
Tomcat listens to for replication traffic. All data communication happens over TCP.
|
||||
</p>
|
||||
<p>
|
||||
The <code>ReplicationValve</code> is used to find out when the request has been completed and initiate the
|
||||
replication, if any. Data is only replicated if the session has changed (by calling setAttribute or removeAttribute
|
||||
on the session).
|
||||
</p>
|
||||
<p>
|
||||
One of the most important performance considerations is the synchronous versus asynchronous replication.
|
||||
In a synchronous replication mode the request doesn't return until the replicated session has been
|
||||
sent over the wire and reinstantiated on all the other cluster nodes.
|
||||
Synchronous vs. asynchronous is configured using the <code>channelSendOptions</code>
|
||||
flag and is an integer value. The default value for the <code>SimpleTcpCluster/DeltaManager</code> combo is
|
||||
8, which is asynchronous.
|
||||
See the <a href="config/cluster.html#SimpleTcpCluster_Attributes">configuration reference</a>
|
||||
for more discussion on the various <code>channelSendOptions</code> values.
|
||||
</p>
|
||||
<p>
|
||||
For convenience, <code>channelSendOptions</code> can be set by name(s) rather than integer,
|
||||
which are then translated to their integer value upon startup. The valid option names are:
|
||||
"asynchronous" (alias "async"), "byte_message" (alias "byte"), "multicast", "secure",
|
||||
"synchronized_ack" (alias "sync"), "udp", "use_ack". Use comma to separate multiple names,
|
||||
e.g. pass "async, multicast" for the options
|
||||
<code>SEND_OPTIONS_ASYNCHRONOUS | SEND_OPTIONS_MULTICAST</code>.
|
||||
</p>
|
||||
<p>
|
||||
You can read more on the <a href="tribes/introduction.html">send flag(overview)</a> or the
|
||||
<a href="https://tomcat.apache.org/tomcat-9.0-doc/api/org/apache/catalina/tribes/Channel.html">send flag(javadoc)</a>.
|
||||
During async replication, the request is returned before the data has been replicated. async
|
||||
replication yields shorter request times, and synchronous replication guarantees the session
|
||||
to be replicated before the request returns.
|
||||
</p>
|
||||
</div><h3 id="Bind_session_after_crash_to_failover_node">Bind session after crash to failover node</h3><div class="text">
|
||||
<p>
|
||||
If you are using mod_jk and not using sticky sessions or for some reasons sticky session don't
|
||||
work, or you are simply failing over, the session id will need to be modified as it previously contained
|
||||
the worker id of the previous tomcat (as defined by jvmRoute in the Engine element).
|
||||
To solve this, we will use the JvmRouteBinderValve.
|
||||
</p>
|
||||
<p>
|
||||
The JvmRouteBinderValve rewrites the session id to ensure that the next request will remain sticky
|
||||
(and not fall back to go to random nodes since the worker is no longer available) after a fail over.
|
||||
The valve rewrites the JSESSIONID value in the cookie with the same name.
|
||||
Not having this valve in place, will make it harder to ensure stickiness in case of a failure for the mod_jk module.
|
||||
</p>
|
||||
<p>
|
||||
Remember, if you are adding your own valves in server.xml then the defaults are no longer valid,
|
||||
make sure that you add in all the appropriate valves as defined by the default.
|
||||
</p>
|
||||
<p>
|
||||
<b>Hint:</b><br>
|
||||
With attribute <i>sessionIdAttribute</i> you can change the request attribute name that included the old session id.
|
||||
Default attribute name is <i>org.apache.catalina.ha.session.JvmRouteOriginalSessionID</i>.
|
||||
</p>
|
||||
<p>
|
||||
<b>Trick:</b><br>
|
||||
You can enable this mod_jk turnover mode via JMX before you drop a node to all backup nodes!
|
||||
Set enable true on all JvmRouteBinderValve backups, disable worker at mod_jk
|
||||
and then drop node and restart it! Then enable mod_jk Worker and disable JvmRouteBinderValves again.
|
||||
This use case means that only requested session are migrated.
|
||||
</p>
|
||||
|
||||
|
||||
</div><h3 id="Configuration_Example">Configuration Example</h3><div class="text">
|
||||
<div class="codeBox"><pre><code> <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
|
||||
channelSendOptions="6">
|
||||
|
||||
<Manager className="org.apache.catalina.ha.session.BackupManager"
|
||||
expireSessionsOnShutdown="false"
|
||||
notifyListenersOnReplication="true"
|
||||
mapSendOptions="6"/>
|
||||
<!--
|
||||
<Manager className="org.apache.catalina.ha.session.DeltaManager"
|
||||
expireSessionsOnShutdown="false"
|
||||
notifyListenersOnReplication="true"/>
|
||||
-->
|
||||
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
|
||||
<Membership className="org.apache.catalina.tribes.membership.McastService"
|
||||
address="228.0.0.4"
|
||||
port="45564"
|
||||
frequency="500"
|
||||
dropTime="3000"/>
|
||||
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
|
||||
address="auto"
|
||||
port="5000"
|
||||
selectorTimeout="100"
|
||||
maxThreads="6"/>
|
||||
|
||||
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
|
||||
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
|
||||
</Sender>
|
||||
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
|
||||
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/>
|
||||
<Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
|
||||
</Channel>
|
||||
|
||||
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
|
||||
filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt"/>
|
||||
|
||||
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
|
||||
tempDir="/tmp/war-temp/"
|
||||
deployDir="/tmp/war-deploy/"
|
||||
watchDir="/tmp/war-listen/"
|
||||
watchEnabled="false"/>
|
||||
|
||||
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
|
||||
</Cluster></code></pre></div>
|
||||
<p>
|
||||
Break it down!!
|
||||
</p>
|
||||
<div class="codeBox"><pre><code> <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
|
||||
channelSendOptions="6"></code></pre></div>
|
||||
<p>
|
||||
The main element, inside this element all cluster details can be configured.
|
||||
The <code>channelSendOptions</code> is the flag that is attached to each message sent by the
|
||||
SimpleTcpCluster class or any objects that are invoking the SimpleTcpCluster.send method.
|
||||
The description of the send flags is available at <a href="https://tomcat.apache.org/tomcat-9.0-doc/api/org/apache/catalina/tribes/Channel.html">
|
||||
our javadoc site</a>
|
||||
The <code>DeltaManager</code> sends information using the SimpleTcpCluster.send method, while the backup manager
|
||||
sends it itself directly through the channel.
|
||||
<br>For more info, Please visit the <a href="config/cluster.html">reference documentation</a>
|
||||
</p>
|
||||
<div class="codeBox"><pre><code> <Manager className="org.apache.catalina.ha.session.BackupManager"
|
||||
expireSessionsOnShutdown="false"
|
||||
notifyListenersOnReplication="true"
|
||||
mapSendOptions="6"/>
|
||||
<!--
|
||||
<Manager className="org.apache.catalina.ha.session.DeltaManager"
|
||||
expireSessionsOnShutdown="false"
|
||||
notifyListenersOnReplication="true"/>
|
||||
--></code></pre></div>
|
||||
<p>
|
||||
This is a template for the manager configuration that will be used if no manager is defined in the <Context>
|
||||
element. In Tomcat 5.x each webapp marked distributable had to use the same manager, this is no longer the case
|
||||
since Tomcat you can define a manager class for each webapp, so that you can mix managers in your cluster.
|
||||
Obviously the managers on one node's application has to correspond with the same manager on the same application on the other node.
|
||||
If no manager has been specified for the webapp, and the webapp is marked <distributable/> Tomcat will take this manager configuration
|
||||
and create a manager instance cloning this configuration.
|
||||
<br>For more info, Please visit the <a href="config/cluster-manager.html">reference documentation</a>
|
||||
</p>
|
||||
<div class="codeBox"><pre><code> <Channel className="org.apache.catalina.tribes.group.GroupChannel"></code></pre></div>
|
||||
<p>
|
||||
The channel element is <a href="tribes/introduction.html">Tribes</a>, the group communication framework
|
||||
used inside Tomcat. This element encapsulates everything that has to do with communication and membership logic.
|
||||
<br>For more info, Please visit the <a href="config/cluster-channel.html">reference documentation</a>
|
||||
</p>
|
||||
<div class="codeBox"><pre><code> <Membership className="org.apache.catalina.tribes.membership.McastService"
|
||||
address="228.0.0.4"
|
||||
port="45564"
|
||||
frequency="500"
|
||||
dropTime="3000"/></code></pre></div>
|
||||
<p>
|
||||
Membership is done using multicasting. Please note that Tribes also supports static memberships using the
|
||||
<code>StaticMembershipInterceptor</code> if you want to extend your membership to points beyond multicasting.
|
||||
The address attribute is the multicast address used and the port is the multicast port. These two together
|
||||
create the cluster separation. If you want a QA cluster and a production cluster, the easiest config is to
|
||||
have the QA cluster be on a separate multicast address/port combination than the production cluster.<br>
|
||||
The membership component broadcasts TCP address/port of itself to the other nodes so that communication between
|
||||
nodes can be done over TCP. Please note that the address being broadcasted is the one of the
|
||||
<code>Receiver.address</code> attribute.
|
||||
<br>For more info, Please visit the <a href="config/cluster-membership.html">reference documentation</a>
|
||||
</p>
|
||||
<div class="codeBox"><pre><code> <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
|
||||
address="auto"
|
||||
port="5000"
|
||||
selectorTimeout="100"
|
||||
maxThreads="6"/></code></pre></div>
|
||||
<p>
|
||||
In tribes the logic of sending and receiving data has been broken into two functional components. The Receiver, as the name suggests
|
||||
is responsible for receiving messages. Since the Tribes stack is thread less, (a popular improvement now adopted by other frameworks as well),
|
||||
there is a thread pool in this component that has a maxThreads and minThreads setting.<br>
|
||||
The address attribute is the host address that will be broadcasted by the membership component to the other nodes.
|
||||
<br>For more info, Please visit the <a href="config/cluster-receiver.html">reference documentation</a>
|
||||
</p>
|
||||
<div class="codeBox"><pre><code> <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
|
||||
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
|
||||
</Sender></code></pre></div>
|
||||
<p>
|
||||
The sender component, as the name indicates is responsible for sending messages to other nodes.
|
||||
The sender has a shell component, the <code>ReplicationTransmitter</code> but the real stuff done is done in the
|
||||
sub component, <code>Transport</code>.
|
||||
Tribes support having a pool of senders, so that messages can be sent in parallel and if using the NIO sender,
|
||||
you can send messages concurrently as well.<br>
|
||||
Concurrently means one message to multiple senders at the same time and Parallel means multiple messages to multiple senders
|
||||
at the same time.
|
||||
<br>For more info, Please visit the <a href="config/cluster-sender.html">reference documentation</a>
|
||||
</p>
|
||||
<div class="codeBox"><pre><code> <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
|
||||
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/>
|
||||
<Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
|
||||
</Channel></code></pre></div>
|
||||
<p>
|
||||
Tribes uses a stack to send messages through. Each element in the stack is called an interceptor, and works much like the valves do
|
||||
in the Tomcat servlet container.
|
||||
Using interceptors, logic can be broken into more manageable pieces of code. The interceptors configured above are:<br>
|
||||
TcpFailureDetector - verifies crashed members through TCP, if multicast packets get dropped, this interceptor protects against false positives,
|
||||
ie the node marked as crashed even though it still is alive and running.<br>
|
||||
MessageDispatchInterceptor - dispatches messages to a thread (thread pool) to send message asynchronously.<br>
|
||||
ThroughputInterceptor - prints out simple stats on message traffic.<br>
|
||||
Please note that the order of interceptors is important. The way they are defined in server.xml is the way they are represented in the
|
||||
channel stack. Think of it as a linked list, with the head being the first most interceptor and the tail the last.
|
||||
<br>For more info, Please visit the <a href="config/cluster-interceptor.html">reference documentation</a>
|
||||
</p>
|
||||
<div class="codeBox"><pre><code> <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
|
||||
filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt"/></code></pre></div>
|
||||
<p>
|
||||
The cluster uses valves to track requests to web applications, we've mentioned the ReplicationValve and the JvmRouteBinderValve above.
|
||||
The <Cluster> element itself is not part of the pipeline in Tomcat, instead the cluster adds the valve to its parent container.
|
||||
If the <Cluster> elements is configured in the <Engine> element, the valves get added to the engine and so on.
|
||||
<br>For more info, Please visit the <a href="config/cluster-valve.html">reference documentation</a>
|
||||
</p>
|
||||
<div class="codeBox"><pre><code> <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
|
||||
tempDir="/tmp/war-temp/"
|
||||
deployDir="/tmp/war-deploy/"
|
||||
watchDir="/tmp/war-listen/"
|
||||
watchEnabled="false"/></code></pre></div>
|
||||
<p>
|
||||
The default tomcat cluster supports farmed deployment, ie, the cluster can deploy and undeploy applications on the other nodes.
|
||||
The state of this component is currently in flux but will be addressed soon. There was a change in the deployment algorithm
|
||||
between Tomcat 5.0 and 5.5 and at that point, the logic of this component changed to where the deploy dir has to match the
|
||||
webapps directory.
|
||||
<br>For more info, Please visit the <a href="config/cluster-deployer.html">reference documentation</a>
|
||||
</p>
|
||||
<div class="codeBox"><pre><code> <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
|
||||
</Cluster></code></pre></div>
|
||||
<p>
|
||||
Since the SimpleTcpCluster itself is a sender and receiver of the Channel object, components can register themselves as listeners to
|
||||
the SimpleTcpCluster. The listener above <code>ClusterSessionListener</code> listens for DeltaManager replication messages
|
||||
and applies the deltas to the manager that in turn applies it to the session.
|
||||
<br>For more info, Please visit the <a href="config/cluster-listener.html">reference documentation</a>
|
||||
</p>
|
||||
|
||||
</div><h3 id="Cluster_Architecture">Cluster Architecture</h3><div class="text">
|
||||
|
||||
<p><b>Component Levels:</b></p>
|
||||
<div class="codeBox"><pre><code> Server
|
||||
|
|
||||
Service
|
||||
|
|
||||
Engine
|
||||
| \
|
||||
| --- Cluster --*
|
||||
|
|
||||
Host
|
||||
|
|
||||
------
|
||||
/ \
|
||||
Cluster Context(1-N)
|
||||
| \
|
||||
| -- Manager
|
||||
| \
|
||||
| -- DeltaManager
|
||||
| -- BackupManager
|
||||
|
|
||||
---------------------------
|
||||
| \
|
||||
Channel \
|
||||
----------------------------- \
|
||||
| \
|
||||
Interceptor_1 .. \
|
||||
| \
|
||||
Interceptor_N \
|
||||
----------------------------- \
|
||||
| | | \
|
||||
Receiver Sender Membership \
|
||||
-- Valve
|
||||
| \
|
||||
| -- ReplicationValve
|
||||
| -- JvmRouteBinderValve
|
||||
|
|
||||
-- LifecycleListener
|
||||
|
|
||||
-- ClusterListener
|
||||
| \
|
||||
| -- ClusterSessionListener
|
||||
|
|
||||
-- Deployer
|
||||
\
|
||||
-- FarmWarDeployer
|
||||
|
||||
</code></pre></div>
|
||||
|
||||
|
||||
</div><h3 id="How_it_Works">How it Works</h3><div class="text">
|
||||
<p>To make it easy to understand how clustering works, we are gonna to take you through a series of scenarios.
|
||||
In this scenario we only plan to use two tomcat instances <code>TomcatA</code> and <code>TomcatB</code>.
|
||||
We will cover the following sequence of events:</p>
|
||||
|
||||
<ol>
|
||||
<li><code>TomcatA</code> starts up</li>
|
||||
<li><code>TomcatB</code> starts up (Wait the TomcatA start is complete)</li>
|
||||
<li><code>TomcatA</code> receives a request, a session <code>S1</code> is created.</li>
|
||||
<li><code>TomcatA</code> crashes</li>
|
||||
<li><code>TomcatB</code> receives a request for session <code>S1</code></li>
|
||||
<li><code>TomcatA</code> starts up</li>
|
||||
<li><code>TomcatA</code> receives a request, invalidate is called on the session (<code>S1</code>)</li>
|
||||
<li><code>TomcatB</code> receives a request, for a new session (<code>S2</code>)</li>
|
||||
<li><code>TomcatA</code> The session <code>S2</code> expires due to inactivity.</li>
|
||||
</ol>
|
||||
|
||||
<p>Ok, now that we have a good sequence, we will take you through exactly what happens in the session replication code</p>
|
||||
|
||||
<ol>
|
||||
<li><b><code>TomcatA</code> starts up</b>
|
||||
<p>
|
||||
Tomcat starts up using the standard start up sequence. When the Host object is created, a cluster object is associated with it.
|
||||
When the contexts are parsed, if the distributable element is in place in the web.xml file,
|
||||
Tomcat asks the Cluster class (in this case <code>SimpleTcpCluster</code>) to create a manager
|
||||
for the replicated context. So with clustering enabled, distributable set in web.xml
|
||||
Tomcat will create a <code>DeltaManager</code> for that context instead of a <code>StandardManager</code>.
|
||||
The cluster class will start up a membership service (multicast) and a replication service (tcp unicast).
|
||||
More on the architecture further down in this document.
|
||||
</p>
|
||||
</li>
|
||||
<li><b><code>TomcatB</code> starts up</b>
|
||||
<p>
|
||||
When TomcatB starts up, it follows the same sequence as TomcatA did with one exception.
|
||||
The cluster is started and will establish a membership (TomcatA, TomcatB).
|
||||
TomcatB will now request the session state from a server that already exists in the cluster,
|
||||
in this case TomcatA. TomcatA responds to the request, and before TomcatB starts listening
|
||||
for HTTP requests, the state has been transferred from TomcatA to TomcatB.
|
||||
In case TomcatA doesn't respond, TomcatB will time out after 60 seconds, issue a log
|
||||
entry, and continue starting. The session state gets transferred for each web
|
||||
application that has distributable in its web.xml. (Note: To use session replication
|
||||
efficiently, all your tomcat instances should be configured the same.)
|
||||
</p>
|
||||
</li>
|
||||
<li><B><code>TomcatA</code> receives a request, a session <code>S1</code> is created.</B>
|
||||
<p>
|
||||
The request coming in to TomcatA is handled exactly the same way as without session
|
||||
replication, until the request is completed, at which time the
|
||||
<code>ReplicationValve</code> will intercept the request before the response is
|
||||
returned to the user. At this point it finds that the session has been modified,
|
||||
and it uses TCP to replicate the session to TomcatB. Once the serialized data has
|
||||
been handed off to the operating system's TCP logic, the request returns to the user,
|
||||
back through the valve pipeline. For each request the entire session is replicated,
|
||||
this allows code that modifies attributes in the session without calling setAttribute
|
||||
or removeAttribute to be replicated. A useDirtyFlag configuration parameter can
|
||||
be used to optimize the number of times a session is replicated.
|
||||
</p>
|
||||
|
||||
</li>
|
||||
<li><b><code>TomcatA</code> crashes</b>
|
||||
<p>
|
||||
When TomcatA crashes, TomcatB receives a notification that TomcatA has dropped out
|
||||
of the cluster. TomcatB removes TomcatA from its membership list, and TomcatA will
|
||||
no longer be notified of any changes that occurs in TomcatB. The load balancer
|
||||
will redirect the requests from TomcatA to TomcatB and all the sessions are current.
|
||||
</p>
|
||||
</li>
|
||||
<li><b><code>TomcatB</code> receives a request for session <code>S1</code></b>
|
||||
<p>Nothing exciting, TomcatB will process the request as any other request.
|
||||
</p>
|
||||
</li>
|
||||
<li><b><code>TomcatA</code> starts up</b>
|
||||
<p>Upon start up, before TomcatA starts taking new request and making itself
|
||||
available to it will follow the start up sequence described above 1) 2).
|
||||
It will join the cluster, contact TomcatB for the current state of all the sessions.
|
||||
And once it receives the session state, it finishes loading and opens its HTTP/mod_jk ports.
|
||||
So no requests will make it to TomcatA until it has received the session state from TomcatB.
|
||||
</p>
|
||||
</li>
|
||||
<li><b><code>TomcatA</code> receives a request, invalidate is called on the session (<code>S1</code>)</b>
|
||||
<p>The invalidate call is intercepted, and the session is queued with invalidated sessions.
|
||||
When the request is complete, instead of sending out the session that has changed, it sends out
|
||||
an "expire" message to TomcatB and TomcatB will invalidate the session as well.
|
||||
</p>
|
||||
|
||||
</li>
|
||||
<li><b><code>TomcatB</code> receives a request, for a new session (<code>S2</code>)</b>
|
||||
<p>Same scenario as in step 3)
|
||||
</p>
|
||||
|
||||
|
||||
</li>
|
||||
<li><code>TomcatA</code> The session <code>S2</code> expires due to inactivity.
|
||||
<p>The invalidate call is intercepted the same way as when a session is invalidated by the user,
|
||||
and the session is queued with invalidated sessions.
|
||||
At this point, the invalidated session will not be replicated across until
|
||||
another request comes through the system and checks the invalid queue.
|
||||
</p>
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
<p>Phuuuhh! :)</p>
|
||||
|
||||
<p><b>Membership</b>
|
||||
Clustering membership is established using very simple multicast pings.
|
||||
Each Tomcat instance will periodically send out a multicast ping,
|
||||
in the ping message the instance will broadcast its IP and TCP listen port
|
||||
for replication.
|
||||
If an instance has not received such a ping within a given timeframe, the
|
||||
member is considered dead. Very simple, and very effective!
|
||||
Of course, you need to enable multicasting on your system.
|
||||
</p>
|
||||
|
||||
<p><b>TCP Replication</b>
|
||||
Once a multicast ping has been received, the member is added to the cluster
|
||||
Upon the next replication request, the sending instance will use the host and
|
||||
port info and establish a TCP socket. Using this socket it sends over the serialized data.
|
||||
The reason I chose TCP sockets is because it has built in flow control and guaranteed delivery.
|
||||
So I know, when I send some data, it will make it there :)
|
||||
</p>
|
||||
|
||||
<p><b>Distributed locking and pages using frames</b>
|
||||
Tomcat does not keep session instances in sync across the cluster.
|
||||
The implementation of such logic would be to much overhead and cause all
|
||||
kinds of problems. If your client accesses the same session
|
||||
simultaneously using multiple requests, then the last request
|
||||
will override the other sessions in the cluster.
|
||||
</p>
|
||||
|
||||
</div><h3 id="Monitoring_your_Cluster_with_JMX">Monitoring your Cluster with JMX</h3><div class="text">
|
||||
<p>Monitoring is a very important question when you use a cluster. Some of the cluster objects are JMX MBeans </p>
|
||||
<p>Add the following parameter to your startup script:</p>
|
||||
<div class="codeBox"><pre><code>set CATALINA_OPTS=\
|
||||
-Dcom.sun.management.jmxremote \
|
||||
-Dcom.sun.management.jmxremote.port=%my.jmx.port% \
|
||||
-Dcom.sun.management.jmxremote.ssl=false \
|
||||
-Dcom.sun.management.jmxremote.authenticate=false</code></pre></div>
|
||||
|
||||
<p>
|
||||
List of Cluster Mbeans
|
||||
</p>
|
||||
<table class="defaultTable">
|
||||
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Description</th>
|
||||
<th>MBean ObjectName - Engine</th>
|
||||
<th>MBean ObjectName - Host</th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>Cluster</td>
|
||||
<td>The complete cluster element</td>
|
||||
<td><code>type=Cluster</code></td>
|
||||
<td><code>type=Cluster,host=${HOST}</code></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>DeltaManager</td>
|
||||
<td>This manager control the sessions and handle session replication </td>
|
||||
<td><code>type=Manager,context=${APP.CONTEXT.PATH}, host=${HOST}</code></td>
|
||||
<td><code>type=Manager,context=${APP.CONTEXT.PATH}, host=${HOST}</code></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>FarmWarDeployer</td>
|
||||
<td>Manages the process of deploying an application to all nodes in the cluster</td>
|
||||
<td>Not supported</td>
|
||||
<td><code>type=Cluster, host=${HOST}, component=deployer</code></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>Member</td>
|
||||
<td>Represents a node in the cluster</td>
|
||||
<td>type=Cluster, component=member, name=${NODE_NAME}</td>
|
||||
<td><code>type=Cluster, host=${HOST}, component=member, name=${NODE_NAME}</code></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>ReplicationValve</td>
|
||||
<td>This valve control the replication to the backup nodes</td>
|
||||
<td><code>type=Valve,name=ReplicationValve</code></td>
|
||||
<td><code>type=Valve,name=ReplicationValve,host=${HOST}</code></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>JvmRouteBinderValve</td>
|
||||
<td>This is a cluster fallback valve to change the Session ID to the current tomcat jvmroute.</td>
|
||||
<td><code>type=Valve,name=JvmRouteBinderValve,
|
||||
context=${APP.CONTEXT.PATH}</code></td>
|
||||
<td><code>type=Valve,name=JvmRouteBinderValve,host=${HOST},
|
||||
context=${APP.CONTEXT.PATH}</code></td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</div><h3 id="FAQ">FAQ</h3><div class="text">
|
||||
<p>Please see <a href="https://cwiki.apache.org/confluence/display/TOMCAT/Clustering">the clustering section of the FAQ</a>.</p>
|
||||
</div></div></div></div></div><footer><div id="footer">
|
||||
Copyright © 1999-2023, The Apache Software Foundation
|
||||
</div></footer></div></body></html>
|