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

가능한 복제 [자바 너무 많은 파일 열기] (https://stackoverflow.com/questions/4289447/java-too-many-open-files) – Akah

+0

사실 CMIS API를 사용하고 있습니다. 거기에 writter 객체를 사용하고 있지 않습니다. –

+0

죄송합니다. 귀하의 질문은 분명하지 않습니다. 나는 "너무 많은 파일 문제가 너무 많다"라는 것을 알지 못했습니다. 마이그레이션에 대한 의미와 정확히 무엇을 설명 할 수 있습니까? 시스템 열린 파일을 모니터링하여 누출이 있는지, 아니면 마이그레이션 메카니즘이 너무 많은 시스템 자원을 사용하고 있는지 확인할 수 있습니까? – 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