iSeries 상자 (JDK 1.5)에서 실행중인 일부 Java NIO 코드에 문제점이 있습니다. 기본적으로 코드는 파일을 다른 작은 파일로 청크 부분으로 분할합니다. 동일한 코드가 다른 AS/400 시스템에서도 문제없이 작동합니다. 여기iSeries의 NIO 파일 채널 전송 문제
//copy original data file content to temp file
long startPos = dataFile.length() - remaining;
long transferSize = maxSizeBytes - size;
size += inChannel.transferTo(startPos, transferSize, outChannel); //exception here
remaining -= size;
스택 추적 것 : 여기에 코드입니다
Caused by: java.io.IOException: Operation not supported. Map failed
at java.lang.Throwable.<init>(Throwable.java:196)
at java.lang.Exception.<init>(Exception.java:41)
at java.io.IOException.<init>(IOException.java:40)
at sun.nio.ch.FileChannelImpl.map0(Native Method)
at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:742)
at sun.nio.ch.FileChannelImpl.transferToTrustedChannel(FileChannelImpl.java:448)
at sun.nio.ch.FileChannelImpl.transferTo(FileChannelImpl.java:521)
... 나는 몇 가지 조사를하고 지금까지 원인 (상위 디렉토리의 파일 권한을했던
더 (11) , 메모리 부족, 공유 메모리 제어 QSHRMEMCTL 스위치 OFF, SAN 사용) 모두 실패한 것으로 판명되었습니다.
누구나이 특별한 문제에 경험이 있습니까?
감사합니다. Brad.
dataFile.length()
보다 당신이이 선 주위에 몇 가지 더 많은 코드를 표시 할 수 있습니다 통과dataFile.length()
특정 청크 또는 바이트 수에서 발생합니까? 아니면 시작시 실패합니까? 아니면 무작위로 발생합니까? – cafebabe
iSeries와 IBM JVM (32 비트 또는 64 비트). 내가 아는 한, 32 비트 VM에는 3GB 힙 한계가 있으며 NIO는 훨씬 제한되어 있습니다. – cafebabe