2017-09-27 79 views
1

我在將內容從一個露天存儲庫遷移到其他地方時出現此錯誤。在戶外內容遷移時出現異常,打開的文件太多

而我在實時生產服務器日誌中發生此錯誤。

而且遷移過程中服務器正在關閉。

任何人都可以請幫我解決這個問題或任何建議是有避免這個問題。

任何幫助或意見將不勝感激。 在此先感謝。

我已經寫了下面的代碼片段

ContentStream contentStream = new ContentStreamImpl("content." + FilenameUtils.getExtension(fileName), 
      BigInteger.valueOf(fileName.length()), new MimetypesFileTypeMap().getContentType(newfile), doc.getContentStream().getStream()); 

我有2個repositorys,使用上面的代碼我從源讀取內容流和創造目標庫中的新文件,並添加內容流。但我沒有找到任何方法來關閉內容流。

請在下面的錯誤日誌中找到更多詳細信息。

java.net.SocketException異常:打開的文件太多 在java.net.PlainSocketImpl.socketAccept(本機方法)

+2

的可能的複製【JAVA打開的文件太多(https://stackoverflow.com/questions/4289447/java-too-many-open-files) – Akah

+0

其實我正在使用CMIS API,並且在那裏我沒有使用任何寫入對象 –

+0

對不起,但您的問題對我來說並不清楚。我不確定你是否知道「太多的開放文件問題」。你能解釋一下你的意思嗎?你究竟做了什麼?你能監視你的系統打開的文件,看看你是否有泄漏,或只是你的遷移mecanism使用了太多的系統資源? – Akah

回答

1

如果您使用的是DotCMIS方法GetContentStream在客戶端,請確保您始終關閉流 - 即使你不讀它。否則,服務器的套接字保持打開狀態。根據您的應用程序,客戶端和/或服務器可能會耗盡套接字。

關閉流是這樣的:

IContentStream contentStream = document.GetContentStream(); 
Stream stream = contentStream.Stream; 

... do something with the stream ... 

stream.Close(); 
+0

謝謝@Florian Muller這就是我正在做的。你能幫我關閉流嗎?因爲我嘗試了我的水平,但我沒有找到任何方法來關閉流。 –

+0

請儘可能編輯答案。 –

+0

@DeepakTalape請在你的問題中分享你的代碼。 – Akah

相關問題