Hi.
I'm using XADisk in my EJB for writing large files (> 20MB) to disk uploaded from my web application.
java.lang.ArrayIndexOutOfBoundsException is thrown with line "at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:91" repeated 1000x or more when using write(byte[]) method on XAFileOutputStream class.
This is my EJB method simulating that write operation using 50MB byte array:
public void testXADisk() {
byte[] b = new byte[50000000];
File file = new File("d:/temp/XADiskTest.txt");
try {
XADiskConnection c = this.xaDiskCf.getConnection();
c.createFile(file, false);
XAFileOutputStream xafos = c.createXAFileOutputStream(file, true);
xafos.write(b);
xafos.close();
} catch (Exception e) {
throw new RuntimeException(e);
} // end try-catch
}
... and the trace:
javax.ejb.EJBException: See nested exception; nested exception is: java.lang.RuntimeException: java.lang.ArrayIndexOutOfBoundsException
Caused by: java.lang.RuntimeException: java.lang.ArrayIndexOutOfBoundsException
at si.pbs.cpb.furs.es.FursEsSb.testXADisk(FursEsSb.java:2076)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
...
Caused by: java.lang.ArrayIndexOutOfBoundsException
at sun.nio.ch.NativeThreadSet.remove(NativeThreadSet.java:67)
at sun.nio.ch.FileChannelImpl.position(FileChannelImpl.java:293)
at org.xadisk.filesystem.virtual.VirtualViewFile.appendContentBuffer(VirtualViewFile.java:356)
at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.submitBuffer(NativeXAFileOutputStream.java:151)
at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:87)
at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:91)
at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:91)
at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:91)
at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:91)
at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:91)
at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:91)
at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:91)
at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:91)
at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:91)
at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:91)
at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:91)
(line at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:91) is repeated maybe 1000x)
at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:68)
at si.pbs.cpb.furs.es.FursEsSb.testXADisk(FursEsSb.java:2072)
... 43 more
I'm using IBM Websphere Application Server 8.0.0.9 with installed XAFileSystem Resource Adapter 1.2.2.
Any ideas?
Thanks,
Igor