http://localhost:8081/App2->http://localhost:8082/這樣省去了在主機名后面添加ContextPath的麻煩,相信客戶更愿意這樣使用。實現步驟:1.找到conf/server.xml中的service配置節,復制這個servic" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Tomcat下為每個Web應用配置不同的訪問端口

系統 3061 0

Tomcat下為每個Web應用配置不同的訪問端口

要完成這個目錄必須對conf/Server.xml文件進行配置

??????????????????????????? 設現在我們有兩個應用app1和app2,客戶端期望的訪問方式是:

??????????????????????????? App1???????? ->????? http://localhost:8081/

??????????????????????????? App2???????? ->????? http://localhost:8082/

??????????????????????????? 這樣省去了在主機名后面添加ContextPath的麻煩,相信客戶更愿意這樣使用。

??????????????????????????? 實現步驟:

1.????????找到conf/server.xml中的service配置節,復制這個service元素,緊跟在后面粘貼一次。如下:

<Servicename=" Catalina.app1 ">

??? <Connector port=" 8081 "protocol="HTTP/1.1"

??????????????connectionTimeout="20000"

?????????????? redirectPort="8443"/>

??? <Engine name=" Catalina.app1 " defaultHost=" localhost ">

????? <RealmclassName="org.apache.catalina.realm.LockOutRealm">???????

??????? <RealmclassName="org.apache.catalina.realm.UserDatabaseRealm"

?????????????? resourceName="UserDatabase"/>

????? </Realm>

????? <Host name=" 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&quot;%r&quot; %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、<Host name=" localhost "? appBase=" webapps " />,name屬性指定虛擬主機的名字,一般是Internet域名,Engine會根據HTTP協議請求里面的主機頭Host的值來匹配這里的虛擬主機名,如果匹配就交給該虛擬主機處理。比如,如果你的客戶端訪問地址是:http://qrkx.uten.cn: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 應用的名稱了,可以如下訪問 http://localhost:80801/ ,如果你像這樣配置: <Contextpath="/app1" docBase="app1" />, 那么你就要這樣訪問: http://localhost:80801/app1/ 。總結一下意思就是在一個虛擬主機下只有一個 Web 應用是采用根路徑的,其它必須要指定特別的訪問路徑【根路徑只有一個】,比如 path="/app1" path="/app2" path="/app3" 等。

???????? docBase="app1" 這個屬性指出當前 Web 應用程序的存放路徑,可以是相對路徑也可以是絕對路徑,絕對路徑就是帶盤符的路徑 , 比如: d:/app1, 相對路徑就是以 Host 元素的 appBase 屬性指定的路徑為起點的路徑。這里 docBase="app1" 表示我們的當前 Web 應用程序是在 Tomcat 安裝目下的 webapps 目錄下的 app1 目錄。

????????

?

2、重復步驟一再次創建一個Service

<Servicename=" Catalina.app2 ">

??? <Connector port=" 8082 "protocol="HTTP/1.1"

??????????????connectionTimeout="20000"

?????????????? redirectPort="8443"/>

??? <Engine name=" Catalina.app2 " defaultHost=" localhost ">

????? <RealmclassName="org.apache.catalina.realm.LockOutRealm">???????

??????? <RealmclassName="org.apache.catalina.realm.UserDatabaseRealm"

?????????????? resourceName="UserDatabase"/>

????? </Realm>

????? <Host name=" 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&quot;%r&quot; %s %b" />

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

????? </Host>???????

??? </Engine>

?</Service>

?

3、啟動Tomcat,觀察日志輸出

?

信息: Deploying webapplication directory E:\WorkSpace\JavaWorkspace\Tomcat 7.0\webapps\app1

2012-6-414:03:36 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info

信息: Parsingconfiguration file [struts-default.xml]

2012-6-414:03:37 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info

信息: Parsingconfiguration file [struts-plugin.xml]

2012-6-414:03:37 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info

信息: Parsingconfiguration file [struts.xml]

2012-6-414:03:38 org.apache.catalina.startup.HostConfig deployDirectory

信息: Deploying webapplication directory E:\WorkSpace\JavaWorkspace\Tomcat 7.0\webapps\app2

2012-6-414:03:39 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info

信息: Parsingconfiguration file [struts-default.xml]

2012-6-414:03:39 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info

信息: Parsingconfiguration file [struts-plugin.xml]

2012-6-414:03:39 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info

信息: Parsingconfiguration file [struts.xml]

?

4、通過瀏覽器訪問:

???????? http://localhost:80801/index.jsp

???????? 我們通過觀察瀏覽器發出的請求頭如下:

Request URL: http://localhost:8081/index.jsp

Request Method: GET

Status Code: 200 OK

Request Headers view source

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3

Accept-Encoding: gzip,deflate,sdch

Accept-Language: zh-CN,zh;q=0.8

Cache-Control: max-age=0

Connection: keep-alive

Cookie: JSESSIONID=CADAAC6E5B9366F4590E50B889BE58BF

Host: localhost:8081

Pragma: no-cache

User-Agent: Mozilla/5.0 (Windows NT 5.1)AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.168 Safari/535.19 QIHU360EE

Response Headers view source

Content-Length: 1235

Content-Type: text/html;charset=UTF-8

Date: Mon, 04 Jun 2012 06:24:19 GMT

Server: Apache-Coyote/1.1

Set-Cookie: JSESSIONID=BA86EAD5BBDF7BB51343377C88588AB8;Path=/; HttpOnly

?

???????? 請注意紅色的部分就是主機頭,一般是Internet域名。

?

???????? http:// localhost:80802/ognl.jsp

???????? 這里和上面做法一樣,主機頭是: Host: localhost:8082

5、觀察Tomcat的conf目錄:

???????? Tomcat下為每個Web應用配置不同的訪問端口

???????? 你發現了什么?????????????????????????????????????

???????? Catalina.app1 Catalina.app2 是我們分別配置的兩個 Engine 的名字。打開這兩個目錄,我們發現:

???????? Tomcat下為每個Web應用配置不同的訪問端口

???????? 里面都有個 localhost ,其實這是我們上面配置的虛擬主機名稱,如果你配置的虛擬主機名稱是 qrkx.uten.cn ,那么這里目錄的名稱就是 qrkx.uten.cn 了。

?

???????? 注意:如果你的 Webapps 目錄下有 ROOT 目錄請將其更名或刪除,否則訪問地址 :http://localhost:8081 http://localhost:8082 是會出問題的。官方文檔有這樣的說明: If the contextPath is a zero length string, the base name isROOT

?

?

使用主機頭示范,由于測試環境沒有DNS服務器,搭建太麻煩。我們通過修改本機的如下文件模擬實現:

C:\WINDOWS\system32\drivers\etc\HOSTS,該文件作用:

host是一個沒有擴展名的系統文件,可以用記事本等工具打開,其作用就是將一些常用的網址域名與其對應的IP地址建立一個關聯“數據庫”,當用戶在瀏覽器中輸入一個需要登錄的網址時,系統會首先自動從Hosts文件中尋找對應的IP地址,一旦找到,系統會立即打開對應網頁,如果沒有找到,則系統再會將網址提交DNS域名解析服務器進行IP地址的解析。

我們在文件中添加如下:

127.0.0.1 localhost

127.0.0.1 app1.family.cn

127.0.0.1 app2.family.cn

然后修改server.xml文件中虛擬主機的主機頭分別為:

<Servicename="Catalina.app1">

???<Connector port="8081" protocol="HTTP/1.1"

??????????????connectionTimeout="20000"

?????????????? redirectPort="8443"/>

???<Engine name="Catalina.app1" defaultHost=" app1.family.cn ">

????? <Realm className="org.apache.catalina.realm.LockOutRealm">???????

??????? <RealmclassName="org.apache.catalina.realm.UserDatabaseRealm"

??????????????resourceName="UserDatabase"/>

????? </Realm>

????? <Host name=" app1.family.cn "? 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&quot;%r&quot; %s %b" />

?????????????????? <Contextpath="" docBase="app1" />

????? </Host>???????

???</Engine>

?</Service>

?<Service name="Catalina.app2">

???<Connector port="8082" protocol="HTTP/1.1"

??????????????connectionTimeout="20000"

?????????????? redirectPort="8443"/>

???<Engine name="Catalina.app2" defaultHost=" app2.family.cn ">

????? <RealmclassName="org.apache.catalina.realm.LockOutRealm">???????

??????? <RealmclassName="org.apache.catalina.realm.UserDatabaseRealm"

??????????????resourceName="UserDatabase"/>

????? </Realm>

????? <Host name=" app2.family.cn " ?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&quot;%r&quot; %s %b" />

?????????????????? <Contextpath="" docBase="app2" />

????? </Host>???????

???</Engine>

?</Service>

?

重新啟動Tomcat,在瀏覽器地址欄訪問如下地址:

http://app1.family.cn:80801/inde.jsp

http://app1.family.cn:80802/ognl.jsp

成功!!!!!!!!!

?

觀察Tomcat下的conf目錄:

Tomcat下為每個Web應用配置不同的訪問端口

?

不難發現,在兩個Engine的名稱的目錄下各自生成了虛擬主機名稱的目錄。

Tomcat下為每個Web應用配置不同的訪問端口


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 精品久久天干天天天按摩 | 性免费网站 | 亚洲免费成人 | 717影院理论午夜伦八戒 | 国产精品柳州莫菁身材四 | 亚洲欧美日韩国产一区二区精品 | 超级乱淫视频aⅴ播放视频 超级乱淫视频播放日韩 | 一级欧美一级日韩毛片99 | 91精品久久国产青草 | 色18美女社区| jizz中国视频| 久久天天躁夜夜躁狠狠躁2020 | 亚洲欧美日韩中文字幕在线一区 | 欧美激情精品久久久久久久九九九 | 看全色黄大色大片免费久黄久 | 四虎影视1304t | 成人嫩草研究院网站进 | 久久免费网 | 久久精品一区二区三区资源网 | 日韩欧美中文字幕在线观看 | 五月情婷婷 | 天天草综合 | 久久国产亚洲欧美日韩精品 | 免费a一毛片| 亚洲国产精品久久卡一 | 九九啪| 日韩中文字幕在线 | 亚洲国产精品a在线 | 97精品久久天干天天蜜 | 鲁丝丝国产一区二区 | 日韩www | 欧美一级网 | 久久99热久久精品91 | 国产精品一区伦免视频播放 | 国产精品嘿咻嘿咻在线播放 | 天天曰天天爽 | 天天成人 | 特级无码a级毛片特黄 | 欧美同房免姿势108费视频 | 亚洲精品久久久久久动漫剧情 | 四虎国产精品永久在线网址 |