2010-09-23 55 views
0

我有一個生產環境和測試環境。生產有win2k3 + tomcat 6.0+和網絡驅動器映射到一個驅動器號以方便訪問(z:\應用程序而不是\ symba \ files \應用程序)。我的測試環境有windows xp(所有軟件都是相同的,包括servlet的源代碼),並且測試也具有與網絡驅動器相同的驅動器盤符映射。訪問網絡驅動器時Servlet拋出文件未找到excp

Tomcat在兩個系統中都使用相同的用戶標識運行,並且能夠通過Windows資源管理器在測試m/c和生產m/c中訪問該文件。

現在,如果嘗試訪問現有文件(通過Windows資源管理器可訪問),Windows XP中的servlet會發出文件未找到異常。生產中的servlet與測試env中的servlet相同,生產servlet在請求它時很高興地給出文件,並且不會拋出任何錯誤。

我看到一些使用驅動器盤符的帖子不是一個好主意,應該使用UNC路徑,而我還沒有嘗試過。我想知道爲什麼測試servlet無法獲取文件,而生產servlet工作正常。

非常感謝您的寶貴時間,並幫助 博

回答

2

你運行應用程序服務器作爲服務?只有在使用交互式程序而非服務時,驅動器盤符分配纔可靠。

幾年前,我試圖解決一個完全相同的問題,但最後,我放棄了,我用JCIFS來訪問這些文件。

+0

是正在運行的Tomcat作爲兩個ENVS的服務。你對交互式程序是對的,因爲我可以在win explorer中訪問該文件。不知道jcifs,但會嘗試查看它是否適合我的問題。 – BoCode 2010-09-23 14:12:20

+0

andcoz ....你是一個天才。是的,測試環境中的tomcat是作爲服務運行的,在生產環境中,它是作爲交互式服務運行的。我將測試tomcat服務器作爲交互式服務運行(基本上將其作爲服務移除並通過startup.bat運行),現在可以在網絡驅動器上訪問這些文件。 – BoCode 2010-09-24 04:24:04

0

如果您使用安全管理器運行Tomcat,則該Web應用程序代碼將根據默認配置唯一允許的文件訪問其部署目錄。如果您想更改應用程序策略,可以在conf/catalina.policy中執行此操作,或者如果您希望您的Web應用程序代碼獲得所有權限,則可以禁用安全管理器。

+0

我會嘗試查看兩個envs中的catalina.policy是否有變化。 – BoCode 2010-09-23 14:10:54

+0

只是一個更新,我沒有運行任何安全管理器的tomcat。所以我現在不知道該怎麼做。你能幫忙嗎? – BoCode 2010-09-24 04:12:55

0

您可能需要考慮以有權訪問映射驅動器的用戶身份運行Tomcat服務。

正如andcoz所指出的那樣,映射將不適用於Windows中我認爲用於運行Tomcat的SYSTEM用戶。您可以將服務配置更改爲以擁有驅動器映射的用戶身份運行,並驗證故障是否繼續發生。

相關

FileNotFoundException thrown when the file does exists.

+0

Vineet這是一個很好的資源。非常非常感謝你。 – BoCode 2010-09-24 04:24:35

相關問題