1. Tomcatt各配置文件功能详解:

  • catalina.properties: 该文件包括服务器共享定义,共享加载器,和JARs,服务器在启动时会扫描此文件。

  • server.xml:此文件包含重要信息,如IP地址,端口,虚拟主机和上下文路径等。

  • tomcat-user.xml: 往往认证,授权,和角色定义在该文件中进行定义,还经常存储数据库用户名、密码、角色和管理容器的安全。

  • logging.properties:定义tomcat日志的属性信息。

  • web.xml:所有web应用加载到Tomcat实例的默认值,在tomcat启动时,假如应用有它自己的部署描述符,那它自己的定义优先web.xml中的定义。

  • context.xml: 该文件的内容将会加载到第个应用中,比如配置持久连接的参数,连接追踪等。


2. Context 路径:

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

用来配置.war文件的URL映射。


(1). Context路径主要带来两个好处:

  • 可以减少服务器的负载,当服务器收到一个请深圳市时,它会检查server.xml文件中的定义URL路径,假如找到的话,使用找到的路径进行服务的响应,否则服务器将会扫描所有的WAR文件,因此,它可以减少CPU的消耗。

  • 给了我们可以自已定义的自由,如我们可以针对不同应用定制logging,appBase,DB connection等。


(2) 使用context path有两种方式:

  • Tomcat WEB Application Manager(具体不介绍)

  • 在Server.xml使用命令行的配置

  

   配置示例:

    <Context path="/sample" docBase="/opt/" reloadable="true" swallowOutput="true">

   <WatchedResource>WEB-INF/web.xml</WatchedResource>

   <Logger className="org.apache.catalina.logger.FileLogger" prefix="www-sample-com-log." suffix=".txt" timestamp="true"/>

   </Context>

   path="/sample": 定义客户端请求服务器的URl,如:

   http://localhost:8080/sample

  docBase="/opt/" 定义war包所放在的路径

  reloadable="true" 在不用重新启动tomcat时,可以自动加载。

  swallowoutput="true": 针对system.out和system.err的日志将会重定向到应用日志中。。


3. 应用的常见架构

  • WEB-INF:是私有文件,不被别人访问的,主要 各个组件的组成关系等。

  • WegbApplicationName:该目录中,所有的静态文件,比如HTML和JSP文件,也是应用的根。

  • /WEB-INF/web.xml:包括了 web应用的部署描述符,针对应用指定的资源。

  • /WEB-INF/classes:包括了所有类文件,还有第三方的类等。

  • /WEB-INF/lib: 存放着JSP编译需要 的JAR文件。

  • web.xml:包含所有的动态文件(servlets和JSP)还有一些比如信息相关的文件,比如会话超时时间和数据库的定义 。


4. 归档文件:一般开发给的是一个归档好的文件,该文件包括了模块的类,静态文件,目录和部署描述符文件。一般用的JAR工具创建的。

  • EJBs常被打包成.jar文件

  • WEB应用打包成.war文件

  • 资源适配器打包成.rar文件

  • 企业应用被打包成.ear文件,也可以包括EJBs,WEB应用,和资源适配器

  • WEB服务一般打包成.ear文件或者war文件。


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

(1)问题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)问题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实例无法启动

    解决步骤:

  • 进入到bin目录下

  • 运行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.<init>(ServerSocket.java:194)

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