码迷,mamicode.com
首页 > Web开发 > 详细

linux web篇---之三--tomcat

时间:2015-09-16 01:09:26      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:tomcat 反向代理

一、java概述

1、java的四个独立却又相关的技术:

    java程序设计语言:    java源程序
    java API:            以连接java的库文件,官方提供很多库文件,以提高java的开发速度,通过API连接到相应的库文件。
    JAVA class  文件格式:编译后的JAVA程序遵循的文件格式。
    jvm:java虚拟机:      通用虚拟机,以跨平台运行。

java语言结合java API写出java程序代码,然后编译成java class文件,(java字节码,尊循java class格式),然后在虚拟机上运行。


2、JVM的执行过程:
    1、一次性解释器,解释字节码并执行,即每次执行时都要把字节码解释一次。
    2、即时编译器,即把字节码解释后放于缓存,再次运行,不用再进行解释。但缓存要求太大。
    3、自适应编译器,只把使用频率高的部分解释后进行缓存。一般把20%左右高频率使用的字节码进行解释后缓存,其他的就进行一次性解释。

3、JVM的种类

  (1) hotspot JVM:官方提供的,SUN公司的,包含以下两个组件:

         JRE: JAVA的运行环境+JVM,即是用来运行JAVA的。包括JVM和JAVA核心类库和支持文件。jre=api+jvm
         JDK:JAVA开发环境+JRE,即用来开发的JAVA的,且能运行,包含了JRE。JDK=java开发程序 +api+jvm(JAVA开发的最小开发环境)

我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。
 

(2)开源JVM:openJDK

4、JAVA的种类:
  JAVA SE:  标准版
  JAVA EE:  企业版
  JAVA ME:  开发手持设备的JDK,应用不多。

5、JAVA API

    java 官方类库
    第三方类库
         
实现动态网站的类库:
         applet类库:开发时先编译好applet程序,然入嵌入到html中,每个客户端都需要安装applet插件才能运行。类似于微软的activex。不安全,已不使用。
         servlet类库:用于JAVA的一种CGI技术。能让JAVA开发动态网站。遵循servlet规范,即可以识别http协议和html文档。但是静态网页也需要在java程序中生成,造成后期维护很难,且改变一行静态网页的HTML代码,也需要重新编译。

         JSP API:即是servlet的提升。以嵌入式的方式,把java代码可以嵌入到到HTML中,这样就可以让前端html开发和后台JAVA开发分开。
                JSP模板:SSH         
      

                .jsp-->(用jasper转换成servlet).java-->(用javac把.java转换成JVM)(.class)

        EJB:JAVA相关的诸多高级功能的实现。
        JMS:高情能异步消息服务。
        JMX:开发java监控和管理。

6、java web的运行机制

(1)servlet container:servlet 容器:

web服务器接收到客户请求--》发现是动态请求通过CGI发送给servlet container(servlet 容器)的CGI接收器-->web容器收到cgi请求,把java源程序(.java)用JDK编译程序(javac)结合库文件编译成java字节码(.class)-->然后把字节码送到jvm上(虚拟机)解析执行-->然后返回请求内容。
容器还能实时监控源码的变更,一旦变更后马上重新编译。

(2)web container:web容器:在servlet的基础上增加了jsp转换成servlet的过程(.java)

web服务器接收到客户请求--》发现是动态请求通过CGI发送给web container(web 容器)的CGI接收器-->web容器收到cgi请求,把相关源代码(.jsp)转换成servlet代码(.java),即把jsp通过(jasper)转换成servlet。-->把转换后的java源程序(.java)用JDK编译程序(javac)结合库文件编译成java字节码(.class)-->然后把字节码送到jvm上(虚拟机)解析执行-->然后返回请求内容。

(3)web容器的连接器:

web容器可包含连接器,跳过web服务器,直接面对用户的请求,这个连接器就是tomcat。
即: 用户发送请求-->到web 容器的连接器 -->开始jsp转成.java-->java转成.class字节码-->JVM解析-->返回客户端解析后的内容。

当然也可以通过先通过web服务器接收客户请求-->再发到tomcat-->开始jsp转成.java-->java转成.class字节码-->JVM解析-->返回客户端解析后的内容。


jvm实例:(多个请求时不会启动多个jvm实例,只会启动jvm 线程)

       当多个请求到web容器中时,会启动多个jvm线程 。


7、web容器的种类:
web容器(以能运行java ee开发的所有web程序)的种类:
       websphere   :IBM研发,占有率30%多。  商业级的
       weblogic    :被ORCACLE收购,占20%   商业级的
       oc4j        :oracle 占10%           商业级的
       jboss       :readhat,即tomcat的封装和开发。开源。





二、JDK

1、安装JDK

最好安装SUN的JDK。到官网下载。不一定最新的包是最好的。一般有RPM和.bin二进制包。

(1)安装包

(2)安装目录 /usr/jdk

(3)把jdk的二进制目录加入环境变量路径

(4)设定系统服务,让jdk开机启动。

2、JDK使用


三、tomcat

1、tomcat基本架构:

由sun开发的TWS演示版web容器,加上asf合成的,tomcat。

tomcat由外向内分为多层,分别为:
server:拥有web服务器的功能,可以直接接收客户端的请求,也可以接收web服务器(如apache)转发来的CGI动态请求,每一个tomcat server就是一个tomcat实例,生成一个tomcat实列时就会初始化一个或多个连接器,以用于接收外部发来的请求。一个tomcat  server一般只打开一个tomcat引擎。server中是可以打开多个引擎的,而将server关联到引擎的叫做连接器,而连接器分好多种,如https,http,proxy,ajp等。
service:主要作为server与tomcat引擎之间的连接作用,把一个或多个连接器关联到某tomcat引擎上。一个service内部只能有一个tomcat引擎。可将一个和多个连接器关联到同一个tomcat引擎的。
tomcat engine(引擎):  具有一个web容器的功能,用来执行server通过连接器转发来的请求。
          host:在引擎内部实现虚拟主机功能。通过给tomcat引擎设定默认主机。
          context:路径别名,类似于iis中的虚拟目录,可以把设定的网站虚拟目录外的任意目录作为网站的站点目录来存放网站文件。


tomcat server实例生成时,就会初始化或注册一个或多个连接器(如http请求就生成一个http连接器,https请求生成https连接器)-->外部请求把请求发给server的连接器-->service把连接器关联到tomcat引擎上-->tomcat引擎处理请求。


一个server内部可以有多个引擎。将一个server接收到请求转发到引擎的组件,叫连接器(connector)。而连接器分好多种,如https,http,proxy,ajp等。可将多个转发至不同连接器的请求转发到同一个引擎上。而service就是把连接器关联到引擎上的。
。但一般一个server内部一般只有一个service,一个service内部只有一个引擎。

2、tomcat的组件:

可以用在引擎,host,context各个级别的组件:
realm(领域):用户认证用的,其实就是一个用户帐号数据库,这些组件可以用在引擎级别,也可以用在host级别,也可以用在context级别。如用在引擎时,那么访问引擎就需要认证,如用在host时,那么访问虚拟主机时就需要认证。
valve(阀门):基于IP认证,记录访问日志。
wrapper:



3、tomcat安装


安装包:

源码格式,用JAVA编译的,一般不建议用源码。

.bin      二进制包

rpm       安装包

4、安装文件详解:

server.xml:描述了tomcat各组件之间的关系。
web.xml:默认的,应用程序部署描述符
部署:将一个web应用程序所依赖到的类库装载进JVM

/bin  二进制目录

catalina.bat是主脚本程序。  把其他脚本作为参数执行。

/lib 库目录


/webapps


5、tomcat配置


6、部署:

前端用apache 或ngix作为代理, 后端用tomcat。

在前端用apache时,可以用反向代理,通过 ajp协议与多台tomcat通信,以实现负载均衡。



四、反向代理:


(一)反向代理的种类:

1、apache的几个反向代理软件:

apache(三个反向代理器模块:mod_proxy,mod_jk,mod_jk2将请求代理至后端),并支持 AJP和http协议与后端通信--》tomcat

mod_proxy
mod_jk
mod_jk2:是mod_jk的新版,但是应用上有问题,已经不使用了,只用mod_jk了。

2、反向代理与tomcat通信协议

ajp:只有apache识别这个通信协议。所以此协议不能用在ngix中。
http

(二)配置mod_proxy代理:

1、安装APR1.4以上版本。
2、编译安装apache2.4以上的版本,需要装载mod_proxy mod_http,  mod_mod_proxy_ajp,  proxy_balancer_module等模块。
   /usr/local/apache/bin/httpd -D DUMP_MODULES |grep proxy  //通过这个命令可以查看安装了什么模块。
3、配置apache全局配置段或虚拟配置段中添加某些内容,以实现AJP或HTTP协议连接后端tomcat。


(三)配置jk代理:

1、安装APR1.4以上版本。
2、编译安装apache2.4以上的版本,需要装载mod_proxy mod_http,  mod_mod_proxy_ajp,  proxy_balancer_module等模块。
3、在apache web服务器端安装jk软件。软件名叫tomcat-connectors
4、配置apache以在apache中载入相关模块。


五、DeltaManager

本文出自 “网行天下” 博客,请务必保留此出处http://kuangkuang.blog.51cto.com/838/1695089

linux web篇---之三--tomcat

标签:tomcat 反向代理

原文地址:http://kuangkuang.blog.51cto.com/838/1695089

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!