首页 > 代码库 > Tomcat

Tomcat

编程语言介绍
    系统级  C  C++  go  erlang
    应用级  C#  Java  Python  Perl   Ruby  php
    虚拟机 pvm  jvm  提供运行环境
    动态网站 asp  .net  jsp

面向过程:就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 
面向对象:是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

JAVA变成语言的特性
    面向对象、多线程、结构化错误处理
    垃圾收集、动态链接、动态扩展


POSIX: 可移植操作系统接口
    jvm将java字节码解释为具体平台的具体指令.做到跨平台
    Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。
Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在jvm上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。jvm在执行字节码时,把字节码解释成具体平台上的机器指令执行
1996  JDK(Java Development Kit),包含一个JVM       JDK1.0 JVM Applet AWT 1997  JDK 1.1       JAR文档格式:JDBC JavaBean 1998  JDK1.2       Sun把Java技术分为         J2SE ==> Java 2 SE         J2EE ==> Java 2 EE         J2ME ==> Java 2 ME      代表性技术:EJB Java Plug-in Swing Jit编译器 三个技术流派(重新命名) J2SE ==> Java 2 SE 【java 核心API+JDK(JRE+工具及工具集API)】 J2EE ==> Java 2 EE 【Java 2 EE 核心API + Java 2 SE 】 J2ME ==> Java 2 ME

2000 JDK1.3 2002 JDK1.4 2006 Sun开源Java技术,遵循GPL,并建立OpenJDK组织管理这些代码 2009 Oracle收购Sun Java体系结构 Java编程语言 Java Class文件格式 Java API Java VM

 

 

java的执行
.java==>javac complier==>.class ==>jvm

jvm核心组成部分
  class loader: 装载java程序类文件及java API类文件(可以调用OS native API(DSO),但是不能跨平台,应该避免 )
  执行引擎
  

java runtime data areas
技术分享


方法区 Method Area  用于存储jvm加载的类、常量、静态变量等,永久代。也是线程共享
堆 Heap        是jvm所管理的内存中最大的一部分,线程共享,也是GC管理的主要区域,主流的算法基于分代方式进行,新生代、老年代。
Java栈 java Stack  线程私有,存放线程自己的局部变量等信息
指令计数器Program Counter Register 线程独占的内存空间
本地方法栈Native Method Stack

 

configuring the heap and garbage collector

技术分享

 


 

Sun公司创建了第一个Servlet容器,即Java Web Server,但是JWS只是为了演示Servlet的相应功能,所以很不稳定,
于此同时,ASF创建了JServ项目,一个能与apache整合起来的servlet容器 1999年,Sun将JWS捐给了ASF,于是两个项目合二为一,即Tomcat前身,第一个tomcat版本是Tomcat3.0系列,
而发布于2001年的Tomcat4.0是在此基础上进行了重新设计和实现,其代码项目命名为catalina


JavaApplet
  是用Java语言编写的小应用程序,可以直接嵌入到网页中,并能够产生特殊的效果。

Java Servlet
  是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。广义的Servlet是指任何实现了这个Servlet接口的类

JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。
  它是在传统的网页HTML(标准通用标记语言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。
  JSP(JavaServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。
  Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。
  JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。

技术分享

JSP的执行过程主要可以分为以下几点:
  客户端发出请求。
  Web JSP Container(jasper)将JSP转译成Servlet源代码。
  Web容器将产生的Serverlet源代码进行编译成.calss
  Web JVM容器加载编译后的.class代码并执行
  Web服务将结果返回给客户端
==>当JSP网页在执行时,JSP Container 会做检查工作,如果发现JSP网页有更新修改时,JSP Container 才会再次编译JSP成 Servlet; 如果JSP没有更新时,就直接执行前面所产生的Servlet.

JAVA 2 EE: 包含的技术
     JAVA 2 SE: JNDI JAXP
     Servlet,JSP,EJB,JMS,JMX,JTA,JavaMAil
==>而tomcat则是j2EE部分功能即j2se和 Servlet和JSP是实现

 

Web Container: JDK + Servlet+ JSP

 

商业实现:
  WebSphere(IBM)
  Weblogic(BEA--ORACLE)
  Occupati
  Oc4j
  Glassfish
  JBoss

开源实现:
  Tomcat(官方实现)
  jetty(轻量级)
  resin(商用收费)

 

 

 

Tomcat安装
部署前提:
    jdk:
        Oracle JDK
        或OpenJDK (java-1.8.0-openjdk)

# rpm -ivh jdk-8u111-linux-x64.rpm
# vi /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/latest
export PATH=$JAVA_HOME/bin:$PATH
#. /etc/profile.d/java.sh


#tar -xf apache-tomcat-8.0.39.tar.gz -C /usr/local/
#cd /usr/local/
#ln -s apache-tomcat-8.0.39/ tomcat
#vi /etc/profile.d/tomcat.sh
export CATALINA_HOME=/usr/local/tomcat
export PATH=$CATALINA_HOME/bin:$PATH
#. /etc/profile.d/tomcat.sh

# catalina.sh version
# catalina.sh  configtest    检查语法
# catalina.sh --help
..................
commands:
  debug             Start Catalina in a debugger
  debug -security   Debug Catalina with a security manager
  jpda start        Start Catalina under JPDA debugger
  run               Start Catalina in the current window
  run -security     Start in the current window with security manager
  start             Start Catalina in a separate window
  start -security   Start in a separate window with security manager
  stop              Stop Catalina, waiting up to 5 seconds for the process to end
  stop n            Stop Catalina, waiting up to n seconds for the process to end
  stop -force       Stop Catalina, wait up to 5 seconds and then use kill -KILL if still running
  stop n -force     Stop Catalina, wait up to n seconds and then use kill -KILL if still running
  configtest        Run a basic syntax check on server.xml - check exit code for result
  version           What version of tomcat are you running?
Note: Waiting for the process to end and use of the -force option require that $CATALINA_PID is defined

# catalina.sh start  启动tomcat
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/latest
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.






Tomcat