2012-10-01 137 views
2

我有兩個Windows域A和B.Tomcat的Windows服務無法訪問網絡驅動器

我有兩臺服務器:nasB域B,和webserverA域A.

我有兩個用戶:userB域B和訪問nasBuserA上域A與訪問webserverA

我運行Tomcat作爲webserverA服務,它具有爲屬性設置爲userA登錄。

我有\\nasB\myFiles$\映射到webserverA使用userB憑據。該映射僅用於允許JVM訪問。我總是在代碼中使用UNC訪問驅動器。我還擁有管理網絡密碼中的憑據。這兩種方法直接運行任何Java應用程序但不作爲服務時工作:(

如果我運行tomcat作爲服務它拋出filenotfound除非試圖訪問\\nasB\myFiles$\somefile.txt如果我運行tomcat使用startup.bat它可以訪問該文件的罰款。

使用userB我不能運行Tomcat服務,因爲他不必webserverA。怎樣讓訪問nasB時,我的Tomcat服務使用userB憑據訪問?

+0

「如果我使用startup.bat運行tomcat,它可以很好地訪問文件」 - 當你這樣做時,你登錄了哪個用戶? –

+0

'userA'。但正如我所指出的,他有'nasB'使用'userB'憑證映射。另外,我在所有位置都使用UNC,而不是地圖驅動器盤符。 –

回答

3

使用映射驅動器不要。

考慮到用戶的配置和映射驅動器僅在用戶使用交互式登錄登錄時纔可用,您將無法使用此類資源。嘗試使用UNC路徑,如果由於用戶限制而無法工作,請交出jcifs庫,這在這些情況下非常方便,因爲它允許您在使用UNC路徑訪問資源時進行身份驗證,因此可以降低不確定性關於讀取網絡驅動器中的文件夾和文件的能力(另外,將tomcat服務配置爲以管理用戶身份運行,提供不應過期的憑證...)。

我自己面對過這個,這只是我個人的看法。

+0

我在所有地點都使用UNC。 JCIFS會讓我使用fileinputstream的UNC訪問驅動器嗎?我將文件位置扔到使用fileinputstream打開文件的第三方庫中。 –

+0

JCIFS處理認證並在成功時創建適當的實例。 AFAIk它應該允許你讀取文件內的身份驗證是正確的。 – Alfabravo

0

在兩臺Windows服務器上創建具有相同用戶名/密碼的Windows用戶。 示例userA/passA 然後使用該用戶運行Tomcat Windows服務。

相關問題