多台tomcat主機(win2003平台)做負載均衡時,希望共享虛擬目錄,沒有采用同步各主機虛擬目錄的方式,所以只能在文件服務器上開辟共享目錄,將tomcat的context docpath指向它。tomcat主機上將共享目錄映射為本地磁盤,配置如下
<Context docBase="V:\shareDir" path="/app"/>
如果是script方式(通過startup.bat),可正常啟動,以服務方式啟動tomcat時,總是報“Document base does not exist or is not a readable directory”,修改tomcat啟動服務賬戶為administrator,問題依舊,懷疑服務模式下無法訪問網絡驅動器,將docbase指向共享目錄的UNC path即遠程訪問方式
<Context docBase="\\192.168.1.2\shareDir" path="/app"/>
新的錯誤出現了,報“java.io.IOException: 登錄失敗: 未知的用戶名或錯誤密碼”,說明tomcat是可以通過unc path來配置context的docbase,不過當前的這個賬戶訪問受限,奇怪的是,在當前桌面環境中是可以順利訪問\\192.168.1.2\shareDir這一路徑的。聯想到這組服務器都是在windows域控制環境下,以域用戶登錄系統並將服務啟動賬戶改為域用戶domain\administrator,問題解決。
總結:
(1) tomcat可以通過unc path來配置context的docbase
(2)因為映射的網絡驅動器,是在用戶的profile中配置, 服務模式下tomcat不能訪問到網絡驅動器(猜想,可能可以通過修改profile來訪問網絡驅動器)
(3)若遠程共享目錄只有域用戶才能訪問,在啟動tomcat服務時,必須指定以域用戶啟動服務
參考:
http://wiki.apache.org/tomcat/FAQ/Windows
http://blog.mattwoodward.com/accessing-a-network-drive-from-apache-and-tom?c=1