• 003-tomcat配置文件-server、tomcat-users


    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:projectmyApp 里面有2个子目录 d:projectmyAppimages 、d:projectmyAppjs

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

    <!--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:\JavaWebTestxxx" 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 

  • 相关阅读:
    这个是我得标题:1548313580
    这个是我得标题:1548310540
    这个是我得标题:1548310330
    这个是我得标题:1548310254
    这个是我得标题:1548241921
    这个是我得标题:1548241799
    这个是我得标题:1548241731
    这个是我得标题:1548241478
    jsp和servlet------jsp
    jsp和servlet-----xml
  • 原文地址:https://www.cnblogs.com/bjlhx/p/10822705.html
Copyright © 2020-2023  润新知