1、server.xml讲解

位于conf下

<?xml version="1.0" encoding="UTF-8"?>

  <!-- Server代表一个 Tomcat 实例。可以包含一个或多个 Services,其中每个Service都有自己的Engines和Connectors。
port="8005"指定一个端口,这个端口负责监听关闭tomcat的请求
-->
<Server port="8005" shutdown="SHUTDOWN">
<!-- 监听器 -->
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<!-- 全局命名资源,定义了UserDatabase的一个JNDI(java命名和目录接口),通过pathname的文件得到一个用户授权的内存数据库 -->
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<!-- Service它包含一个<Engine>元素,以及一个或多个<Connector>,这些Connector元素共享用同一个Engine元素 -->
<Service name="Catalina">
<!--
每个Service可以有一个或多个连接器<Connector>元素,
第一个Connector元素定义了一个HTTP Connector,它通过8080端口接收HTTP请求;第二个Connector元素定
义了一个JD Connector,它通过8009端口接收由其它服务器转发过来的请求.
-->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<!-- 每个Service只能有一个<Engine>元素 -->
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<!-- 默认host配置,有几个域名就配置几个Host,但是这种只能是同一个端口号 -->
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
  <!-- Tomcat的访问日志,默认可以关闭掉它,它会在logs文件里生成localhost_access_log的访问日志 -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
<Host name="www.lhx.com" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/myweb1" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="hzg_access_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
</Engine>
</Service>
</Server>

访问http://localhost:8080/aaahttp://www.lhx.com/8080/aaa效果一致。

1.1、Host节点下的appBase与Context下的docBase

appBase目录表示

  这个目录下面的子目录将自动被部署为应用。 
  这个目录下面的.war文件将被自动解压缩并部署为应用

docBase只是指向了你某个应用的目录,这个可以和appBase没有任何关系。

总结: 
  如果你想自己指定路径,那么应该在docBase里面 
  如果你想简单,那么直接把他们复制到appBase下面就行了

如果重复设置,也就是2个指向了一个目录,也能运行,但你的应用下面的每个子目录,其实是被部署为单独的应用的。 
如你的应用为myApp, 放在了 d:\project\myApp 里面有2个子目录 d:\project\myApp\images 、d:\project\myApp\js

你可以通过 
1 设置 appBase 指向 d:\project 来让系统自动部署 
2 你可以手工指定docBase到 d:\project\myApp 
3 如果你指定了 appBase到 d:\project\myApp 那么 d:\project\myApp\images这个将不再是普通的子目录,而是一个单独的虚拟目录,或者叫应用了。因为其被自动部署 
d:\project\myApp\js 也一样的后果

<!--appBase 下面加了一行docBase,把路径配置到docBase中,把appBase为空,就OK了-->

  <Host name="localhost"  appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false"> <Context path="test1" docBase="D:\\JavaWebTest" debug="0" reloadable="true" crossContext="true"/>

访问:http//localhost:8080/test1/即可

1.2、不同于Catalina/localhost/xxx.xml

<?xml version="1.0" encoding="UTF-8"?>
<Context docBase = "D:\\JavaWebTest\xxx" path="xxx"></Context>

在tomcat的conf/Catalina/localhost目录下创建一个xxx.xml文件

启动tomcat,然后访问:http//localhost:8080/xxx  即可

path:指访问路径

docBase:指项目路径

当然也可指向

<?xml version="1.0" encoding="UTF-8"?>
<Context docBase = "D:\\JavaWebTest\" ></Context>

直接访问 :http//localhost:8080 即可

尽管也允许直接在server.xml文件中配置<Context>元素,但不提倡采用这种方式。

问题一、Tomcat 错误“inside the host appBase has been specified, and will be ignored”

错误信息:

警告: A docBase D:/Tomcat/webapps/myApp inside the host appBase has been specified, and will be ignored

错误原因:
  假设要部署工程 "myApp", 放到了 ${catalina.home}/webapps 下。(这相当于隐性的定义了一个 docBase ,指向" ${catalina.home}/webapps/myApp " )。

  同时在 /conf/Catalina/localhost 下建立了配置文件 myApp.xml ,在其中定义了 docBase , 目标指向 " ${catalina.home}/webapps/myApp " 。

  这样,在 Tomcat 启动的时候,先找到了 myApp.xml 配置文件中定义的 docBase, 然后 Tomcat 自动检测 ${catalina.home}/webapps 下是否存放了合法的工程,并自动加载(根据配置文件的设置)。这样,Tomcat 又找到了一个相同的 docBase, 所以输出了错误信息。

解决办法:
  将 myApp 工程 从 ${catalina.home}/webapps 目录移出, 然后 修改 配置文件 myApp.xml 指向该目录。

2、tomcat-users.xml:配置Tomcat的server的manager信息

<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<role rolename="manager-gui"/>
<user username="manager" password="manager" roles="manager-gui"/>
</tomcat-users>

df

最新文章

  1. Android性能优化典范第二季
  2. How Google TestsSoftware - Part Three
  3. 【STL】-priority_queue的用法
  4. SDUST作业10 Problem J: 提取缩略词
  5. Scrapy源码学习(一)
  6. PHP中$_SERVER获取当前页面的完整URL地址
  7. NodeJS学习:爬虫小探补完计划
  8. 我泡在GitHub上的177天 by Ryan Seys
  9. o2o
  10. C#复制数据库,将数据库数据转到还有一个数据库
  11. JTextAreaDemo
  12. 测者的测试技术手册:分清Java的Override和Overload
  13. Express+MongoDB开发web后台接口MongoDB
  14. Servlet 使用ServletContext共享数据,读取web.xml配置
  15. 英语发音规则---E字母常见的发音组合有哪些
  16. iPhone开发--正则表达式获取字符串中的内容
  17. Martin Fowler谈微服务的优缺点
  18. JAVA的get post 区别
  19. 国内首款 FPGA 云服务器,性能是通用 CPU 服务器 30 倍以上
  20. 配置ftp服务器只能上传不能进行其他操作

热门文章

  1. 网络编程实现简单的ssh
  2. LNMP安装与配置之Nginx
  3. PHP把数组按指定的个数分隔
  4. 下一代容器技术podman简介
  5. PHP常见设计模式
  6. codeforces#562 Div2 C---Increasing by modulo【二分】
  7. PHP mysqli_multi_query() 函数
  8. Leetcode部分题目整理(Javascript)
  9. 洛谷P2796 Facer的程序
  10. EnumHelper.cs