Tomcat安装、启动和配置
Tomcat服务器介绍
Tomcat是一个免费开发源代码的web应用服务器,具有与IIS、Apache等web服务器一样处理html页面的功能,另外它还是一个Servlet和JSP容器,独立的servlet容器(除此之外,还有进程内的servlet容器和进程外的servlet容器模式)是tomcat的默认模式。tomcat处理静态html的能力不如Apache。
Tomcat服务器安装
- 1、安装JDK并配置JAVA_HOME、PATH等环境变量
- 2、解压tomcat安装包(多平台二进制发行版)到任一目录下即可(如/opt下)
将环境变量配置到/etc/profile文件中(一劳永逸):
export JAVA_HOME=/opt/jdk1..0_45 export LANG=zh_CN.gbk export LC_ALL=zh_CN.gbk export CLASSPATH=. export PATH=$JAVA_HOME/bin:/opt/apache-tomcat-7.0.41/bin:$PATH export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib:/opt/jdk1.6.0_45/lib"
相关目录说明:
相关脚本说明:
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是否工作正常
1、浏览器访问:http://192.168.222.132:8080,进入如下页面:
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主要配置文件
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应用
- 利用tomcat自动部署:最简单、最常用,直接将web应用复制到tomcat的webapps下
- 利用控制台部署
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中配置数据源
- 局部数据源:只能在单个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指定数据库服务的url username指定连接数据库的用户名 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&characterEncoding=UTF-8&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各组件之间的层次关系:
各组件的作用:
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都有一个唯一的路径。
可以在Tomct的conf目录下的server.xml文件中对这些组件进行配置。
资料:
Tomcat全攻略 http://oss.org.cn/ossdocs/apache/tomcat/l-tomcat.htm
Tomcat安装、启动和配置的更多相关文章
- Linux Tomcat安装,Linux配置Tomcat,Linux Tomcat修改内存,Linux tomcat修改端口
Linux Tomcat安装,Linux配置Tomcat,Linux Tomcat修改内存,Linux tomcat修改端口 >>>>>>>>>& ...
- Java从入门到精通——数据库篇Mongo DB 安装启动及配置详解
一.概述 Mongo DB 下载下来以后我们应该如何去安装启动和配置才能使用Mongo DB,本篇博客就给大家讲述一下Mongo DB的安装启动及配置详解. 二.安装 1.下载Mongo DB ...
- 【Tomcat】Tomcat安装及Eclipse配置教程
==================================================================================================== ...
- tomcat安装以及常用配置
目录 一 什么是tomcat 二 tomcat 的版本: 三 tomcat的下载 3.1 tomcat9版本下载链接 3.2 tomcat8.5版本下载链接 四 tomcat的安装 4.1 java环 ...
- 【Linux】Tomcat安装及端口配置
安装环境 :Linux(CentOS 64位) 安装软件 : apache-tomcat-9.0.20.tar.gz(下载地址http://tomcat.apache.org/) 一:JDK安装配置 ...
- Linux Tomcat安装及端口配置
1. JDK安装配置 待写 2. Tomcat安装配置 1,下载Tomcat链接,到启动测试. 将文件apache-tomcat-8.5.50.tar.gz移动到/usr/tomcat/下,并解压 ...
- 中阶 d05 tomcat 安装 eclipse上配置tomcat
eclipse使用参考 https://www.bilibili.com/video/av49438855/?p=24 1. 直接解压 ,然后找到bin/startup.bat 2. 可以安装 启动之 ...
- Tomcat安装及环境配置
欢迎任何形式的转载,但请务必注明出处. 本章内容 安装 环境变量入口 三个系统变量配置 测试安装配置是否成功 安装之前请安装jdk并进行环境配置(点击进入jdk教程) 一.安装 点击进入官网下载 二. ...
- Windows平台下Java,tomcat安装与环境配置
问题描述:在Windows下面做Java web相关的项目的时候,Java和tomcat是基础,这里记载一下Java环境的配置以及tomcat的安装和配置. 使用工具:Windows.jdk安装包.t ...
- tomcat安装启动startup.bat文件命令行界面出现乱码的问题解决
进入tomcat安装界面,进入conf文件夹,找打logging.properties,打开进行编辑,在最后添加一句 java.util.logging.ConsoleHandler.encoding ...
随机推荐
- **对比$_POST、$GLOBALS['HTTP_RAW_POST_DATA']和file_get_contents('php://input')
最近在开发微信接口,又学到了一些新的技术点,今天就把学到的关于接收数据的技术点给简单的罗列下. public function __construct($token, $wxuser = ''){ $ ...
- 如何使用Linux的Crontab定时执行PHP脚本的方法
我们的PHP程序有时候需要定时执行,我们可以使用ignore_user_abort函数或是在页面放置js让用户帮我们实现.但这两种方法都不太可靠,不稳定.我们可以借助Linux的Crontab工具来稳 ...
- hdu 4584 水题爽一发 *
#include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #i ...
- ER-Studio的五种关系说明
1. identifying relationship: 1对多. 父实体的主键是子实体的外键(FK1),且FK1是主键. 2. no identifying, mandatory relations ...
- android自动更新程序,安装完以后就什么都没有了,没有出现安装成功的界面的问题
转载自: http://blog.csdn.net/lovexieyuan520/article/details/9250099 在android软件开发中,总是需要更新版本,所以当有新版本开发的时候 ...
- 能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项。试图加载格式不正确的程序。
现象: 能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项.试图加载格式不正确的程序.
- 介绍开发Android手持终端PDA盘点APP软件
介绍开发Android手持终端PDA盘点APP软件 软件需要自动识别我导入的TXT格式或者excl格式的盘点表,然后自动生成一个复盘数据,做AB比对,界面上需要显示的有总数量,单品数量,条码,编码,商 ...
- JavaScript------事件委托(event delegation)
简单的说,事件委托(event delegation)是在DOM上层(也就是在触发事件的元素的父元素上)定义事件的处理程序,而不是定义在触发事件的元素本身上. 首先我们来举这样一个例子:我有N个li元 ...
- 排序+逆向思维 ACdream 1205 Disappeared Block
题目传送门 /* 从大到小排序,逆向思维,从最后开始考虑,无后向性 每找到一个没被淹没的,对它左右的楼层查询是否它是孤立的,若是++,若不是-- 复杂度 O(n + m),还以为 O(n^2)吓得写了 ...
- UVa10917 A Walk Through the Forest(SPFA+记忆化搜索)
题目给一张有向图,问从起点1到终点2沿着合法的路走有种走法,合法的路指从u到v的路,v到终点的距离严格小于u到终点的距离. 先SPFA预处理出所有合法的路,然后这些路肯定形成一个DAG,然后DP一下就 ...