Tomcat 基 础 java 基 础 概 念 : 特 性 : 面 向 对 象 多 线 程 结 构 化 错 误 处 理 垃 圾 收 集 动 态 链 接 动 态 扩 展 JDK : Java Development Kit ( java 开 发 工 具 包 ) 包 含 了 一 个 jvm JVM : Java 虚 拟 机 JAR 文 档 格 式 JDBC : JAVA 连 接 数 据 库 j2se : Standard Edition 标 准 版 --> java 2 SE JDK 提 供 了 完 整 的 EE j2ee : Enterprise Edition 企 业 版 --> java 2 EE Servlet JSP EJB JMS JMX javamail EJB : Enterprise javabeans java 相 关 的 诸 多 高 级 功 能 企 业 级 开 发 模 型 才 用 得 到 JMS : JMX : Java Management Extensions (java 管 理 扩 展 -- 交 互 式 管 理 接 口 ) JTA : 内 部 错 误 处 理 接 口 JavaMail : j2me : Mobile Edition 嵌 入 式?.. --> j2me JAVA 2 SE : JNDI : java Naming and Directory Interface 用 于 实 现 与 LDAP( 轻 量 级 目 录 访 问 协 议 ) 进 行 交 互 JAXP : java API for XML processing 用 于 分 析 及 转 换 xml 文 档 请 求 到 了 a.jsp --> 由 jasper 组 件 翻 译 成 server 代 码 ( 纯 java 代 码 ) --> 有 javac 编 译 器 执 行 编 译 --> 编 译 结 果 为 java 类 文 件 --> 发 往 jre 组 件 (java 的 运 行 时 环 境 ) --> 执 行 结 果 带 html 的 文 本 文 件 --> 通 过 前 端 协 议 接 口 返 回 给 请 求 者 JDK : javac : 编 译 器 将 程 序 转 成 字 节 码 jar : 打 包 工 具 将 相 关 的 类 文 件 打 包 成 一 个 文 件 在 使 用 时 自 动 展 开 不 用 人 为 操 作 javadoc : 文 档 生 成 器 从 源 码 注 释 中 提 取 文 档 jdb : debugger 查 错 工 具 java : 运 行 编 译 后 的 java 程 序.class 后 缀 appletviewer : 小 程 序 浏 览 器 一 种 执 行 HTML 文 件 上 的 Java 小 程 序 的 Java 浏 览 器 Javah : 产 生 可 以 调 用 Java 过 程 的 C 过 程 或 建 立 能 被 Java 程 序 调 用 的 C 过 程 的 头 文 件 Javap : Java 反 汇 编 器, 显 示 编 译 类 文 件 中 的 可 访 问 功 能 和 数 据 同 时 显 示 字 节 代 码 含 义 Jconsole : Java 进 行 系 统 调 试 和 监 控 工 具 JVM 运 行 时 的 区 域 : 方 法 区 : 线 程 共 享 --> 用 于 存 储 被 虚 拟 机 加 载 的 类 信 息 常 量 静 态 变 量 持 久 代 堆 ( heap ) : jvm 管 理 的 内 存 中 的 最 大 一 部 分, 也 是 GC 管 理 的 主 要 区 域. 主 要 哦 也 能 够 与 垃 圾 收 集 算 法 基 于 分 代 收 集 机 制 : 新 生 代, 老 年 代 java 栈 : 线 程 私 有 存 储 线 程 自 己 的 局 部 变 量 PC 寄 存 器 : 线 程 独 有 内 存 空 间 本 地 方 法 栈 : 组 成 : Class Loader
执 行 引 擎 JSP : java 嵌 入 进 HTML 中 在 server 端 运 行 时 把 整 个.jsp 文 件 翻 译 成 Servlet 格 式 用 户 不 用 手 动 把 <html> 改 为 java 语 言 打 印 jsp 替 用 户 完 成 jsp --> jasper --> server(page_jsp.java) --> complier --> bytecode (PAGE_jsp.class) --> JVM 安 装 tomcat 由 于 tomcat 是 基 于 java 来 运 行 的 所 以 首 先 需 要 安 装 jdk 工 具 包 工 具 包 有 两 种 安 装 方 式 1. yum install java-{version}-openjdk yum install java-{version}-devel 在 /etc/profile.d/name.sh 中 2. 去 Oracle 官 网 下 载 Oracle 提 供 的 exec bash 使 用 后 面 程 序 取 代 当 前 程 序 重 启 bashshell 的 时 候 的 一 种 安 全 做 法 很 多 程 序 运 行 时 都 会 依 赖 到 JAVA_HOME 这 个 环 境 变 量 所 以 需 要 指 明 3. 之 后 yum 安 装 tomcat tomcat-lib tomcat-webapps tomcat-admin-webapps Tomcat : 开 源 的 运 行 jsp 的 容 器 Servlet container, java Web Server, JWS 前 身 : ASF, jserv 2001 : tomcat4.0, 内 部 版 本 catalina, 商 业 实 现 : WebSphere(IBM) WebLogic(BEA --> Orace) Oc4j Glassfish Geronimo JOnAS JBoss 开 源 实 现 : Tomcat Jetty Resin tomcat 自 带 的 应 用 程 序 : manager app : webapp 管 理 工 具 host manager : VHosts 虚 拟 主 机 管 理 工 具 Tomcat 组 件 : 每 个 组 件 均 由 java 类 来 实 现 <Server> <Service> <connector/> <connector/> <Engine>
<Host/> <Host> <Context/>... </Engine> </Service> </Server> 顶 级 组 件 : Server 服 务 类 : Service 连 接 器 : http, https, ajp(apache jserv protocol)-- 专 用 二 进 制 格 式 只 能 与 前 端 httpd 通 信 容 器 类 : Engine, Host, Context 被 嵌 套 的 组 件 : value, logger, realm, loader 集 群 类 组 件 : listener( 监 听 器 ) 组 织 结 构 : 在 jvm 中 运 行 启 动 一 个 jvm 实 例 ( 成 为 tomcat server) connector ( 连 接 器 哟 娜 与 接 受 请 求, 在 每 个 端 口 可 以 有 N 个 ) 在 server 内 部 有 service 专 门 用 于 把 connectonr 与 engine 连 接 起 来 engine : 专 门 用 于 运 行 程 序 一 个 service 只 有 一 个 engine 但 可 以 有 多 个 connect 在 整 个 tomcat 内 有 多 个 service 一 个 service 有 一 个 engine 一 个 service 可 以 有 多 个 connection tomcat 配 置 文 件 : server.xml : 主 配 置 文 件 context.xml : 每 个 webapp 都 刻 有 的 专 用 配 置 文 件. 位 于 webapp 自 己 程 序 目 录 下 的 WEB-INF 目 录 中. 用 于 定 义 如 会 话 管 理 器, JDBC 等 web.xml : 每 个 webapp 只 有 在 " 部 署 " 之 后 才 能 被 访 问, 此 文 件 则 用 于 为 各 webapps 定 义 默 认 的 部 署 操 作 方 式 tomcat-usrs.xml : 用 户 认 证 账 号 的 密 码 的 配 置 文 件 catalina.policy : 当 使 用 -security 选 项 来 启 动 tomcat 实 例 时 会 读 取 此 配 置 文 件 来 实 现 基 于 安 全 策 略 的 运 行 方 式 catalina.properties : java 属 性 的 定 义 文 件. 用 于 设 定 类 加 载 器 路 径 等 与 JVM 性 能 相 关 的 调 优 参 数 logging.properties : 日 志 系 统 相 关 的 配 置 webapp 的 组 织 结 构 : 有 特 定 的 组 织 形 式 层 次 性 的 目 录 结 构 包 含 了 servlet 代 码 文 件, JSP 页 面 文 件 类 文 件 部 署 描 述 符 文 件 等 / : webapps 的 根 目 录 可 放 置 主 页 文 件 index.jsp : jsp 的 主 页 面 文 件 WEB-INF/ : 当 前 webapp 的 私 有 资 源 目 录 通 常 存 放 当 前 webapp 自 用 的 web.xml META-INF/ : 当 前 webapp 的 私 有 资 源 目 录 通 常 存 放 当 前 webapp 自 用 的 context.xml classes/ : 当 前 webapp 的 私 有 类 lib/ : 当 前 webapp 的 私 有 类 被 打 保 证 jar 格 式 webapp 归 档 格 式 :.war : webapp.jar : EJB 的 类.rar : 资 源 适 配 器 相 关 代 码.ear : 企 业 级 应 用 程 序 归 档 文 件 手 动 添 加 一 个 测 试 应 用 程 序 : 1. 创 建 webapp 特 有 的 目 录 结 构 mkdir -pv myapp/{classes,lib,web-inf,meta-inf} 2. 提 供 webapp 的 测 试 页 面 myapp/index.jsp
部 署 (deploy) webapp 的 相 关 操 作 : deploy : 将 webapp 的 源 文 件 放 置 于 目 标 目 录 配 置 tomcat 服 务 器 能 够 给 予 context.xml 文 件 中 定 义 的 路 径 来 访 问 此 webapp 将 其 特 有 的 类 通 过 class loader 装 在 至 tomcat 常 见 部 署 方 式 : 自 动 部 署 : auto deploy 手 动 部 署 : 冷 部 署 : 把 webapp 复 制 到 指 定 位 置 而 后 才 启 动 tomcat 热 部 署 : 在 不 停 止 tomcat 的 前 提 下 进 行 的 部 署 部 署 工 具 : managet app, ant 脚 本, tcd (Tomcat Client Deployer) 等 undeploy : 反 部 署, 停 止 webapp, 并 从 tomcat 实 例 上 拆 除 其 部 署 文 件 和 部 署 名 stop : 停 止 不 再 向 用 户 提 供 服 务 start : 启 动 处 于 " 停 止 " 状 态 的 webapp redeploy : 重 新 部 署 tomcat 的 常 用 组 件 : 每 个 组 件 几 乎 都 是 通 过 特 有 的 类 来 实 现, 而 且 有 的 组 件 不 知 一 种 实 现 方 式 Server : tomcat 实 例 每 一 个 Server 就 是 一 个 Tomcat 实 例 即 运 行 一 个 jvm 进 程 默 认 监 听 于 8005/tcp 接 受 "SHUTDOWN", 各 Server 监 听 的 端 口 不 能 相 同 service : 用 于 实 现 将 一 个 或 多 个 connector 关 联 至 一 个 或 多 个 engine connector : 进 入 toncat 的 请 求 可 分 为 两 类 tomcat 自 己 作 为 独 立 的 应 用 程 序 服 务 器 : standalone 此 时 请 求 将 来 自 于 浏 览 器 tomcat 作 为 应 用 程 序 服 务 器 请 求 来 自 于 前 端 反 代 主 机 httpd : http https ajp nginx : http https 属 性 : address : 监 听 的 IP 地 址 maxthreads : 最 大 并 发 连 接 数, 默 认 为 150 port : 监 听 的 端 口 protocol : 连 接 器 使 用 的 协 议 一 般 为 HTTP/1.1 或 AJP/1.3 redirectport : 重 定 向 的 端 口 connectiontimeout : 连 接 的 超 时 时 长, 单 位 为 毫 秒 默 认 为 60000 enablelookups : 15:36 acceptcount : 定 义 等 待 队 列 的 长 度 scheme : degub : secure : 是 否 工 作 在 安 全 模 式 下 True False clinetauth : 是 否 去 验 证 服 务 端 证 书 sslprotocol : ssl 协 议 版 本 建 议 tls Engine : Servlet 的 一 个 实 例 : 及 servlet 引 擎 内 部 可 以 有 一 个 或 多 个 Host 组 件 来 定 义 站 点 通 常 需 要 通 过 一 个 defaulthost 的 属 性 来 定 义 默 认 虚 拟 主 机 属 性 : name= defaulthost= jvmroute= Engine 属 性 几 乎 不 需 要 修 改 Host : 位 于 Engine 容 器 中 用 于 接 收 请 求 并 进 行 相 应 处 理 的 主 机 或 虚 拟 主 机 appbase : 此 Host 的 webapps 目 录. 即 存 放 非 归 档 的 web 应 用 程 序 的 目 录 或 归 档 后 的 WAR 文 件 的 目 录 路 径. 可 以 使 用 基 于 $CATALINA_HOME 的 相 对 路 径 index.xml 应 该 放 在 appbase 下 ROOT 目 录 下 并 且 WEB-INF 等 也 是 在 ROOT 下 创 建 的 autodeploy : 在 Tomcat 储 蓄 运 行 状 态 时 放 置 于 appbase 目 录 中 的 应 用 程 序 文 档 是 否 进 行 deploy : 默 认 为 True unpackwars : 在 此 前 哦 那 个 此 webapps 时 是 否 对 WAR 格 式 的 归 档 文 件 先 进 性 展 开 ; 默 认 为 true Context : Context 在 某 些 意 义 上 类 似 于 apache 中 的 路 径 别 名, 一 个 Context 定 义 用 于 标 识 tomcat 实 例 中 的 一 个 Web 应 用 程 序 在 Tomcat6 中, 每 一 个 context 定 义 也 可 以 使 用 一 个 单 独 的 XML 文 件 进 行, 其 文 件 的 目 录 为 $CATALINA_HOME/conf/<engine name>/<host name> 可 以 用 于 Context 中 的 XML 元 素 有 Loader,Manager,Realm,Resources 和 WatchedResource 常 用 的 属 性 定 义 有 : 1) docbase: 相 应 的 Web 应 用 程 序 的 存 放 位 置 ; 也 可 以 使 用 相 对 路 径, 起 始 路 径 为 此 Context 所 属 Host 中 appbase 定 义 的 路 径 ; 切 记,docBase 的 路 径 名 不 能 与 相 应 的 Host 中 appbase 中 定 义 的 路 径 名 有 包 含 关 系, 比 如, 如 果 appbase 为 deploy, 而 docbase 绝 不 能 为 deploy-bbs 类 的 名 字 ;
2) path: 相 对 于 Web 服 务 器 根 路 径 而 言 的 URI; 如 果 为 空, 则 表 示 为 此 webapp 的 根 路 径 ; 如 果 context 定 义 在 一 个 单 独 的 xml 文 件 中, 此 属 性 不 需 要 定 义 ; 3) reloadable: 是 否 允 许 重 新 加 载 此 context 相 关 的 Web 应 用 程 序 的 类 ; 默 认 为 false; Realm : 用 户 认 证 相 关 组 件 Value : 用 户 访 问 控 制 等 访 问 日 志 等 访 问 相 关