Tomcat前世今生

  1. java体系:

    1 java程序设计语言

    2 java API(类库)

    3 java class文件格式

    4 java vm(虚拟机)

  2. JDK:java development kit (java api 、jvm)java开发工具

  3. Java SE:JDK + 额外类库,面向桌面级应用

  4. Java EE:Java SE+企业级类库

    servlet、jsp、jmx、jms、javamail、ejb

    servlet 容器,让servlet程序能够在这个环境中编译执行

  5. Tomcat:JDK+servlet,jsp(Java SE的不完整实现)

其他的web container:Jetty、Resin、Websphere(Java SE的完整实现)、webLogic(Java SE的完整实现)、JBoss、Glassfish

server.xml 按照某种层次结构,组织了tomcat内置的各种组件,内部有许许多多特殊的Java类,用于实现tomcat的各种功能,这些就是除了jsp和servelet之外的由tomcat自身的类库,作为一个web应用所需要的一些组件



server.xml中的组件:server、service、connector…

安装

//安装jdk
rpm -ivh jdk-7u9-linux-x64.rpm
ls /usr/java
//安装成功后java目录下就会出现刚刚安装的jdk
jdk1.7.0._09
//配置java环境变量(略)https://blog.csdn.net/w1196726224/article/details/52029201

//安装tomcat(略)
//因为tomcat在启动的时候并不需要管理员,所以为了安全请确保
//tomcat的文件目录是普通用户的权限,启动tomcat脚本的时候,也以普通用户的权限启动
useradd -r tomcat
//注意普通用户默认不能使用小于1024的端口,但是有开源程序能够做到
//通过tomcat执行脚本
su - tomcat -c "/usr/local/tomcat/bin/catalina.sh"
//配置环境变量
vim /etc/profile.d/tomcat.sh
//输入
export CATALINA_HOME= /Users/leesin/for mac 安装包/apache-tomcat-7.0.86
export PATH=$CATALINA_HOME/bin:$PATH

//source这个文件
. /etc/profile.d/tomact.sh
//就可以再其他的目录执行catalina.sh了
cd ../../
//查看版本
catalina.sh version
//检查配置文件语法是否有问题
catalina.sh configtest
catalina.sh start

配置文件详细说明

在tomcat 的conf目录下

➜  apache-tomcat-7.0.86 cd conf
➜  conf ls
Catalina            catalina.properties logging.properties  tomcat-users.xml
catalina.policy     context.xml         server.xml          web.xml

server.xml 核心配置文件(前面讲了太多,略)

context.xml :为部署于此Tomcat实例上的所有web应用程序提供的默认配置文件,每个webapp都可以使用独有的context.xml,通常放置于webapp目录的META-INF子目录中,常用于定义会话管理器、Realm以及JDBC等,这个目录是不允许通过web访问的

web.xml:为部署于此Tomcat实例上的所有web应用程序提供默认部署描述符,通常用于为webapp提供基本的servlet定义和MIME映射表。

tomcat-user.xml:用户名密码

catalina.policy:当机遇-security选项启动tomcat实例时会读取此配置文件,此配置文件是JAVA的安全策略配置文件,配置访问codebase或某些java类的权限

catalina.properties:java属性定义文件,设定类加载器路径、安全保列表和一些调整性能的参数信息

logging.properties:定义日志相关的配置信息,如日志级别、文件路径等

tomcat应用程序部署

部署是指将 webapp 及其所依赖类库等装载进 tomcat 实例上,以便接受用户请求;

部署方式:

  1. 静态方式:在 Tomcat 启动之前进行的 webapp 部署
  2. 动态方式:在打断 tomcat 运行的前提下,通过 tomcatmanager 或其它的命令行工具进行的部署;
  3. TCD: Tomcat Client Deployer

部署是由一类“操作”组成:

Deploy:将 web源文件放置于目标目录、配置 tomcat 服务器能够基于某contcxt 路径访问此 weap,并将其特有的类由类加载器进行装载等

Redeploy:重新部署,主要用于升级时

Undeploy:取消部署,停止应用程序并从 tomcat 实例上移除其部分文件和部署名;

stop:停止,停止只是不让访问了,加载的类还在里面

start:将停止的 webapp 启动起来

部暑方式:

Tomcat manager

ANT 脚本

TCD

war 类归档程序的部署:将归档文件复制到$ CATALINA BASE/webapps/目录中,并重启 tomcat即可; tomcat 会自动展开 war归档;

webapp 体系结构

webapp 体系结构有特定的组织格式,是一种层次型目录结构:通常包含了 serylet 代码文件、jsp页面文件、类文件、部署描述符文件等等,一般会打包成归档格式

/:web 应用程序的根目录

/WEB-INF:此 webapp 的私有资源目录,通常 web.xml 放置于此目录

/WEB-INF/classes:此 webapp 自有的类

/WEB-INF/lib:此 webapp 自有能够被打包为 jar 格式的类

webpp 的归档格式:

EJB类归档的扩展名 .jar

web 应用程序的归档扩展名为 .war

资源适配器的扩展名 .rar

企业级应用程序的扩展名 .ear

web 服务的展名为 .ear 或 .war

<%@ page.language="java”‰>
<%@ page Import=”java,uti1.*” %>
<html>
	<head>
	<title>JSP test Page</title:
	</head>
	<body>
		<%>
		out println("Hello world!");
		out println("Hello);
		<%>
</html>

tomcat运行方式

独立配置:既是web服务器,又是servlet容器处理jsp



进程间配置,web服务器通过nginx或者apache实现



独立/网络配置

apache与tomgcat连接器通信的模块有两个:

1.mod_jk:apache1.3 apache2.0

2.mod_proxy:apache2.2

tomcat的连接器协议有两种:

http

ajp

所以连接方式有四种

mod_jk:http,ajp

mod_proxy:http,ajp

mod_jk VS mod_proxy:

负载均衡:两者都支持,但是mod_proxy要弱一点,但是在特性定制上很强大

管理接口:基于web页面管理接口两者都支持,现在好像mod_proxy不支持了

兼容性:mod_proxy已经成为标准模块了,但是仍然需要手动安装

配置:mod_proxy要简单

协议:mod_jk(ajp),mod_proxy(http/https/ajp)

tomcat的http连接器:

类型有三种:

1.基于java的http/1.1了连接器(默认)

2.基于java的高性能NIO HTTO/1.1 连接器

3.基于C/C++研发的Native APR HTTP/1.1连接器

在负载较大的程序中,建议使用基于C/C++研发的Native APR HTTP/1.1连接器,但是需要额外编译安装APR组件

<connector port="8080" protocol="http/1.1">
<connector port="8080" protocol="org.apache.coyote.http1.Htto11NioPtotocol">
<connector port="8080" protocol="org.apache.coyote.http1.Htto11AprPtotocol">

LAMT:

apache(mod_jk,ajp)+tomcat(ajp connector)

apache(mod_proxy,(http,https,ajp))+tomcat(http,https,ajp)

LNMT:

nginx+tomcat(http,https)

Tomcat负载均衡、调优核心应用进阶学习笔记(二):Tomcat前世今生、安装、配置文件详细说明、tomcat应用程序部署、webapp 体系结构、tomcat运行方式的更多相关文章

  1. Tomcat负载均衡、调优核心应用进阶学习笔记(一):tomcat文件目录、页面、架构组件详解、tomcat运行方式、组件介绍、tomcat管理

    文章目录 tomcat文件目录 bin conf lib logs temp webapps work 页面 架构组件详解 tomcat运行方式 组件介绍 tomcat管理 tomcat文件目录 ➜ ...

  2. Tomcat负载均衡、调优核心应用进阶学习笔记(五):Tomcat调优和Tomcat监控(差评)

    文章目录 tomcat调优 tomcat监控 tomcat调优 vi catalina.sh # --------------------------------------------------- ...

  3. Tomcat负载均衡、调优核心应用进阶学习笔记(三):LNMT nginx+tomcat、LAMT apache+tomcat、session会话保持、不错的站点

    文章目录 LNMT nginx+tomcat LAMT apache+tomcat 基于mod_proxy 单节点 配置基于mod_proxy的负载均衡 基于mod_jk(需要编译安装) 单节点 配置 ...

  4. Tomcat负载均衡、调优核心应用进阶学习笔记(四):JVM调优

    文章目录 概述 **JVM管理的内存段可分为两大类:线程共享内存和线程私有内存** Java Heap SIze Options The memory structure of a JVM proce ...

  5. 一份关于jvm内存调优及原理的学习笔记

    JVM 一.虚拟机的基本结构 1.jvm整体架构 类加载子系统:负责从文件系统或者网络中加载class信息,存入方法区中. 方法区(Perm):存放加载后的class信息,包括静态方法,jdk1.6以 ...

  6. 一份关于jvm内存调优及原理的学习笔记(转)

    JVM 一.虚拟机的基本结构 1.jvm整体架构 类加载子系统:负责从文件系统或者网络中加载class信息,存入方法区中. 方法区(Perm):存放加载后的class信息,包括静态方法,jdk1.6以 ...

  7. MYSQL进阶学习笔记二:MySQL存储过程和局部变量!(视频序号:进阶_4-6)

    知识点三:MySQL存储过程和局部变量(4,5,6) 存储过程的创建:     创建存储过程的步骤: 首先选中数据库 改变分隔符,不让分号作为执行结束的标记.(通常情况下,改变分隔符命令 DELIMI ...

  8. Ubuntu下配置 keepalived+nginx+tomcat 负载均衡

    本文力图阐述在 Ubuntu Server 环境下使用 Keepalived + Nginx + Tomcat 搭建高可用负载均衡环境的操作步骤和简约配置,这里不涉及性能调优.先说一下他们各自扮演的角 ...

  9. 介绍一下再Apache下的Tomcat负载均衡的一些使用问题

    在负载均衡技术中,硬件设备是比较昂贵的,对于负载均衡的学习者如果不是在企业中应用或者是学员中学习,很少有机会能碰到实际操作的训练.(http://xz.8682222.com)所以,很多朋友都会选择软 ...

随机推荐

  1. 测开之路四十五:Django之最小程序

    安装Django库 Django最小程序 import sysfrom django.conf.urls import urlfrom django.conf import settingsfrom ...

  2. iview+vue 表格中添加图片

    开门见山,话不多说,要在表格中添加图片,可以使用td: <table " width="100%"> <tr class="tr-style ...

  3. Thymeleaf 遇到的问题

    1. 后台传递long类型的值作为 js 执行方法的参数,精准度失效解决办法 解决办法:用thymeleaf的拼接字符串方法来解决 例:<button class="btn btn-p ...

  4. 转载:LESS基本用法

    转载出处:https://blog.csdn.net/qq_38209578/article/details/80566860 转载出处:https://blog.csdn.net/weixin_44 ...

  5. Redis 系列(02)数据结构

    目录 Redis 系列(02)数据结构 Redis 系列目录 1. String 1.1 基本操作 1.2 数据结构 1.3 Redis数据存储结构 2. Hash 2.1 基本操作 2.2 数据结构 ...

  6. Jquery中input:type=radio的监听,获取设置值

    一.html <div id='demo'> <input type='radio' name='sex' value='男' > <input type='radio' ...

  7. python基础----斐波那契数列

    python实现斐波那契数列的三种方法 """ 斐波那契数列 0,1,1,2,3,5,8,13,21,... """ # 方法一:while ...

  8. 选择器与过滤器(全)————JQ

    JQ基础--选择器与过滤器(全) JQ选择器 <!DOCTYPE html> <html> <head> <meta charset="UTF-8& ...

  9. 支持跨域的html元素

    image javascript iframe link

  10. PL/SQL to update all columns

    undefine schema_name; declare l_Err ); begin for r in (select atc.table_name, atc.column_name, atc.d ...