JSP的运行原理以及tomcat网站的组织形式

JSP运行流程:

         JSP->jasper->servlet->compile ->bytecodes -> jvm

 

Tomcat         jws(sun)+Jserv(ASF)

 

Tomcat: jdk + tomcat

 

Tomcat: server.xml (核心配置文件)

                   Server,service,connector,engine,host,context

 

部署:

         将一个运用程序需要的类以及自己需要的类装载到JVM虚拟机上叫做部署

                  运行时区域内存:

                            堆,栈,本地方法栈

查看tomcat所有的rpm包:

         #yumlist all | grep tomcat

                   Jdk1.6使用得最多

                   Jdk1.7 使用不是很多

                   Jdk1.8不是很多用户     ELK Stack 只能运行于1.8之上

        

[root@node121 ~]# yum list all | grep tomcat

apache-tomcat-apis.noarch                   0.1-1.el6                    @base 

tomcat.noarch                              7.0.75-1.el6                @epel 

tomcat-admin-webapps.noarch                 7.0.75-1.el6                 @epel 

tomcat-docs-webapp.noarch                   7.0.75-1.el6                 @epel 

tomcat-el-2.2-api.noarch                    7.0.75-1.el6                 @epel 

tomcat-javadoc.noarch                       7.0.75-1.el6                 @epel 

tomcat-jsp-2.2-api.noarch                   7.0.75-1.el6                 @epel 

tomcat-lib.noarch                           7.0.75-1.el6                 @epel 

tomcat-servlet-3.0-api.noarch               7.0.75-1.el6                 @epel 

tomcat-webapps.noarch                       7.0.75-1.el6                 @epel 

glite-security-trustmanager-tomcat6.noarch  2.5.5-6.el6                  epel  

jakarta-commons-collections-tomcat5.noarch  3.2.1-3.5.el6_7              base  

jakarta-commons-dbcp-tomcat5.noarch         1.2.1-13.9.el6               base  

jakarta-commons-pool-tomcat5.x86_64         1.3-12.7.el6                 base  

jglobus-ssl-proxies-tomcat.noarch           2.1.0-2.el6                  epel  

tomcat.noarch                               7.0.77-1.el6                 epel  

tomcat-admin-webapps.noarch                 7.0.77-1.el6                 epel  

tomcat-docs-webapp.noarch                   7.0.77-1.el6                 epel  

tomcat-el-2.2-api.noarch                    7.0.77-1.el6                 epel  

tomcat-javadoc.noarch                       7.0.77-1.el6                 epel  

tomcat-jsp-2.2-api.noarch                   7.0.77-1.el6                 epel  

tomcat-jsvc.noarch                          7.0.77-1.el6                 epel   

tomcat-lib.noarch                           7.0.77-1.el6                 epel  

tomcat-native.x86_64                        1.1.34-1.el6                 epel  

tomcat-servlet-3.0-api.noarch               7.0.77-1.el6                 epel  

tomcat-webapps.noarch                       7.0.77-1.el6                 epel  

tomcat6.noarch                             6.0.24-105.el6_8            updates

tomcat6-admin-webapps.noarch                6.0.24-105.el6_8             updates

tomcat6-docs-webapp.noarch                  6.0.24-105.el6_8             updates

tomcat6-el-2.1-api.noarch                   6.0.24-105.el6_8             updates

tomcat6-javadoc.noarch                      6.0.24-105.el6_8             updates

tomcat6-jsp-2.1-api.noarch                  6.0.24-105.el6_8             updates

tomcat6-lib.noarch                          6.0.24-105.el6_8             updates

tomcat6-servlet-2.5-api.noarch              6.0.24-105.el6_8             updates

tomcat6-webapps.noarch                      6.0.24-105.el6_8             updates

tomcatjss.noarch                            2.1.0-4.el6                  base 

 

 

通过修改JAVA_HOME环境变量来修改使用的JDK的版本:

[root@node121 profile.d]# pwd

/etc/profile.d

[root@node121 profile.d]# cat java.sh

#!/bin/bash

export JAVA_HOME=/usr/lib/jvm/jre-1.6.0-openjdk.x86_64

export PATH=$JAVA_HOME/bin:$PATH

[root@node121 profile.d]# ./etc/profile.d/java.sh

 

[root@node121profile.d]# java -version

java version "1.6.0_35"

OpenJDK Runtime Environment (IcedTea61.13.7) (rhel-1.13.7.1.el6_6-x86_64)

OpenJDK 64-Bit Server VM (build 23.25-b01,mixed mode)

 

修改环境变量来使用catalina_home的执行命令:

[root@node120 profile.d]# pwd

/etc/profile.d

[root@node120profile.d]# cat tomcat.sh

#!/bin/bash

export CATALINA_HOME=/usr/local/tomcat

export PATH=$CATALINA_HOME/bin:$PATH

[root@node121 profile.d]# . /etc/profile.d/tomcat.sh

 

运行tomcat不需要管理员权限,一般只需要使用普通用户就可以启动tomcat,如果端口监听小于1024后的端口,则需要使用root使用来启动,如果监听端口大于1024,则用普通用户就可以启用tomcat

 

通过rpm包安装的tomcat的目录:

[root@node121 tomcat]# pwd

/usr/share/tomcat

[root@node121 tomcat]# ls

bin conf  lib  logs temp  webapps  work

 

[root@node121 tomcat]# lsof -i:8080

COMMAND PID   USER   FD  TYPE DEVICE SIZE/OFF NODE NAME

java   2043 tomcat   39u  IPv6 12260      0t0  TCP *:8080 (LISTEN)

 

 

 

 

Java WebAPP组织结构:

         有特定的组织形式,层次型的目录结构,主要包含了servlet代码文件,JSP页面文件,类文件,部署描述符文件等:

        /usr/local/tomcat/webapps/app1/

                   /:webapp的根目录:

                   WEB-INF/:        #字符必须大写,不会在网页上显示,是当前webapp的私有资源,存放当前webapp自用的we b.xml,可以从tomcatconf目录中复制web.xml文件到这个目录中

                   META-INF/:#字符必须大写,不会在网页上显示,,是当前webapp的私有资源,存放当前webapp自用的context.xml, 可以从tomcatconf目录中复制context.xml文件到这个目录中

 

                   Classes/:webapp的私有类

                   Lib/:webapp的私有类,被打包为jar格式类

                   Index.jsp/:webapp的主页

 

Webapp归档格式:

         .war:         webapp:

         .jar:           EJB的类

         .rar:          资源适配器

         .ear:                   企业级应用程序

        

 

手动添加一个测试应用程序:

1.      创建webapp特有的目录结构

Mkdir –pv myapp/{lib,classes,WEB-INF,META-INF}

2.      提供webapp各文件

Myapp/index.jsp

 

部署(deployment)webapp相关的操作:

         Deploy部署,webapp的源文件放到目标目录,配置tomcat服务器能够基于context.xml文件中定义的路径来访问此webapp,将其特有类通过classloader装载至tomcat

         有两种方式:

                   自动部署:autodeploy

                   手动部署:

1.      冷部署:把webapp复制到指定位置,而后才启动tomcat

2.      热部署;在不停止tomcat的前题下进行

3.      部署工具,manager,ant脚本,tcd(tomcat client deployer)

Undeploy:反部署,停止webapp,并从tomcat实例拆除其部分文件和部署名

                   Stop:停止,不再向用户提供服务,但应用程序类文件还在JVM虚拟机内

                  Start:启动处理“停止”状态的webapp应用程序

                   Redeploy:重新部署

                  

 

 

 

 

 

 

 

 

连接器组件SSL

<Connector port=”8443” maxThreads=”150”minSpareThreads=”25” maxSpareThreads=”75” enableLookups=”false” acceptCount=”100”debug=”0” scheme=”https” secure=”true” clientAuth=”false” sslProtocol=”TLS”>

 

 

Engine组件:一个service只有一个engine组件

         defaultHost

         name:

         jvmRoute:

 

Host组件:(定义虚拟主机):

         <Hostname=”localhost” appBase=”webapps” unpackWARs=”true” autoDeploy=”true”xmlValidation=”false” xmlNamespaceAware=”false”>

 

虚拟主机定义示例:

         <Enginename=”Catalina” defaultHost=”localhost”>

                   <Hostname=”localhost” appBase=”webapps”>

                            <Contextpath=”” docBase=”ROOT”/>

                            <Contextpath=”/bbs” docBase=”/web/bbs” reloadable=”true” crossContext=”true”/>

                   </Host>

 

                   <Hostname=”mail.linuxmysql.com” appBase=”/web/mail”>

                            <Contextpath=”/” docBase=”ROOT”>

                   </Host>

         </Engine>

 

 

主机别名定义:访问rsc.com会访问到rscpass.com

         <Hostname=”rscpass.com” appBase=”webapps” unpackWARS=”true”>

                   <Alias>rsc.com</Alias>

         </Host>

 

 

 

分割线
感谢打赏
江西数库信息技术有限公司
YWSOS.COM 平台代运维解决方案
 评论
 发表评论
姓   名:

Powered by AKCMS