2011-04-13 31 views
1

我有用Java開發的Web服務。我的其中一項服務不起作用。在調查問題後,我發現[可能]當我嘗試加載文件時,我收到一個異常,所以它會拋出一個java.lang.reflect.InvocationTargetException。我試着運行這段代碼,每次我得到False。無法在Java Web服務中加載文件

java.io.File f = new java.io.File("svncache.collection"); 
System.out.println(f.exists()); 

我試圖複製在Tomcat的根文件(\的webapps \ ROOT),但沒有奏效。我跑這個:

System.getProperty("user.dir") 

並將該文件複製到該函數返回的文件夾。之後,函數返回true,所以我想這是我應該使用的根文件夾。但是當我再次運行這個服務時,我得到了同樣的異常。我在Windows 7 x64和Eclipse for Java EE Helios上運行此服務。

我應該做什麼的建議?

謝謝。

編輯: 我應該提到這最初是一個Java項目(不是Web應用程序)。我不得不使用它作爲Web服務。第一個建議是使用Endpoint.publish。在這裏:

Add a web service to a already available Java project

轉換[和一個小編輯]後,它完美地運行,沒有任何問題。但我需要記錄用戶活動和建議我轉換的項目,動態Web項目和創建新的Web服務: Java - Rich logging in web servicesJava - Create a web service from an available class

所以基本上我在圈子裏我跑。使用Endpoint.publish不支持日誌記錄,使用Web Services將不允許我加載文件,並且原始Java項目不能用作我的Silverlight應用程序的Web服務。

請幫幫我。我很沮喪。謝謝。 PS:對不起,我不得不改變問題來澄清我的問題和標題以匹配。

+0

**你希望**文件'svncache.collection'存在哪裏?你指定一個相對的文件名,這通常是一件有風險的事情。這是一個包含在你的web應用程序中的文件嗎? – 2011-04-13 07:53:17

+0

感謝您的回覆。我不在乎文件在哪裏。我只是想加載該文件。即使我使用「C:\\ temp \\ svncache.collection」,它也無法加載它。至於第二部分,我不完全理解你的問題。這對我的服務非常重要,我必須加載它才能響應請求。 – 2011-04-13 07:58:14

+1

那麼你應該**關心它在哪裏,畢竟你想讀它。如果它是你的webapp的一部分,那麼你根本不應該使用'File',而是使用'ServletContext.getResource [AsStream]'或'Class.getResource [AsStream]'來加載它(取決於它是否在你的某處webapp或在'/ WEB-INF/classes'目錄中的'.jar' /中)。 – 2011-04-13 08:03:22

回答

0

您需要在web應用程序中運行該測試,而不僅僅是在普通Java應用程序中運行該測試。如果它在你的web應用程序中起作用,你肯定會誤解這個問題。如果它不......那麼,你可以解決這個問題。

+0

所有這些結果都在Web服務中。原始的Java項目運行完美無瑕。請再次閱讀該問題。我編輯它。謝謝。 – 2011-04-13 08:19:34

+0

我認爲UAC阻止我的Web服務訪問該文件。我運行這個代碼,它返回false。 'System.out.println(f.renameTo(f2));'如果你知道如何給服務管理員權限,請告訴我。我必須等幾個小時才能重新啓動我的窗口(禁用UAC並測試我的理論是否正確),但我很樂意做到這一點,而無需禁用UAC。 THanks – 2011-04-13 23:41:18

+0

我禁用了UAC,但問題仍然存在。 – 2011-05-24 16:30:06

相關問題