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
>
>
> ------------------------------------------------------------------------
>
> *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
>
>
>
>