Tomcat学习

-------------------------------------------------------URL---------------------------------------------------------

URL Uniform Resource Locator 统一资源定位符

http://www.taobao.com: 80/admin/index.html

http 浏览器使用的协议

www.taobao.com   表示 web 服务器的主机名或者是 ip 地址

80        表示 web 服务器所监听的网络端口号,如果使用 80 端口,则可以省略书写

admin/index.html  要访问的网页文档在 web 服务器上的路径信息

 

 

------------------------------------------------------- 批处理 -----------------------------------------------------

可以用记事本编写一个批处理文件 后缀名为 .bat

例如 test.bat 文件

echo off

dir

ping localhost

 

echo off------------ 禁止后面批处理命令显示在屏幕上,不包括自身命令, echo off 还会显示在屏幕上

dir------------------- 列出当前路径下的文件及文件夹目录列表

ping localhost----- 访问本机

在每句代码前加一个 @ 符号 也可以禁止批处理命令显示在屏幕上,与 echo off 效果相同,只是每句都要加很麻烦

可以在 echo off 代码前加上 @ ,让 echo off 这句代码也不显示在屏幕上

 

Set os------------ 系统返回操作系统名称   Windows 2000 显示其操作系统为 Windows_NT

Setlocal---------- 开始批处理文件中环境改动的本地化操作。在执行 SETLOCAL 之后,所做的环境改动只限于批处理文件。要还原原先的设置,必须执行 ENDLOCAL 。达到批处理文件结尾时,对于该批处理文件的每个尚未执行的 SETLOCAL 命令,都会有一个隐含的 ENDLOCAL 被执行

set java_home=C:/Program Files/Java/jdk1.5.0_04   设置 java_home 的路径

if exist “%CATALINA_HOME%/bin/setenv.bat” call “%CATALINA_HOME%/bin/setenv.bat”

如果在 %CATALINA_HOME%/bin 路径下存在 setenv.bat 批处理文件,那么就执行 setenv.bat 批处理文件,      exist :存在      call :执行

Start ping localhost ----------start 表示开启一个新的 cmd 窗口 执行 start 后边的命令 命令完成以后,新建的 cmd 窗口就会自动消失

Start ping –t localhost 表示开启新的 cmd 窗口后,一直 ping 下去,可以使用 ctrl+c 来中断

Start “ 名字 ”------------- 表示可以在 start 后边定义一个字符串,作为新 cmd 窗口的名字

Cls ---------------- 清楚屏幕,起始行为第一行

 

在批处理中设置文件夹的路径

windows 的环境变量中设置了 C:/oracle/ora92/bin;

set ORACLE_HOME=%ORACLE_HOME%  用每一层目录路径来指引下一层目录路径

set ROOT=%ORACLE_HOME%/Apache

set APACHE_HOME=%ROOT%/Apache

set JSERV_HOME=%ROOT%/Jserv

set LOG=%JSERV_HOME%/logs

-------------------------------------------------------Tomcat------------------------------------------------------

Tomcat sun 公司用于运行 JSP Servlet 的引擎 ,



Jakarta Tomcat

服务器是在

SUN

公司的

JSWDK



javaServer Web DevelopmentKit,



SUN

公司推出的小型

Servlet/JSP

调试工具)的基础上发展起来的一个优秀的

Servlet/JSP

容器,它是

Apache-Jakarta

软件组织的一个子项目。它不但支持运行

Servlet



JSP

,而且还具备了作为商业

java Web

应用容器的特征。)

 


网址是: http://jakarta.apache.org/

Jakarta 项目是在 Apache 軟件基金會 营运的公开 源代码 软件开发项目之一。开发着面向 编程语言 Java 程序库 框架 等。

Jakarta Apache 组织下的一套 Java 解决方案的开源软件的名称 , 它的名称是想把与 Jakarta 关系非常深的 爪哇岛 关联起来。编程语言 Java 的命名源自这个岛的名字( 印尼語   Jawa 英語 Java ),而城市 雅加达 Jakarta )正是这个岛上的第一大城市,也是 印度尼西亚 的首府。

Jakarta 项目所包括的相关工具、库以及框架:

BCEL - 处理 Java 字节码的类库

BSF - 脚本程序框架

Cactus - 服务器端 Java 类测试工具框架

ECS - The Element Construction Set is a Java API for generating elements for various markup anguages.

HttpComponents- 超文本传输协议 .

JCS - 分布式缓存系统 .

JMeter - 压力测试工具

ORO - Java classes that provide Perl5 compatible regular expressions.

Regexp - Java 正则表达式包

Slide - a content repository primarily using WebDAV.

Taglibs - Repository for JSP custom tag libraries.

以前隶属于 Jakarta 项目,但现在作为 Aapche 软件基金的单独项目:

Ant - 构建工具

Commons - 一组使用类的合集,主要作为 Java 标准库的补充

HiveMind - a services and configuration microkernel

Maven - 一个项目构建和管理工具

POI - a pure Java port of Microsoft's popular file formats.

Struts - a web application development framework

Tapestry - A component object model based on JavaBeans properties and strong specifications

Tomcat - 服务器,提供 JSP/Servlet 相关容器类

Turbine - web 应用快速开发框架

Velocity - 模板引擎

 

tar.gz 文件是 Linux 操作系统下的安装版本

exe 文件是 Windows 系统下的安装版本

zip 文件是 Windows 系统下的压缩版本

Tomcat5 对应的必须使用 JDK1.5

非安装压缩版的 Tomcat 可以使用 Tomcat/bin 目录下的批处理文件来启动与关闭

startup.bat     启动

shutdown.bat   关闭

使用批处理文件启动或关闭 tomcat 需要在批处理文件中配置 java_home 的路径

右击 startup.bat 选择编辑

在第一行 @echo off 换行后

输入 set java_home=C:/Program Files/Java/jdk1.5.0_04   本机的 JDK 主目录的路径

虚拟 web 目录的概念

http://www.helloworld.com/book/test.html

www.helloworld-------- 表示 web 服务器的名称和地址

后边的 /------------------- 表示 web 服务器上的站点根目录,对应到服务器的本地文件系统目录

Book/---------------------- 表示站点根目录下边的名称为 book 的站点子目录

 

一个文件系统目录可以被映射成为多个虚拟 web 目录

虚拟 web 子目录名称可以是多级目录结构的形式

Tomcat 按照最长路径匹配原则处理请求的 URL

将服务器上的本地系统目录映射成为一个虚拟 web 目录的过程,就叫做 web 发布,外界可以通过使用 http 协议的浏览器来访问此资源

使用 tomcat/conf/server.xml 文件 来配置虚拟的 web 目录

1. server.xml 中直接配置路径

<Host name="localhost" appBase="webapps"

       unpackWARs="true" autoDeploy="true"

       xmlValidation="false" xmlNamespaceAware="false">        

<Context path= "/exam"

docBase="E:/J2EE/MyEclipseWorkSpace/Examination/WebRoot">

</Context>

</Host>

<Host> 元素的 appbase 属性 表示存放 tomcat 发布的项目的文件夹

<Context> 元素的 path 属性 表示 tomcat 项目的名称,也就是虚拟子目录的名称

                        docBase 属性 表示服务器的本地文件系统目录中的对应项目文件路径

<Host> 元素代表一个站点,而 <Context> 元素代表了一个虚拟子目录

Host Context 的首字母必须大写,否则 tomcat 不认

 

2. server.xml 文件中 配置 war 包的路径

也可以将 <Context> 元素的 docBase 属性的值打成一个 war 包,然后将 docBase 的属性设置为 war 包的路径

将一个文件夹下的所有文件 封装在 war 包内的命令:

jar –cvf 包的名字 .war .   包的名字后有点,末尾 war 后也空格加点 表示当前目录下的所有文件都打包进入 war 文件中

也可以将当前目录下的某个指定文件打包成 war 文件 例如:

jar –cvf test.war test    test 文件打包成 test.war ,但是如果指定文件夹来打包,打包生成的 war 文件中也会包含这个文件夹本身,如果不想包含它,可以这样写:

jar –cvf test.war –C test .   这里 -C 的意思是将 test 文件夹设置为当前的打包目录 –C 要大写

 

<Context path= "/exam"

docBase="E:/J2EE/MyEclipseWorkSpace/Examination/WebRoot/exam.war">

</Context>

 

3. 将项目文件夹放入 tomcat/webapps 中,且项目文件夹内包含有 WEB-INF 文件夹,则默认为 Tomcat 的虚拟 web 目录, WEB-INF 中必须有一个 web.xml 文件

 

4. war 文件放入 tomcat/webapps ,war 文件默认被读取为虚拟 web 目录

Tomcat web.xml 配置文件

部署描述符文件 --------------Web 应用程序 /WEB-INF/web.xml

默认部署描述符 -------------- Tomcat/conf/web.xml

配置目录的默认网页 ------ tomcat/conf/web.xml 件中

<web-app>  web.xml 的一级标记

<welcome-file-list>

<welcome-file>index.html</welcome-file>

<welcome-file>index.htm</welcome-file>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

</web-app>

Web 应用程序的 web.xml 文件中中设置目录默认网页后, tomcat 总体的默认部署描述符 Tomcat/conf/web.xml 中的目录默认网页的功能将会失效

Web 应用程序 /WEB-INF/web.xml Tomcat/conf/web.xml 不是增加,而是覆盖

Tomcat 的虚拟主机及实现原理

在一台计算机上创建多个 web 站点,为每个 web 站点设置不同的主目录和虚拟子目录,每个 web 站点都可以作为一个独立的网站供用户使用

Web 虚拟目录

Http://www.12345.com/test/test.html

请求信息:

GET /test/test.html HTTP/1.1

Host:www.12345.com

 

GET 表示请求方式, /test/test.html 表示 web 虚拟目录文件的路径, HTTP/1.1 表示使用 1.1 版本的 http 协议

Host:www.12345.com  表示主机名

tomcat/conf/server.xml 文件 使用 <Host> 元素为每个网站配置不同的虚拟主机

<Host name="www.123.com" appBase="C:/test23"

       unpackWARs="true" autoDeploy="true"

       xmlValidation="false" xmlNamespaceAware="false">        

</Host>

<Host name="www.456.com" appBase="C:/test456"

       unpackWARs="true" autoDeploy="true"

       xmlValidation="false" xmlNamespaceAware="false">        

</Host>

可以设置 system32/drivers/etc/hosts 文件,来关联 IP 地址与主机名

127.0.0.1                                         Localhost 

127.0.0.1  www.123.com  

127.0.0.1  www.456.com  

开启 tomcat 服务 访问网站时,就可以使用主机名代替 IP 地址了

虚拟主机的端口号

Web 服务器上的每一个监听端口号,都要使用一个 <Connector> 元素来配置

Tomcat/conf/server.xml 的元素上下级

 

<Service name=” …… ”>

       <Connector port=” …… …… />

       <Engine name=” …… ”>

              <Host name=” …… ”>

                     <Context …… >  </Context>

              </Host>

       </Engine>

</Service>

 

<Service name="Second-Service">

       <Connector port="8007" maxHttpHeaderSize="8192"

               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

               enableLookups="false" redirectPort="8443" acceptCount="100"

               connectionTimeout="20000" disableUploadTimeout="true" />

       <Engine name="Catalina" defaultHost="localhost">

              <Host name="www.123.com" appBase="C:/test123"

                unpackWARs="true" autoDeploy="true"

                 xmlValidation="false" xmlNamespaceAware="false">

                     <Context path="/test" docBase="C:/test123"></Context>

              </Host>

       </Engine>

</Service>

telnet localhost 8008 访问

GET /test/test.html HTTP/1.1

Host:www.123.com

基于 IP 地址的虚拟主机

HTTP 1.0 不支持 host 头字段,在保证所有站点统一使用端口号 80 的情况下,早期只能采用不同的 IP 地址来建立虚拟主机,但缺陷是需要为每个站点分配一个独立的 ip 地址,网络中的 ip 地址资源稀缺

HTTP 1.1 可以使用不同的主机名来建立多个 web 站点

TOMCAT 与专用 WEB 服务器的集成

集成的考虑因素:

1.                   集群,集群系统的概念,负载均衡的概念

2.                   集群 / 安全

3.                   安全

4.                   附加功能

5.                   特殊功能

6.                   速度

7.                   socket 处理 / 系统稳定性

集成技术的选择

Mod_webapp  已经过时

Mod_jserv  不再被支持和使用

JK 是目前的首先技术,与 tomcat 使用 AJP 技术进行通信

JK2 目前也不被支持

Mod_proxy  JK 的配置更加简单,但不能实现有会话状态的负载均衡

Mod_proxy_ajp  mod_proxy 上改写的一个连接器,随着 apache 2.2 版本的服务器程序一起发布的,支持负载均衡,但只能在 apache 服务器上使用

 

不同的 web 服务器下的插件形式是不同的, tomcat 开发小组为不同的 web 服务器提供了相应的 JK 插件

如果在为 JK 插件预先配置好的 URL 映射信息中,所有“ /*.jsp ”形式的 URL 都由 tomcat 服务器来处理,那么,当用户请求访问“ /index.jsp ”时, web 服务器将调用 JK 插件来处理, JK 插件把这个请求转发给 tomcat 服务器来处理, tomcat 服务器最后将响应结果经 JK 插件传给 web 服务器

不同版本的 tomcat 与其他 web 服务器的各个版本集成时的 JK 插件也可能不同

Tomcat 体系结构

Server 服务器上可以有很多 Service 服务,在每个 Service 下可以有多个 Connector 连接器, Service 下的每个 Connector 都共用了一个 Engine 引擎

Tomcat JK 插件使用的是 AJP 协议

JK 插件的连接器配置   isapi_redirect-1.2.28.dll IIS  mod_jk.so Apache

tomcat server.xml 文件中,要使用 <Connector> 元素配置与 JK 插件进行通信的连接器

 

<Connector port="8009"

               enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />

port 端口号 8009  enanlelookups 是否检查   redirectport 重定向端口 8443 协议 AJP/1.3

 

1. Web 服务器( IIS Apache )中正确安装 JK 插件。

2.JK 插件需要知道把请求转发给哪个 Tomcat 服务器上的哪个连接器,也就是需要知道该连接器的通讯协议和地址。

3.JK 插件需要知道它负责处理的 url, 以便通知 Web 服务器把这些 URL 转交给它处理;另外,一个 JK 插件可以向多个 Tomcat 服务器转发请求,它需要知道哪些 URL 应转发给哪个 Tomcat 服务器。

4.JK 本身的一些配置信息,例如,记录日志的文件路径,记录日志的级别等信息,如果上面的 2 3 两个问题都在各自的一个属性文件中进行配置,那么,还需要告诉这两个属性文件的位置路径。

 

专业 web 服务器接收到浏览器的访问请求后,将符合某种条件的请求交给 JK 插件, JK 插件在根据配置文件的设置信息,将请求交给相应的 tomcat 服务器处理

JK 插件包含几个配置文件

workers.properties  设置与 JK 插件进行通信的 Tomcat 上的连接器的通信协议和地址

uriworkermap.properties  用于设置 JK 插件负责处理的 URL 和具体处理各个 URL Tomcat 服务器的名称,使用的服务器的名称就是在 workers.properties 中配置的

服务器的名称就代表了服务器的主机名,端口和监听的协议类型

isapi_redirect-1.2.28.properties  设置 JK 插件本身的一些配置信息以及说明 workers.properties 文件 uriworkermap.properties 文件的存储路径

isapi_redirect-1.2.28.log  JK 插件的日志文件

属性文件和日志文件的名称必须与 JK 插件 dll 文件的名称一致

除了属性文件,也可以使用注册表文件

Workers.properties 示例

Worker.list=worker1,worker2  定义两个名称,可以想象成对象,用来指定 JK 插件所要链接的每个 tomcat 程序的名字

Worker.worker1.type=ajp13  监听的协议类型

Worker.worker1.host=localhost  主机名或 IP 地址

Worker.worker1.port=8009  端口号

Worker.worker2.type=ajp13

Worker.worker2.host=192.168.0.3

Worker.worker2.port=8009

也可以将某个服务程序名字的 type 属性设置为 lb ,含义是 Load balance 的缩写,负载均衡

例如:

Worker.list=wlb---------- 定义一个 tomcat 服务程序的名称,用来实现一个负载均衡系统,但不包括实现负载均衡的 tomcat 服务程序的名称

Worker.ajp13w.type=ajp13-------- 设置 ajp13w 这个 tomcat 服务程序的监听协议类型,主机名,端口号

Worker.ajp13w.host=localhost

Worker.ajp13w.port=8009

Worker.wlb.type=lb

--------- 表示为一个负载均衡系统的 tomcat 服务程序,是一个虚拟的 tomcat 服务器,他没有 host port 属性,而需要设置下边的 balance_workers 属性

Worker.wlb.balance_workers=ajp13w

--------------balance_workers 属性列出了组成负载均衡系统的所有 tomcat 服务程序的名称,去管理组成了负载均衡系统的 tomcat 服务程序,如果一个 tomcat 服务程序加入到了一个负载均衡系统当中,那么 tomcat 服务程序的名称就不能出现在 Worker.list=wlb 这句代码的定义当中, Worker.list 只能包含非组成负载均衡系统的 tomcat 服务程序的名称,

 

uriworkermap.properties 示例

/*.jsp=worker1

/admin/*=worker1

/manager/*=worker1

/jsp-examples/*=worker1

/servlets-examples/*=worker1

左边的内容是需要转发给 tomcat 服务器去处理的 URL ,可以使用 * 号通配符来匹配一组 URL

右边的内容是处理这一组 URL Tomcat 的服务程序的名字

isapi_redirect-1.2.28.properties 示例

#JK 插件在 IIS 服务器中虚拟路径,应于 IIS 中创建的虚拟目录名称保持一致

Extension_uri=/JK/isapi_redirect-1.2.28.dll

#JK 插件生成的日志文件的完整路径

log_file=E:/JK/log/isapi_redirect-1.2.28.log

# 日志级别,其有效值为 debug,info,error trace

log_level=debug

#workers.properties 文件的完整路径

worker_file=E:/JK/conf/workers.properties

#uriworkermap.properties 文件的完整路径

worker_mount_file=E:/JK/conf/uriworkermap.properties

isapi_redirect-1.2.28.reg 示例

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE/SOFTWARE/ApacheSoftware Foundation/Jakarta Isapi Redirector/1.0]

"extension_uri"="JK/isapi_redirect-1.2.28.dll"

"log_file"="E://JK//log//isapi_redirect-1.2.28.log"

"log_level"="info"

"worker_file"="E://JK//conf//workers.properties"

"worker_mount_file"="E://JK//conf//uriworkermap.properties"

Tomcat IIS 服务器集成

IIS Internet Information Server 的缩写,它是微软公司主推的服务器, IIS WindowNT Server 完全集成在一起,因而用户能够利用 Windows NT Server NTFS NT File System NT 的文件系统)内置的安全特性,建立强大,灵活而安全的 Internet Intranet 站点。 IIS 支持 HTTP Hypertext Transfer Protocol ,超文本传输协议), FTP Fele Transfer Protocol ,文件传输协议)以及 SMTP 协议,通过使用 CGI ISAPI IIS 可以得到高度的扩展。

 

IIS 支持与语言无关的脚本编写和组件,通过 IIS ,开发人员就可以开发新一代动态的,富有魅力的 Web 站点。 IIS 不需要开发人员学习新的脚本语言或者 编译应用程序, IIS 完全支持 VBScript JScript 开发软件以及 Java ,它也支持 CGI WinCGI ,以及 ISAPI 扩展和过滤器。

 

IIS 的设计目的是建立一套集成的服务器服务,用以支持 HTTP FTP SMTP ,它能够提供快速且集成了现有产品,同时可扩展的 Internet 服务器。

 

1. 先安装 IIS 服务器

在控制面板 ------- 添加或删除程序 -------- 添加 / 删除 Windows 组件 --------Internet 信息服务 IIS

2. JK 插件所在的目录设置为某个站点下的一个具有执行许可权限的虚拟目录

IIS 的本地计算机的 网站 中把 JK 插件安装为一个 ISAPI 筛选器

然后右键单击本地计算机,选择所有任务 -------- 重新启动 IIS

3. 编写 workers.properties 文件 -------- 设置链接 tomcat 的信息

          uriworkermap.properties 文件 -------- 设置将哪些形式的 URL 地址交给 JK 插件,在转交给 tomcat 处理

4. 设置 JK 插件的属性   例如记录 log 时候的路径等,有两种方法

在一个属性文件中设置 -------- 这个文件必须与 JK 插件 isapi_redirect-1.2.28.dll 在同一目录中,且文件名也要相同,后缀名为 properties,   isapi_redirect-1.2.28.properties

   Windows 注册表中设置

5. 测试配置是否成功   配置完所有文件后,再重新启动一次 IIS ,然后用 IIS 的端口号来访问 tomcat 下的 jsp 文件测试

Tomcat Apache 服务器集成

1. 先安装 Apache 服务器

网址: http://httpd.apache.org/download.cgi

2. 将对应于 Apache 服务器的 JK 插件 mod_jk-apache-1.3.27.so 改名为 mod_jk.so 后复制到

<APACHE_HOME>/modules 目录中

3. 设置配置信息,在 Apache <APACHE_HOME>/conf/httpd.conf 配置文件中直接设置

# 加载 JK 插件模块

LoadModule jk_module modules/mod_jk.so

# 配置 Tomcat 服务器的信息

JKWorkerProperty worker.list=worker1

JKWorikerProperty worker.worker1.port=8009

JKWorikerProperty worker.worker1.host=localhost

JKWorikerProperty worker.worker1.type=ajp13

# 指定生成 JK 插件的日志文件的目录

JKLogFile logs/mod_jk.log

# 指定 JK 插件的日志文件的级别

JKLogLevel debug

# 设置 JK 插件的路径映射信息

JKMount /*.jsp=worker1

JKMount /myweb/*=worker1

可以把配置文件按照 tomcat 整合 IIS 的形式 分为两个文件来配置,在 Apache <APACHE_HOME>/conf 文件夹中,配置 workers.properties uriworkermap.properties

4. 测试配置是否成功

Tomcat 与专业服务器整合的现实问题

随着各种服务器版本的不断升级, JK 插件也在不断的更新和升级

在六个月的时间内,人们可以公布,开发,运用,批评以及放弃一种技术

一本好书的编写到出版的过程需要相当长的一段时间,也许等到读者看到书的内容时,书中讲解的专用技术已经被新的技术所取代

只需要知道有这样一种技术,了解一些粗略的术语和学习方向后,根据具体的应用需求,去网上查找相关的最新资料

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值