`
schy_hqh
  • 浏览: 555778 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Tomcat入门(一)

 
阅读更多

 WEB站点虚拟目录

 

server.xml

给server.xml加中文注释导致tomcat无法启动

1.配置文件改错了

2.加了中文注释(虽然xml头部声明编码为utf-8),但是在添加中文注释的时候,编辑器如editplus使用的ANSI编码进行保存的,导致tomcat解析server.xml编码不一致!

<Host name="localhost" appBase="webapps"/> 

将webapps指定为WEB站点的基准目录

其下的ROOT目录将默认作为根目录(如果有)

 

本地文件系统的某个目录映射为一个WEB站点的虚拟目录


path="" 表示设置WEB站点的根目录
docBase 虚拟目录所映射的本地文件系统目录

可以使用绝对路径或者相对路径(相对于host元素的appBase所指定的目录)

<Context path="" docBase=""/>

 


设置WEB站点的虚拟子目录

1.在server.xml文件中的<host>中配置<Context>元素
如,<Context path="/myApp" docBase="/demo"/>

 

2.特殊目录下的XML文件中包含<Context>元素
如,E:\soft\apache-tomcat-6.0.39\conf\Catalina\localhost\manager.xml文件中包含的<Context>元素:
<Context antiResourceLocking="false" privileged="true" useHttpOnly="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
</Context>

 

3.<Host>元素的appBase属性所指向的目录("webapps"),所包含的目录中包含WEB-INF/web.xml的那些子目录
如,WEB-INF/web.xml在 webapps/demo/目录下,则以"demo"作为该WEB站点的虚拟子目录

 

4.<Host>元素的appBase属性所设置的基准目录下的war文件,将以该war文件的名称作为WEB站点的虚拟目录
如,webapps/demo.war ,则该WEB站点的虚拟目录为"demo"


使用<Context>为1个文件系统目录设置多个虚拟目录
如webapps/demo.war
可以通过<Context>设置若干个虚拟目录
<Context path="path1" docBase="/demo.war"/>
<Context path="path2" docBase="/demo.war"/>
<Context path="path3" docBase="/demo.war"/>

 

打war包命令

E:\soft\apache-tomcat-6.0.39\webapps> jar  -cvf  new.war  -C  demo  .

将webapps目录下的demo目录下的所有文件打包为war包,该war包的名称为new.war

 

基于主机名的WEB站点虚拟主机

 

<host/> 表示1个WEB站点

<Engine/>内部可以配置多个<host/>来指定多个虚拟主机

 

 

	<!-- 默认主机为name="localhost"的Host -->
    <Engine name="Catalina" defaultHost="localhost">

      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>

	   <!-- 默认主机,该主机的根目录通过appBase设置为"webapps"(相对路径:相对于tomcat目录) -->
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
      </Host>

	  <!-- 虚拟主机:Virtual Machine A -->
	  <Host name="www.server.com"  appBase="virtualMachineA"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
	<Context path="" docBase="demo"/>
      </Host>
    </Engine>

 

上面的配置,通过<Host>设置了一个新的虚拟主机

name=www.server.com指定了该虚拟主机的名称

[修改hosts文件:127.0.0.1   www.server.com]

 

appBase="VirtualMachine" 指定该虚拟主机的根目录为相对与Tomcat目录下名称为VirtualMachine的目录

 

接着,在<Host>内部,通过<Context>设置该WEB站点的根目录

path="" 表示设置WEB站点的根目录,然后通过docBase="demo"指定根目录为"demo"

这里的"demo"也是一个相对路径的写法,它是相对于appBase属性所指向的目录

即,docBase="demo" 等效于 docBase="apache-tomcat-6.0.39\virtualMachineA\demo"

【也可以使用Tomcat的默认机制,在WEB站点下直接创建ROOT目录,该目录将自动被解析为根目录,前提是没有另外设置path=""】

 

本例中的目录结构大概如下: 

apache-Tomcat

webapps

ROOT

oa.war

VirtualMachine

ROOT

index.html

demo

index.html

 

当访问http://localhost:8080/

将打开Tomcat默认的主页,也就是webapps下的ROOT目录中的index.html

 

当访问http://www.server.com:8080/

将打开VirtualMachine下的demo目录下的index.html

 

 

<!-- 通过1个Service标签,封装多个Connector与1个Engine,这样,Connector就有了对应的Engine匹配 -->
<Service name="Catalina">
	<!-- Connector负责不同端口的监听,1个Connector监听1个端口号 -->
	<Connector port="8080"/> 
	...
	<Connector port="8009"/>

	<!-- 每个Connector都需要有1个Engine进行处理 -->
	<Engine name="Catalina" defaultHost="localhost">
		<!-- 1个Engine下面可以配置多个Host -->
		<Host name="localhost"/>
		...
		<Host name="www.server.com">
			<!-- 1个Host中可以配置多个Context -->
			<Context/>
			<Context/>
			<Context path="" docBase="demo"/>
		</Host>
	</Engine>
</Service>

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics