首页 技术 正文
技术 2022年11月18日
0 收藏 525 点赞 2,803 浏览 6429 个字

Tomcat服务器介绍

Tomcat是一个免费开发源代码的web应用服务器,具有与IIS、Apache等web服务器一样处理html页面的功能,另外它还是一个Servlet和JSP容器,独立的servlet容器(除此之外,还有进程内的servlet容器和进程外的servlet容器模式)是tomcat的默认模式。tomcat处理静态html的能力不如Apache。

Tomcat安装、启动和配置


Tomcat服务器安装

  • 1、安装JDK并配置JAVA_HOME、PATH等环境变量
  • 2、解压tomcat安装包(多平台二进制发行版)到任一目录下即可(如/opt下)

将环境变量配置到/etc/profile文件中(一劳永逸):

export JAVA_HOME=/opt/jdk1..0_45export LANG=zh_CN.gbkexport LC_ALL=zh_CN.gbkexport CLASSPATH=.export PATH=$JAVA_HOME/bin:/opt/apache-tomcat-7.0.41/bin:$PATHexport LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib:/opt/jdk1.6.0_45/lib"

相关目录说明:

Tomcat安装、启动和配置

相关脚本说明:

Tomcat安装、启动和配置


Tomcat的环境变量

Tomcat安装、启动和配置


Tomcat启动分析

  • windows下的执行启动命令startup.bat,实际上执行的是catalina.bat start;执行shutdown.bat实际上执行的是catalina.bat stop,另外执行catalina.bat run命令可用于tomcat启动失败时保留窗口以排错
  • tomcat启动时需要查找CATALINA_HOME环境变量,如果在当前目录下调用startup.bat,tomcat会自动设置CATALINA_HOME
  • 启动调用关系:startup.bat–>catalina.bat–>setclasspath.bat–>java.exe
  • 重启Tomcat:先关闭tomcat;然后查看进程并杀掉tomcat、JVM相关进程;再启动tomcat

catalina脚本的启动参数:

       Tomcat安装、启动和配置


测试Tomcat是否工作正常

1、浏览器访问:http://192.168.222.132:8080,进入如下页面:

Tomcat安装、启动和配置

2、编译如下test1.jsp文件,置于tomcat的../webapps/ROOT/目录下,访问:http://192.168.222.132:8080/test1.jsp,得如下页面:

<!--test1.jsp--><HTML><HEAD><TITLE>JSP测试页面</TITLE></HEAD><BODY><%out.println("<h1>Hello World! </h1>");%></BODY></HTML>

Tomcat安装、启动和配置


Tomcat主要配置文件

conf/server.xml—配置端口号、多服务等

    <Connector port="8088" protocol="HTTP/1.1"               connectionTimeout="20000"               redirectPort="8443" />

conf/web.xml

conf/tomcat-users.xml—配置进入控制台的角色和用户

<tomcat-users><!--增加一个用户,指定用户名、密码和角色--><user username="admin" password="admin" roles="admin-gui,manager-gui"/></tomcat-users>

Tomcat中部署web应用

  1. 利用tomcat自动部署:最简单、最常用,直接将web应用复制到tomcat的webapps下
  2. 利用控制台部署

Tomcat安装、启动和配置

3.增加自定义的web部署文件:稍复杂,无需复制web应用到tomcat安装目录下,需要在conf目录中新建catalina/localhost目录,并在在该目录下新建xml文件,如dd.xml:

<Context docBase="G:/publish/codes/01/aa" debug="0" privileged="true">   --指定web应用的绝对路径</Context>

4.通过修改server.xml文件部署web应用:不建议采用


Tomcat中配置数据源

  1. 局部数据源:只能在单个web应用中访问,只与特定的web应用相关,无需修改系统配置文件,只需修改用户自己的web部署文件。已配置mysql数据源为例,在dd.xml中为Context元素增加一个Resoure子元素:
<?xml version="1.0" encoding="GBK"?><Context docBase="G:/publish/codes/01/aa" debug="0" privileged="true"><!--name指定数据源在容器中的JNDI名driverClassName指定连接数据库的驱动url指定数据库服务的urlusername指定连接数据库的用户名password指定连接数据库的密码maxActive指定数据源最大活动连接数maxIdle指定数据池中最大的空闲连接数maxWait指定数据池中最大等待获取连接的客户端--><Resource name="jdbc/dstest" auth="Container"  type="javax.sql.DataSource"  driverClassName="com.mysql.jdbc.Driver"  url="jdbc:mysql://localhost:3306/javaee"  username="root" password="32147" maxActive="5"  maxIdle="2" maxWait="10000"/></Context>

./WEB-INF/classes/configration.xml:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration>    <!-- <properties resource="jdbc.properties"/> -->    <environments default="development">        <environment id="development">            <transactionManager type="JDBC" />            <dataSource type="POOLED">                <property name="driver" value="com.mysql.jdbc.Driver" />                <property name="url" value="jdbc:mysql://192.168.101.12:3306/dbbase?useUnicode=true&amp;characterEncoding=UTF-8&amp;zeroDateTimeBehavior=convertToNull" />                <property name="username" value="testuser" />                <property name="password" value="testpasswd" />                <property name="poolMaximumActiveConnections" value="70"/>                <property name="poolMaximumIdleConnections" value="15"/>            </dataSource>        </environment>    </environments>    <mappers>        <mapper resource="com/sdsd/entity/NewsMapper.xml"/>        <mapper resource="com/sdsd/entity/NewsContentMapper.xml"/>        <mapper resource="com/sdsd/entity/NewsCateMapper.xml"/>    </mappers></configuration>~                 

2.全局数据源:可以让所有的web应用都能访问,需要配置系统配置文件server.xml,配置内容与局部数据源配置类似。

Tomcat中配置数据库连接池

1)把数据库驱动包copy到 %CATALINA_HOME%\common\lib 下。

2)修改 %CATALINA_HOME%\conf\server.xml 文件,在 <Host> 节点下添加:

<!-- appName 为项目名 --!><Context path="/appName" docBase="appName" auth="Container"><Resource name="jdbc/MySQLDS" scope="Shareable"type="javax.sql.DataSource"url="jdbc:mysql://localhost:3306/test?useUnicode=true&charact-erEncoding=GBK"driverClassName="com.mysql.jdbc.Driver"username="root" password="111111"maxWait="3000" maxIdle="100" maxActive="10" /></Context>

(或者在 %appName%\META-INF 下建立context.xml,内容为上面的代码。)

3)修改web.xml,在 <web-app> 节点下添加:

<resource-ref><description>Oracle Datasource example</description><res-ref-name>MySQLDS</res-ref-name><res-type>javax.sql.DataSource</res-type><res-auth>Container</res-auth></resource-ref> 

(这一步不添加也没问题。)

4)在代码中获取数据库连接:

import java.sql.Connection;import javax.naming.Context;import javax.naming.InitialContext;import javax.sql.DataSource; public class DBUtil {public Connection getConnection() throws Exception {Context context = new InitialContext();// 获取数据源DataSource ds = (DataSource) context.lookup("java:comp/env/jdbc/MySQLDS");// 获取数据库连接Connection conn = ds.getConnection(); if (conn != null && !conn.isClosed()) {  return conn;} else {  return null;}}}

Tomcat中连接器(Connector)的配置

Tomcat从5.5版本开始,支持以下四种Connector的配置分别为:
1)NIO:NIO利用了APR提供的本地IO,能提升Tomcat的并发处理能力,配置例子如下所示:

<Connector port="8081" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443"/>

2)HTTP:HTTP是Tomcat默认配置的连接器,性能比较稳定,但是效率不是很高,配置的例子如下所示:

<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000"redirectPort="8443"/> 

3)tomcatThreadPool:tomcatThreadPool使用了线程池的技术,客户端请求可重用线程池中的线程来处理,节省了重新分配线程的开销,配置的例子如下所示:

<Connector executor="tomcatThreadPool"port="8081" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />

4)tomcatThreadPool + NIO:tomcatThreadPool可以组合NIO来提供服务,即在NIO的基础上加入线程池,配置的例子如下所示:

<Connector executor="tomcatThreadPool"port="8081" protocol="org.apache.coyote.http11.Http11NioProtocol"connectionTimeout="20000"redirectPort="8443" />

读者可将Tomcat的连接器分别按这四种方式配置,然后做一下对比测试,查看一下性能的差异。一般来说,第二种配置方式(HTTP)的性能会比较稳定,但是也是最差的,而这种方式是Tomcat的默认配置;第一种配置方式(NIO)的会有性能波动,但整体效率是比较高的;第三种配置方式(tomcatThreadPool)性能波动比较大;第四种配置方式(tomcatThreadPool + NIO)是在NIO的基础上加入线程池,可能是程序处理更复杂了,因此性能不见得比NIO强。


Tomcat的体系结构

Tomcat服务器是由一系列可配置的组件构成的,其中核心组件是Catalina Servlet容器,它是所有其他Tomcat组件的顶层容器。Tomcat各组件之间的层次关系:

Tomcat安装、启动和配置

各组件的作用:

1)Server

Server表示整个的Catalina Servlet容器。Tomcat提供了server接口的一个默认实现,这通常不需要用户自己去实现。在server容器中,可以包含一个或多个service组件。

2)Service

Service是存活在Server中的内部组件,它将一个或多个连接器(Connector)组件绑定到一个独立的引擎(Engine)上。

3)Connector

Connector处理与客户端的通信,它负责接收客户请求,以及向客户返回响应结果,在Tomcat中有多个连接器可以使用。

4)Engine

在Tomcat中,每个Service只能包含一个servlet引擎。引擎表示一个特定的Service的请求处理流水线,作为一个Service可以有多个连接器,引擎从连接器接收和处理所有的请求,将响应返回给适合的连接器,通过连接器传输给用户。

5)Host

Host表示虚拟主机,一个Engine可以包含多个Host

6)Context

一个Context表示一个web应用程序,运行在特定的虚拟主机中。什么是web应用程序?java servlet规范中定义:“一个web应用程序是由一组servlet、html页面、类以及其他资源组成的运行在web服务器上的完整的应用程序,它可以在多个供应商提供的实现了servlet规范的web容器中运行”。一个Host可以包含多个Context,每个Context都有一个唯一的路径。

Tomcat安装、启动和配置

可以在Tomct的conf目录下的server.xml文件中对这些组件进行配置。

资料:

Tomcat全攻略  http://oss.org.cn/ossdocs/apache/tomcat/l-tomcat.htm

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,088
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,564
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,412
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,185
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,822
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,905