2017-09-27 100 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

相关问题