茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1664639 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
IMG_00005.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

爪哇咖啡屋 : [轉貼]如何讓tomcat輸入http://localhost直接進入我指定項目的文件夾裡面?

發表者 討論內容
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15766
[轉貼]如何讓tomcat輸入http://localhost直接進入我指定項目的文件夾裡面?
如何讓tomcat輸入http://localhost直接進入我指定項目的文件夾裡面?

昨天把端口號的問題解決了,今天又有一個問題,就是要讓輸入ip後直接進入到網站項目裡面,而不是加個文件夾。找了半天,改了半天,搜索了半天都沒有頭緒。原來方法很簡單,昨天就找到了相關資料的,只是 把/弄成了\就不行了,網上的很多資料都沒有實際應用的(只是說明項目名稱而沒有給出了例子來)。就這麼個小問題,我改了N次,重啟了N次tomcat,搜索了N個關鍵字,最後還是到百度知道那裡描述了下問題,又更加接近了答案,最後通過提示和在知道的相關問題裡面得到了啟發,再搜索tomcat appBase才找到真正有用的信息。
<Context path="" docBase="E:\Tomcat 5.0\webapps\webroot" debug="0" privileged="true"/ >

<Context path="" docBase="ROOT" debug="0"/>
<Context path="/test" docBase="c:/jsp" debug="0" reloadable="true"/>


可能是你的conf/server.xml中添加了這樣一句
<Context path="/" docBase="你說的那個項目路徑" />

解決辦法是把path="/"改成path="/aaa",
重啟tomcat,http://localhost:8080/aaa就可以打開你那個項目
http://localhost:8080就可以打開默認的主頁

以下我在是百度知道的提問和問題補充,希望對大家有用:

如何讓tomcat輸入http://localhost直接進入我指定項目的文件夾裡面?而不在進入到tomcat歡迎界面那裡。註:端口我已經改為80了。就是要把我webapps下面的項目test成為輸入本機ip地址就可以訪問到的(要綁定公司域名)。

問題補充:
這個tomcat下面還有其它項目,我改了兩個端口80和9000,現在都可以正常顯示
我希望對外網綁定公司域名的用80端口,而內部的用9000端口。
也就是希望輸入http://localhost直接到對外的test目錄下
輸入http://localhost:9000可以到root下面,即顯示tomcat的歡迎界面,
輸入http://localhost:9000/othertest進入其它項目
配置server.xml的我修改了很多次都不行,希望能給出具體的配置
終於找到辦法了,原來是我context的路徑弄錯了路徑間隔要用\不能用/的!
以下是修改的地方,給其它有同樣問題的人參考吧
<Context path="" debug="0" docBase="E:\Tomcat 5.5\webapps\newplantest" reloadable="true" privileged="true">
</Context>
<Context path="/root" debug="0" docBase="E:\Tomcat 5.5\webapps\ROOT" reloadable="true" privileged="true">
</Context>
</Host>


註:其實這裡實現的還不是我最初想的輸入http://localhost:9000可以到root下面,但這樣已經達到我的目的就ok了,另外,如果不設置/root的話是進不了ROOT下面的,其它放在webapps下面的項目不用配置,直接加項目名就可以了。

註:這樣配置還有一個問題是第二天才發現的--tomcat管理首頁那裡很多連接都進不去了,一看下面的路徑都多加了個root,把前面的root去掉就可以了,馬上想到修改ROOT下面的index.jsp的鏈接,根據經驗,訪問上級目錄要在在鏈接前面加個../ 加完以後(共有6處)保存刷新,鬱悶的是沒有任何反應,重啟tomcat再次打開新頁面訪問,一樣沒有任何變化,難道是緩存的原因?馬上清除ie文件和歷史記錄,再次刷新還是一樣,換個ip(這時已經映射到外網的ip了)也還是一樣,這下有點明白是沒有編譯導致的了,到work目錄下查找.class文件沒有找到,於是呼有搜索了一陣,忙呼了一陣。說是刪除class文件就會自動重新編譯,但就是沒有找到class文件,後來看到 \webapps\ROOT\WEB-INF\lib下面竟然只有一個jar包(catalina-root.jar)解壓一看,裡面確實有一個index_jsp.class 可以確定是沒有重新編譯的問題了。但要自己重新編譯,壓縮成jar包也太麻煩了吧,而且刪除了那個jar包 直接報500的錯誤信息,根本不會自動生成。後來直接打開裡面的class文件一看基本上跟頁面一樣,有些亂碼,修改了下保存,再用WinRAR解開到那個目錄下把修改後的拖過來覆蓋,重啟tomcat刷新,報了一堆的錯。這下更加明白了class文件是不能直接編輯的。那麼總要生成一個新的來吧,如何生成?在root下生成不了了,稍微一想放到網站的目錄下不就可以了嗎?於是把root下的index.jsp文件copy到自己目錄下,訪問自己目錄後面加上index.jsp成功顯示了修改過後的頁面。到對應的目錄下沒有找到編譯後的class,再次搜索,仍然無果。最後帶著嘗試的心理在work下面一個很深的目錄下找到了

Tomcat 5.5\work\Catalina\localhost\_\org\apache\jsp 這個應該是臨時編譯的了。打開class文件一看鏈接內容正是修改過後的,於是copy這個文件用上面的方法直接覆蓋原來的。刷新頁面,點擊鏈接,oye,終於成功了!

原文出處:如何让tomcat输入http://localhost直接进入我指定项目的文件夹里面? _ 流风,飘然的风 胸有激雷心如平湖
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15766
[分享]冷日的範例
冷日這裡提供一個可以用的範例:
<Context path="" docBase="OOOXXX" workDir="/webapps/OOOXXX/work"
				 debug="0" crosscontext="true" reloadable="true">
</Context>
<Context path="/OOOXXX" docBase="OOOXXX" workDir="/webapps/OOOXXX/work"
				 debug="0" crosscontext="true" reloadable="true">
</Context>
<Context path="/" docBase="OOOXXX" workDir="/webapps/OOOXXX/work"
				 debug="0" crosscontext="true" reloadable="true">
</Context>
 </Host>


由上面可以看出:
如果人家連結 http://localhost:8080/ 的話, Context path="/" 會被呼叫到!
如果人家連結 http://localhost:8080 的話, Context path="" 會被呼叫到!
如果人家連結 http://localhost:8080/OOOXXX的話, Context path="/OOOXXX" 會被呼叫到!

而所有的 docBase ,都是一樣低 docBase="OOOXXX" !
而且, workDir 也都是一樣低 workDir="/webapps/OOOXXX/work" !
也就是說,不管 Context 是哪一個被呼叫到,全部都會指向同一個 webapp !
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15766
[分享]非相對路徑的 docBase 與 workDir !
再順便附註一下,如果網站不是放在Tomcat下的webapps裡的話,就要給絕對路徑了喔!

範例:
<Context path="" docBase="D:\FolderName\OOXX" workDir="D:\FolderName\OOXX\work" debug="0" crosscontext="true" reloadable="true">
</Context>
<Context path="/OOXX" docBase="D:\FolderName\OOXX" workDir="D:\FolderName\OOXX\work"
debug="0" crosscontext="true" reloadable="true">
</Context>
<Context path="/" docBase="D:\FolderName\OOXX" workDir="D:\FolderName\OOXX\work"
debug="0" crosscontext="true" reloadable="true">
</Context>


這個範例是Windows系統下的狀態,如果是在Unix Like結構下的話,就是給全路徑就對了!
EX:
<Context path="" docBase="/home/FolderName/OOXX" workDir="/home/FolderName/OOXX/work" debug="0" crosscontext="true" reloadable="true">
</Context>
其他略...
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15766
[分享]冷日在 Tomcat 7.70 上碰到的解法
冷日近期在 Tomcat 7(Apache Tomcat 7.0.70)上碰到了怪狀況!
就是前面的作法要馬不運行(就 Service 啟動不能),要馬就是啟動了以後一片空白!
冷日後來為了驗證我的 Application 是否 web.xml 有鎖定的疑慮(當然看過了沒有,但找不出原因只好用測的)就把 Application 資料夾內的所有東西都 Copy 到 ROOT 資料夾,這樣果然可以運行!!!
可是這樣就會造成『兩個 Application Instance 同時存在且不同步』的問題!
冷日當然不會允許這樣的狀況發生,後來在幾經思考後,決定以下作法:
1.把 ROOT 資料夾刪掉!
2.進入 manager 介面,去到 Deploy 區塊,進行「Deploy directory or WAR file located on server」的設定,設定如下:
Context Path (required):/
WAR or Directory URL:OOXX

3.把 Tomcat 重啟動

然後去 http://yourIP:8080/ 進行測試,搞定,打完收工!
前一個主題 | 下一個主題 | 頁首 | | |



Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|