Tomcat学习
来源:互联网 发布:钢筋配料软件 编辑:程序博客网 时间:2024/06/04 18:37
-------------------------------------------------------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;
setORACLE_HOME=%ORACLE_HOME% 用每一层目录路径来指引下一层目录路径
setROOT=%ORACLE_HOME%/Apache
setAPACHE_HOME=%ROOT%/Apache
setJSERV_HOME=%ROOT%/Jserv
setLOG=%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 - TheElement Construction Set is a Java API for generating elements for variousmarkup anguages.
HttpComponents-超文本传输协议.
JCS - 分布式缓存系统.
JMeter - 压力测试工具
ORO -Java classes that provide Perl5 compatible regular expressions.
Regexp - 纯Java正则表达式包
Slide - acontent 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 popularfile formats.
Struts - a web application developmentframework
Tapestry- A component object model based on JavaBeans properties and strongspecifications
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换行后
输入setjava_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中直接配置路径
<Hostname="localhost" appBase="webapps"
unpackWARs="true"autoDeploy="true"
xmlValidation="false"xmlNamespaceAware="false">
<Contextpath= "/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 –cvftest.war test 将test文件打包成test.war,但是如果指定文件夹来打包,打包生成的war文件中也会包含这个文件夹本身,如果不想包含它,可以这样写:
jar –cvftest.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.htmlHTTP/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>元素为每个网站配置不同的虚拟主机
<Hostname="www.123.com" appBase="C:/test23"
unpackWARs="true"autoDeploy="true"
xmlValidation="false"xmlNamespaceAware="false">
</Host>
<Hostname="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=”……”>
<Connectorport=” ……” ……/>
<Enginename=” ……”>
<Hostname=” ……”>
<Context……> </Context>
</Host>
</Engine>
</Service>
<Servicename="Second-Service">
<Connectorport="8007" maxHttpHeaderSize="8192"
maxThreads="150"minSpareThreads="25" maxSpareThreads="75"
enableLookups="false"redirectPort="8443" acceptCount="100"
connectionTimeout="20000"disableUploadTimeout="true" />
<Enginename="Catalina" defaultHost="localhost">
<Hostname="www.123.com" appBase="C:/test123"
unpackWARs="true"autoDeploy="true"
xmlValidation="false"xmlNamespaceAware="false">
<Contextpath="/test" docBase="C:/test123"></Context>
</Host>
</Engine>
</Service>
用telnetlocalhost 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插件进行通信的连接器
<Connectorport="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,含义是Loadbalance的缩写,负载均衡
例如:
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 EditorVersion 5.00
[HKEY_LOCAL_MACHINE/SOFTWARE/ApacheSoftwareFoundation/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是InternetInformation Server的缩写,它是微软公司主推的服务器, IIS与WindowNT Server完全集成在一起,因而用户能够利用Windows NT Server和NTFS(NTFile 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_modulemodules/mod_jk.so
#配置Tomcat服务器的信息
JKWorkerProperty worker.list=worker1
JKWorikerPropertyworker.worker1.port=8009
JKWorikerPropertyworker.worker1.host=localhost
JKWorikerPropertyworker.worker1.type=ajp13
#指定生成JK插件的日志文件的目录
JKLogFilelogs/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插件也在不断的更新和升级
在六个月的时间内,人们可以公布,开发,运用,批评以及放弃一种技术
一本好书的编写到出版的过程需要相当长的一段时间,也许等到读者看到书的内容时,书中讲解的专用技术已经被新的技术所取代
只需要知道有这样一种技术,了解一些粗略的术语和学习方向后,根据具体的应用需求,去网上查找相关的最新资料
- Tomcat学习
- tomcat学习
- Tomcat学习
- tomcat 学习
- tomcat学习
- tomcat学习
- Tomcat学习
- Tomcat学习
- Tomcat学习
- tomcat学习
- tomcat学习
- tomcat学习
- Tomcat学习
- Tomcat学习
- Tomcat 学习
- tomcat学习
- tomcat 学习
- Tomcat学习之Tomcat架构
- 动态显示/隐藏 DataGrid 的列
- MyEclipse不编译问题的解决
- ffmpeg移植到andriod
- 关于Visual Assist X(VC助手)几个最新版本的比较与破解下载——更新到10.5.1727.0
- 做电子商务必要的一环
- Tomcat学习
- 如何将java中class文件反编译成java文件
- wicket基础应用(2)--wicket表单控件的使用
- 文件管理--改变文件所有者
- 在Linux x86上安装Oracle数据库10g
- 飞信内存占用过大问题的临时解决方案
- C#多线程编程(1):线程的启动
- HTTP学习
- hibernate 数据库保存机制——自动提交总结