设为首页 收藏本站
查看: 332|回复: 0

[经验分享] Tomcat的许多许多

[复制链接]

尚未签到

发表于 2017-1-17 11:09:18 | 显示全部楼层 |阅读模式
  一、Tomcat的作用
  简单地说,包装用户请求里面提交的数据,把请求传送给servlet并把结果返回给客户
  

  二、Tomcat的各个组件
   DSC0000.jpg
  Tomcat的组件可以在<CATALINA_HOME>/conf/server.xml中配置
  

  

、Tomcat工作模式:
1、 作为独立的servlet容器,有独立的Java虚拟机进程.[Tomcat其实也是一个Java程序,要用JVM运行]
2、 运行在其他的服务器进程内.此时Tomcat分为两个部分 : Web服务器插件+Servlet容器组件.当有Servlet的请求     时,由Web服务器组件通知Servlet组件并转发请求[使用JNI通信机制].没有独立的JVM进程.
3、 运行在其他的服务器进程外.但同时也是为其他服务器服务.同样分为两个部分,功能一样[使用IPC通信机制].有独立的JVM进程.
注 : 后面两种一般是因为其他的Web服务器不支持Servlet.




、Tomcat的运行
Tomcat6.x之前的版本,是使用JDK提供的Java编译器来编译JSP文件的
Tomcat6.x是用自带的JDT[Eclipse提供的]来编译JSP的.
因此,如果JDK中不完整,但是只要有了JRE,就可以运行Tomcat6.x;[用的是jdk1.6.0目录下的JRE,而不是jre1.6.0]
配置JAVA_HOME的意义也是为了能够使用JVM来运行Tomcat ! 
  

  

  

五、Tomcat运行脚本:
命令行参数
描述
Start
在新的DOS窗口中启动Tomcat服务器
Run
在当前的DOS窗口中启动Tomcat服务器
Debug
在跟踪模式下启动Tomcat服务器
Embedded
在嵌入模式下启动Tomcat服务器
Stop
关闭服务器
其中,我们平时用的
Startup.bat和Shutdown.bat,都是调用同一目录下的catalina.bat,即:
Startup.bat = catalina start 命令
Shutdown.bat = catalina stop 命令
 
Cataline Run命令更适合调试所有,因为有时候出错了,那个独立运行Tomcat的DOS窗口会直接被关掉,这样就看不到错误信息了


Tomcat的目录结构

  /bin包含启动/关闭脚本

  /conf包含不同的配置文件,包括 server.xml(Tomcat的主要配置文件)和为不同的Tomcat配置的web应用设置缺省值的文件web.xml
/doc包含各种Tomcat文档
/lib包含Tomcat使用的jar文件.unix平台此目录下的任何文件都被加到Tomcat的classpath中
/Logs存放Tomcat的日志文件
/server包含3个子目录:classes、lib和webapps
/webapp 包含web项目示例,当发布web应用时,默认情况下把web文件夹放于此目录下
/work Tomcat自动生成,放置Tomcat运行时的临时文件(如编译后的JSP文件).如在Tomcat运行时删除此目录.JSP页面将不能运行.[ jsp生成的sevlet放在此目录下]
/Common/lib 存在Tomcat服务器及所有的web应用程序可以访问的JAR文件
/Server/lib     存在Tomcat服务器运行所需的各种JAR文件。
/Share/lib存在所有的web应用程序可以访问的JAR文件(不能被tomcat访问)

Server/lib,Share/lib,Common/lib目录下都可以放JAR,他们的区别在于:
在Server/lib, 目录下的JAR文件只能被Tomcat服务器访问。
在Share/lib, 目录下的JAR文件可以被所有的web应用程序访问,但不能被Tomcat服务器访问。
在Common/lib, 目录下的JAR文件可以被Tomcat服务器和所有的web应用程序访问。
此外,对于后面介绍Java Web应用程序,在它的WEB-INF目录下,也可以建立lib子目录,在lib子目录下可以存放各种JAR文件,这些JAR文件只能被当前WEB应用程序所访问。

  

  
七、Tomcat查找请求的servlet的顺序!
假设找AddServlet,现在请求URL为:myApp/AddServlet
1、先参考web.xml文件,找到<url-pattern>子元素的值为/AddServlet的<servlet-mapping>
2、读取<servlet-mapping>元素的子元素<servlet-name>的值X[所以如果两个<servlet-name不一致的话,是找不到servlet的!>]
3、读取<servlet-class>子元素的值,接着去找class文件[怎么找看第8]
实际上,Tomcat在加载Web应用的时候,就会把它的web.xml文件加载到内存中去的.
八、Tomcat类加载器的工作
1) WEB-INF/classes
2) WEB-INF/lib[好像只会找jar文件]
3) Tomcat的lib[会找jar和子目录]
待深入:
tomcat的类加载器以及其工作原理
 
 
九、Tomcat Web应用的发布
Server.xml中<Host>的配置项有一个属性是deployOnStartup,这个属性默认值为true
,如果为true,则tomcat每次启动时都会发布appBase目录下的所有Web应用,但是如果为false,就要自己在Server.xml中配置一个<Context>。如果我们没有配置<Context>则其实是使用默认的配置,默认的<Context>是reloadable是为false的。详细还是去看Tomcat的文档好了。
 
 
、为什么jsp可以不用再web.xml中配置,但是servlet就要呢??????
主要有两个原因:/
1、让一个servlet可以对应多个URL.在web.xml里面,可以为一个servlet配置多个<servlet-mapping>
2、 简化servlet的URL,并且可以向客户端隐藏Web应用的实现细节.[因为jsp我们一般都只是放在项目根目录下,URL可以比较简单]
 
但其实,JSP也可以在web.xml中配置的。把servlet-class项换成jsp-file就行了。
 
 
十一、Tomcat加载<Context>的顺序
一个<context>对应了一个Web应用,这个context.xml指定了这个项目的目录,所用的数据库资源什么的也可以在这里配上!
平时我们一般都是写完项目然后丢在tomcat的webapp里面,但是,如果我们要用到可以移植到其他电脑使用的话,就比较麻烦了,因为放在那里的话,tomcat会帮我们默认配置<context>
 
tomcat加载一个Web应用的时候,会自动去查找<context>,查找的顺序是:
这里定义 :  Tomcat_home = Tomcat安装目录
Engine_home = server.xml里面的Engine  其他同理
 
1、Tomcat_home/conf/context.xml : 适用于所有的Web应用.
2、Tomcat_home/conf/Engin_name/host_name/context.xml.default: 适用于host指定的主机下的所有应用
3、Tomcat_home/conf/Engine_name/host_name/app_name.xml [如果在IDE配置了我们自己装的                                                               Tomcat,那么在IDE上创建的Web项目的context配置就是放在这里]
4、  到Web应用根目录下的META-INF/context.xml: 适用于当个Web应用.其实我自己觉得这个会比较好一点,因为是 放在Web项目下,这样增加了可移值性!/
5、Tomcat_home/conf/server.xml中找 , 适用于单个Web应用. 其实Tomcat6.x已经不建议这样使用了.
 

十二、Tomcat提供的管理JavaWeb应用的平台:通过该平台可以手动管理应用的生命周期

1、修改Tomcat_home/conf/tomcat-users.xml文件,加入一个user[当然已经有的就不用]

<tomcat-users>

<user username = "tomcat" password = "xxx" roles= "manager">

</tomcat-users>

2、启动Tomcat

3、访问http://localhost:8080/manager/html 输入帐号密码就OK了

其实,这个管理平台本身也是一个JavaWeb应用,就是/webapps/manager

 

其他、Tomcat配置虚拟主机
  还没试过,貌似要配DNS的

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-329754-1-1.html 上篇帖子: 用LambdaProbe监控Tomcat Tomcat和Probe的配置 下篇帖子: Jndi Tomcat 配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表