Tomcatt各配置文件功能详解:

  • catalina.properties: 该文件包括服务器共享定义,共享加载器,和JARs,服务器在启动时会扫描此文件。
  • server.xml:此文件包含重要信息,如IP地址,端口,虚拟主机和上下文路径等。
  • tomcat-user.xml: 往往认证,授权,和角色定义在该文件中进行定义,还经常存储数据库用户名、密码、角色和管理容器的安全。
  • logging.properties:定义tomcat日志的属性信息。
  • web.xml:所有web应用加载到Tomcat实例的默认值,在tomcat启动时,假如应用有它自己的部署描述符,那它自己的定义优先web.xml中的定义。
  • context.xml: 该文件的内容将会加载到第个应用中,比如配置持久连接的参数,连接追踪等。

Context 路径:

它常常被用来配置虚拟机,就是可以使得多个域名在相同的web服务器上或单一的IP。
用来配置.war文件的URL映射。

上下文路径主要带来两个好处:

  1. 可以减少服务器的负载,当服务器收到一个请深圳市时,它会检查server.xml文件中的定义URL路径,假如找到的话,使用找到的路径进行服务的响应,否则服务器将会扫描所有的WAR文件,因此,它可以减少CPU的消耗。
  2. 给了我们可以自已定义的自由,如我们可以针对不同应用定制logging,appBase,DB connection等。

使用context path有两种方式:

  1. Tomcat WEB Application Manager(具体不介绍)
  2. 在Server.xml使用命令行的配置
    命令行方式配置示例:

    WEB-INF/web.xml

path="/sample": 定义客户端请求服务器的URl,如:
http://localhost:8080/sample
docBase="/opt/" 定义war包所放在的路径
reloadable="true" 在不用重新启动tomcat时,可以自动加载。
swallowoutput="true": 针对system.out和system.err的日志将会重定向到应用日志中。。

应用的常见架构:

  • WEB-INF:是私有文件,不被别人访问的,主要 各个组件的组成关系等。
  • WegbApplicationName:该目录中,所有的静态文件,比如HTML和JSP文件,也是应用的根。
  • /WEB-INF/web.xml:包括了 web应用的部署描述符,针对应用指定的资源。
  • /WEB-INF/classes:包括了所有类文件,还有第三方的类等。
  • /WEB-INF/lib: 存放着JSP编译需要 的JAR文件。
  • web.xml:包含所有的动态文件(servlets和JSP)还有一些比如信息相关的文件,比如会话超时时间和数据库的定义 。

归档文件:

  • 一般开发给的是一个归档好的文件,该文件包括了模块的类,静态文件,目录和部署描述符文件。一般用的JAR工具创建的。
  • EJBs常被打包成.jar文件
  • WEB应用打包成.war文件
  • 资源适配器打包成.rar文件
  • 企业应用被打包成.ear文件,也可以包括EJBs,WEB应用,和资源适配器
  • WEB服务一般打包成.ear文件或者war文件。

在部署应用,配置时的常见问题及解决方法

问题1:

在部署后, 别人访问的仍是老内容,就是新内容好像没有生效
解决步骤:
查看新文件是否在部署的目录里面
检查catalina.out日志文件,查看WAR文件是有没有部署
假如前两步检查没有问题,但问题仍然存在的话,那就停止服务器,清除work/Catalina/localhost/temp文件夹中的内容。
cd /opt/apache-tomcat-8.0.12/temp/ rm -rf ../temp/
cd /opt/apache-tomcat-8.0.12/work/Catalina/localhost/ rm -rf ../localhost/

问题2:

在部署后,有些节点显示是新内容,但有些节点显示的是老内容

  1. 查看新文件是否在部署的目录里面
  2. 检查catalina.out日志文件,查看WAR文件是有没有部署
    假如前两步检查没有问题,但问题仍然存在的话,那就停止服务器,清除work/Catalina/localhost/temp文件夹中的内容。
    cd /opt/apache-tomcat-8.0.12/temp/ rm -rf ../temp/
    cd /opt/apache-tomcat-8.0.12/work/Catalina/localhost/ rm -rf ../localhost/
  3. 重新动服务器,并检查两个服务器的数据库是否一致状态。
问题3:

在改变server.xml文件后,tomcat实例无法启动
(1)进入到bin目录下
(2)运行configtst.sh,它会检查配置文件的。
org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:435)
Caused by: java.net.BindException: Address already in use
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:383)
at java.net.ServerSocket.bind(ServerSocket.java:328)
at java.net.ServerSocket.(ServerSocket.java:194)

上面的显示信息意味着已经运行了,那就停止服务器清除temp文件夹下的内容。然后重新启动服务器。