Subtle difference that I missed. Sorry.
Looks like it works well. But I am now seeing random errors that I didn't see before:
Exception in thread "Thread-4" java.lang.IllegalArgumentException
at java.nio.Buffer.position(Buffer.java:236)
at sun.nio.ch.IOUtil.write(IOUtil.java:63)
at sun.nio.ch.SimpleAsynchronousFileChannelImpl$3.run(SimpleAsynchronousFileChannelImpl.java:375)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
I can't tell exactly what's causing it but this only started happening after updating to the latest.
Thanks!
Jon Brisbin
http//jbrisbin.com
----- Original Message -----
> From: "Oleksiy Stashok" <oleksiy.stashok_at_oracle.com>
> To: users_at_grizzly.java.net
> Sent: Thursday, July 28, 2011 10:47:37 AM
> Subject: Re: exception using ByteBufferManager
> Hi Jon,
> with the new code (see Ryan's email),
> please use inputStream.readBuffer();
> this way you won't need to call InputStream.skip(...) etc, pls. see
> the sample I sent recently.
> Thanks.
> Alexey.
> On 07/28/2011 05:11 PM, Jon Brisbin wrote:
> > I tried this in my shootout example and got this:
>
> > java.lang.IllegalStateException: CompositeBuffer has already been
> > disposed
>
> > at
> > org.glassfish.grizzly.memory.BuffersBuffer.checkDispose(BuffersBuffer.java:1614)
>
> > at
> > org.glassfish.grizzly.memory.BuffersBuffer.remaining(BuffersBuffer.java:348)
>
> > at
> > org.glassfish.grizzly.http.server.io.InputBuffer.available(InputBuffer.java:357)
>
> > at
> > org.glassfish.grizzly.http.server.io.InputBuffer.readyData(InputBuffer.java:349)
>
> > at
> > org.glassfish.grizzly.http.server.io.InputBuffer.notifyAvailable(InputBuffer.java:731)
>
> > at
> > org.glassfish.grizzly.http.server.io.InputBuffer.notifyAvailable(InputBuffer.java:691)
>
> > at
> > org.glassfish.grizzly.http.server.NIOInputStreamImpl.notifyAvailable(NIOInputStreamImpl.java:139)
>
> > at
> > org.glassfish.grizzly.http.server.io.NIOInputSource$notifyAvailable.call(Unknown
> > Source)
>
> > here's my handler code:
>
> > def readAvailable() {
>
> > def len = inputStream.readyData()
>
> > def inputStreamBuffer = inputStream.getBuffer()
>
> > def writeBuff = inputStreamBuffer.toByteBuffer()
>
> > try {
>
> > channel.write(writeBuff, bytes.get(), writeBuff, handler)
>
> > bytes.addAndGet(len)
>
> > } finally {
>
> > inputStreamBuffer.tryDispose()
>
> > }
>
> > }
>
> > Thanks!
>
> > Jon Brisbin
>
> > http//jbrisbin.com
>
> > ----- Original Message -----
>
> > > From: "Oleksiy Stashok" <oleksiy.stashok_at_oracle.com>
> >
>
> > > To: users_at_grizzly.java.net
> >
>
> > > Sent: Thursday, July 28, 2011 6:22:00 AM
> >
>
> > > Subject: Re: exception using ByteBufferManager
> >
>
> > > Hi Jon,
> >
>
> > > I've updated the sample [1], so you can try to uncomment couple
> > > of
> > > lines to try direct buffers.
> >
>
> > > Only one thing - you need to use latest Grizzly trunk to run it.
> >
>
> > > Thanks.
> >
>
> > > WBR,
> >
>
> > > Alexey.
> >
>
> > > [1]
> > > http://java.net/projects/grizzly/sources/git/content/samples/http-server-samples/src/main/java/org/glassfish/grizzly/samples/httpserver/nonblockinghandler/UploadHttpHandlerSample.java
> >
>
> > > On 07/27/2011 10:58 PM, Jon Brisbin wrote:
> >
>
> > > > I'm trying to use the ByteBufferManager in my application
> > > > because
> > > > I'm
> > > > hitting some issues with garbage collecting all these byte
> > > > arrays
> > > > I'm allocating for writing uploads. Whenever I try and allocate
> > > > an
> > > > object from it, though, I get this exception:
> > >
> >
>
> > > > java.lang.ClassCastException: java.nio.DirectByteBuffer cannot
> > > > be
> > > > cast to org.glassfish.grizzly.memory.HeapBuffer
> > >
> >
>
> > > > at
> > > > org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool.reset(HeapMemoryManager.java:307)
> > >
> >
>
> > > > at
> > > > org.glassfish.grizzly.memory.ByteBufferManager.reallocatePoolBuffer(ByteBufferManager.java:371)
> > >
> >
>
> > > > at
> > > > org.glassfish.grizzly.memory.ByteBufferManager.allocateByteBuffer(ByteBufferManager.java:238)
> > >
> >
>
> > > > at
> > > > org.glassfish.grizzly.memory.ByteBufferAware$allocateByteBuffer.call(Unknown
> > > > Source)
> > >
> >
>
> > > > Are there example of proper use of this somewhere?
> > >
> >
>
> > > > Thanks!
> > >
> >
>
> > > > Jon Brisbin
> > >
> >
>
> > > > http//jbrisbin.com
> > >
> >
>