dev@grizzly.java.net

java.io.IOException: write beyond end of stream

From: <rama.rama_at_tiscali.it>
Date: Thu, 15 Apr 2010 16:57:02 +0200 (CEST)

Hi there,

got an exception doing that

1) running a gws (as .java on
this mail)
2) refresh quickly at http://127.0.0.1:6666/ using firefox
for 10-12 time
3) KABOOM :)
java.io.IOException: write beyond end of
stream
        at java.util.zip.DeflaterOutputStream.write
(DeflaterOutputStream.java:104)
        at java.util.zip.GZIPOutputStream.write
(GZIPOutputStream.java:72)
        at com.sun.grizzly.tcp.http11.filters.
GzipOutputFilter.doWrite(GzipOutputFilter.java:125)
        at com.sun.grizzly.
tcp.http11.InternalOutputBuffer.doWrite(InternalOutputBuffer.java:640)
        
at com.sun.grizzly.tcp.Response.doWrite(Response.java:676)
        at test.
wsTest$myAdapter.doWrite(wsTest.java:55)
        at test.wsTest$myAdapter.
service(wsTest.java:38)
        at com.sun.grizzly.tcp.http11.GrizzlyAdapter.
service(GrizzlyAdapter.java:166)
        at com.sun.grizzly.tcp.http11.
GrizzlyAdapterChain.service(GrizzlyAdapterChain.java:180)
        at com.sun.
grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:166)
        at
com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:
791)
        at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.
java:693)
        at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.
java:954)
        at com.sun.grizzly.http.DefaultProtocolFilter.execute
(DefaultProtocolFilter.java:170)
        at com.sun.grizzly.
DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:
135)
        at com.sun.grizzly.DefaultProtocolChain.execute
(DefaultProtocolChain.java:102)
        at com.sun.grizzly.
DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
        at com.sun.
grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
        at
com.sun.grizzly.ProtocolChainContextTask.doCall
(ProtocolChainContextTask.java:53)
        at com.sun.grizzly.
SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
        at com.
sun.grizzly.ContextTask.run(ContextTask.java:69)
        at com.sun.grizzly.
util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
        at
com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.
java:309)
        at java.lang.Thread.run(Thread.java:619)

probably the GZIP
cause this problem (where probably -> for sure).
This only happen when
buffer to write is bigger than some min amount (??) probably there is a
limit for the compression

Best regards! :)


---------------------------------------------------------------------------------------------------

package test;


import com.eg.euler.Util;
import com.eg.euler.ipc.http.
newHttp.grizzly.GrizzlyResAdapter;
import com.eg.euler.jsp.JspParser;

import com.sun.grizzly.http.embed.GrizzlyWebServer;
import com.sun.
grizzly.tcp.http11.GrizzlyAdapter;
import com.sun.grizzly.tcp.http11.
GrizzlyRequest;
import com.sun.grizzly.tcp.http11.GrizzlyResponse;

import com.sun.grizzly.util.DefaultThreadPool;
import com.sun.grizzly.
util.buf.ByteChunk;

import java.io.*;

public class wsTest {
    
public static void main(String args[]) throws Throwable {
        
GrizzlyWebServer gws;
        DefaultThreadPool.
DEFAULT_IDLE_THREAD_KEEPALIVE_TIMEOUT = 1000*60*5;

        gws = new
GrizzlyWebServer(6666,"",false);

        gws.getSelectorThread().
setDisplayConfiguration(true);
        gws.getSelectorThread().
setCompression("on");
        gws.addGrizzlyAdapter(new myAdapter(),new
String[]{"/"});
        gws.start();
    }

    private static class
myAdapter extends GrizzlyAdapter {
        @Override
        public
void service(GrizzlyRequest grizzlyRequest, GrizzlyResponse
grizzlyResponse) {
            try {
                String bb = "a";

                for (int i = 0;i<15;i++)
                    bb=bb+bb+"
\n";
                grizzlyResponse.setContentType("text/html");

                grizzlyResponse.setStatus(500);
                doWrite
(grizzlyResponse,bb,"UTF-8");
            } catch (Throwable e)

            {

            }
        }

        private void doWrite
(GrizzlyResponse httpResp,String msg,String encode) throws IOException

        {
            try
            {
                byte b[] = msg.
getBytes(encode);
                ByteChunk chunk = new ByteChunk();

                int len = b.length;
                chunk.setBytes(b,0,
len);
                httpResp.setCharacterEncoding(encode);

                httpResp.setContentLength(len);
                
httpResp.getResponse().doWrite(chunk);
            }
            catch
(Throwable e)
            {
                e.printStackTrace();

            }
        }
    }
}



Presentaci un amico! Invita i tuoi amici a scoprire i servizi Tiscali: per ogni amico che attiverà un servizio Tiscali, potrai avere 30 euro di sconto e lo stesso sconto di 30 euro verrà poi offerto al tuo amico.

Scopri come! http://abbonati.tiscali.it/presentaci_un_amico/?WT.mc_id=01fw