Better

Ethan的博客,欢迎访问交流

Tomcat基本配置

大学里学习JAVA这一块,主要关注点不在Tomcat配置,对于Tomcat配置的了解也就停留在能改改端口,配置jndi数据库连接池,工作中了解到可以通过Host的appBase属性改变应用的存放路径,进而深入学习一下。

server.xml

Tomcat的主配置文件,最常用的配置文件,下面通过能实现的功能进行理解,修改端口等功能不在赘述。

多端口开启多项目

Server是顶级组件,代表一个 Tomcat 实例。可以包含一个或多个 Services ,其中每个 Service 都有自己的 Engines 和 Connectors。因此实现多端口开启多个项目,直接复制一个Service节点,然后进行配置即可。

自定义项目路径

Host属性appBase默认webapps值,这也就是最初直接将项目放入webapps能自动部署的原因,很多时候项目不愿意和Tomcat放置在一起,或者因为权限问题,无法访问Tomcat文件,可以通过这个属性自定义项目路径。

虚拟目录

默认情况下,可以通过ip:port访问appBase下指定的项目,比如要访问A项目,访问方式为ip:port/A,但是这样会将我们的项目路径暴露在用户面前,可以通过Context.xml配置,或直接在Host下增加子节点Context的方式解决这个问题。方便理解,假定Host节点配置如下:

<Host name="www.test.com"  appBase="/web" unpackWARs="true" autoDeploy="true">

Context节点配置举例

<Context path="" docBase="www/" reloadable="true" />   
<Context path="test" docBase="test/" reloadable="true" />   

web.xml

  • 默认文件设置,welcome-file-list
  • 报错文件设置
  • 会话超时设置
  • 过滤器设置

context.xml

  • Tomcat 5.5之前 Context体现在/conf/server.xml中的Host里的元素,它由Context接口定义。每个元素代表了运行在虚拟主机上的单个Web应用。
    <Context path="/xxx" docBase="xxx" debug="0" reloadbale="true">    
    
    • path:即要建立的虚拟目录,,注意是/xxx,它指定访问Web应用的URL入口,如http://localhost:8080/xxx/
    • docBase:为实际目录在硬盘上的位置(应用程序的路径或者是WAR文件存放的路径)
    • reloadable:如果这个属性设为true,Tomcat服务器在运行状态下会监视在WEB-INF/classes和Web-INF/lib目录CLASS文件的改变,如果监视到有class文件被更新,服务器自动重新加载Web应用,这样我们可以在不重起tomcat的情况下改变应用程序 一个Host元素中嵌套任意多的Context元素。每个Context的路径必须是惟一的,由path属性定义。另外,你必须定义一个path=“”的context,这个Context称为该虚拟主机的缺省web应用,用来处理那些不能匹配任何Context的Context路径的请求。
  • Tomcat 5.5后 不推荐在server.xml中进行配置,而是在/conf/context.xml中进行独立的配置。因为server.xml是不可动态重加载的资源,服务器一旦启动了以后,要修改这个文件,就得重启服务器才能重新加载。而context.xml文件则不然,tomcat服务器会定时去扫描这个文件。一旦发现文件被修改(时间戳改变了),就会自动重新加载这个文件,而不需要重启服务器。
  • 作用范围
    • tomcat server级别:在/conf/context.xml里配置
    • Host级别:在/conf/Catalina/${hostName}里添加context.xml,继而进行配置
    • web app 级别:在/conf/Catalina/${hostName}里添加${webAppName}.xml,继而进行配置
  • context节点--子节点
    • WatchedResource
    • Resource

tomcat-users.xml

添加用户,使这个用户有权限进行管理。

启动显示日志信息

./bin/startup.sh & tail -f logs/catalina.out启动且显示日志信息
sh startup.sh
sh shutdown.sh


留言