Tomcat下为每个Web应用配置不同的访问端口
要完成这个目录必须对conf/Server.xml文件进行配置
设现在我们有两个应用app1和app2,客户端期望的访问方式是:
App1 -> :8081/
App2 -> :8082/
这样省去了在主机名后面添加ContextPath的麻烦,相信客户更愿意这样使用。
实现步骤:
1. 找到conf/server.xml中的service配置节,复制这个service元素,紧跟在后面粘贴一次。如下:
<Servicename="Catalina.app1">
<Connector port="8081"protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"/>
<EngineCOLOR: red">Catalina.app1" defaultHost="localhost">
<RealmclassName="org.apache.catalina.realm.LockOutRealm">
<RealmclassName="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<HostCOLOR: red">localhost" appBase="webapps"
unpackWARs="true"autoDeploy="true">
<ValveclassName="org.apache.catalina.valves.AccessLogValve"directory="logs"
prefix="localhost_access_log."suffix=".txt"
pattern="%h %l %u %t"%r" %s %b" />
<Context path="/"docBase="app1" />
</Host>
</Engine>
</Service>
说明:红色加粗是特别要注意的部分。
1.1、<Servicename="Catalina.app1">,这里设置Service的名字为Catalina.app1,是随便取的名字不能和当前这个文件已有的Service元素同名。
1.2、<Connectorport="8081"…/,这里设置当前服务的Http Connector监听的端口为8081,注意不能和已有的其它Service的Connector的监听端口相同。
1.3、<Enginename="Catalina.app1"defaultHost="localhost">,这里设置Engine的名字为Catalina.app1也不是必须的,你可以换其它名字,但是还是不要和其它Engine重名就行了。defaultHost这个属性指出当前Engine根据主机头在它的子元素中找不到匹配名称的虚拟主机时所要访问的缺省虚拟主机。我们这儿Engine里面只有一个虚拟主机因此缺省主机也是它。当然defaultHost属性指定的主机名称在它的子元素里面是必须存在的。
1.4、<HostCOLOR: red">localhost" appBase="webapps" />,name属性指定虚拟主机的名字,一般是Internet域名,Engine会根据HTTP协议请求里面的主机头Host的值来匹配这里的虚拟主机名,如果匹配就交给该虚拟主机处理。比如,如果你的客户端访问地址是::8090/index.jsp,那么这里虚拟主机名字就应该为qrkx.uten.cn,当然请求中的端口号是前面连接器最先使用的。appBase属性指出虚拟主机上的Web应用是部署在哪里的。一个虚拟主机上可以同时部署多个Web应用,那么appBase就是指出这些应用的存放位置,这里可以使带盘符的绝对路径,像d:/webapps.也可以是相对路径。这个相对路径的起点就是Tomcat的安装目录。这里appBase属性我们设置为webapps表示当前虚拟主机的Web应用存放目录为tomcat安装目录下的webapps目录里面。
1.5、<Context path="/"docBase="app1" />,这个是最为关键的部分了。一个虚拟主机里面可以部署多个Web应用,而每个Web应用就是一个Context,因此这里可以配置多个Context元素,每个表示一个Web应用程序上下文。Path属性表示访问这个Web应用的路径,”/”表示这个Context是当前虚拟主机的缺省Web应用程序,也可以为空字符串“”,这样改Context可以用处理所有不匹配任何其它Context的 Context path请求。我们访问的时候就不用输入Web应用的名称了,可以如下访问:80801/,如果你像这样配置:<Contextpath="/app1" docBase="app1" />,那么你就要这样访问::80801/app1/。总结一下意思就是在一个虚拟主机下只有一个Web应用是采用根路径的,其它必须要指定特别的访问路径【根路径只有一个】,比如path="/app1"、path="/app2"、path="/app3"等。
docBase="app1"这个属性指出当前Web应用程序的存放路径,可以是相对路径也可以是绝对路径,绝对路径就是带盘符的路径,比如:d:/app1,相对路径就是以Host元素的appBase属性指定的路径为起点的路径。这里docBase="app1"表示我们的当前Web应用程序是在Tomcat安装目下的webapps目录下的app1目录。