users@grizzly.java.net

Re: Servlet blocking??

From: César Fernando Henriques <fuzzball_at_alttab.com.ar>
Date: Sat, 23 May 2009 19:23:51 -0300

Jean,

I have been doing some tests, but I'm still getting the same error
(The servlet blocks after the first request). This is the output for
the first request. If I close the browser ht servlet can serve another
request.

23/05/2009 19:17:12 com.sun.grizzly.http.SelectorThread displayConfiguration
INFO:
 Grizzly configuration for port 80
         Thread Pool: StatsThreadPool[name=http, priority=10, min-threads=5,
max-threads=5, max-queue-size=4096, initial-byte-buffer-size=8192,
byte-buffer-type=HEAP_VIEW, is-shutdown=false, port=80]
         ByteBuffer size: 8192
         maxHttpHeaderSize: 8192
         maxKeepAliveRequests: 256
         keepAliveTimeoutInSeconds: 30
         Static File Cache enabled: true
         Static resources directory: E:\Users\Cesar\Documentos\Proyectos\WebServer
         Adapter : com.sun.grizzly.tcp.http11.GrizzlyAdapterChain
         Asynchronous Request Processing enabled: true
23/05/2009 19:17:16 com.sun.grizzly.http.ProcessorTask parseRequest
INFO: SocketChannel request
linejava.nio.channels.SocketChannel[connected local=/127.0.0.1:80
remote=/127.0.0.1:54798] is: R( /index.html)
23/05/2009 19:17:16 com.sun.grizzly.http.ProcessorTask parseRequest
INFO: SocketChannel headersjava.nio.channels.SocketChannel[connected
local=/127.0.0.1:80 remote=/127.0.0.1:54798] are: === MimeHeaders ===
host = localhost:80
user-agent = Mozilla/5.0 (Windows; U; Windows NT 6.1; es-ES;
rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10
accept = text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
accept-language = es-es,es;q=0.8,en-us;q=0.5,en;q=0.3
accept-encoding = gzip,deflate
accept-charset = ISO-8859-1,utf-8;q=0.7,*;q=0.7
keep-alive = 300
connection = keep-alive
cache-control = max-age=0

I'm running on Windows 7 64bits and JDK 1.6 U12

any help?


On Fri, May 22, 2009 at 2:04 PM, Jeanfrancois Arcand
<Jeanfrancois.Arcand_at_sun.com> wrote:
> Salut,
>
> César Fernando Henriques wrote:
>>
>> Thanks you Jean, will be good if you have a little of free time to
>> check my code but don't worry, I'm not hurry
>
> (saw your post on Netty ;-))
>
> For me your code works perfectly (I'm using 1.9.16-SNAPSHOT)
>
> I did:
>>
>> jfarcand_at_jfarcand-desktop:/appserv80/grizzly/gws_comet$ jdebug
>> -Dcom.sun.grizzly.enableSnoop=true
>> -Dcom.sun.grizzly.displayConfiguration=true -cp
>>
>>  /appserv80/grizzly/trunk/modules/bundles/comet/target/grizzly-comet-webserver-1.9.16-SNAPSHOT.jar:.
>> ar.com.alttab.webserver.Test
>> Listening for transport dt_socket at address: 9009
>> 22-May-2009 12:56:24 PM com.sun.grizzly.http.SelectorThread
>> displayConfiguration
>> INFO:  Grizzly configuration for port 8080
>>         Thread Pool: StatsThreadPool[name=http, priority=10,
>> min-threads=5, max-threads=5, max-queue-size=4096,
>> initial-byte-buffer-size=8192, byte-buffer-type=HEAP_VIEW,
>> is-shutdown=false, port=8080]
>>         ByteBuffer size: 8192
>>         maxHttpHeaderSize: 8192
>>         maxKeepAliveRequests: 256
>>         keepAliveTimeoutInSeconds: 30
>>         Static File Cache enabled: true
>>         Static resources directory:
>> /home/jfarcand/workspace/grizzly/gws_comet
>>         Adapter : com.sun.grizzly.tcp.http11.GrizzlyAdapterChain
>>         Asynchronous Request Processing enabled: true
>> 22-May-2009 12:56:33 PM com.sun.grizzly.http.ProcessorTask parseRequest
>> INFO: SocketChannel request linejava.nio.channels.SocketChannel[connected
>> local=/127.0.0.1:8080 remote=/127.0.0.1:39679] is: R( /)
>> 22-May-2009 12:56:33 PM com.sun.grizzly.http.ProcessorTask parseRequest
>> INFO: SocketChannel headersjava.nio.channels.SocketChannel[connected
>> local=/127.0.0.1:8080 remote=/127.0.0.1:39679] are: === MimeHeaders ===
>> user-agent = Wget/1.11.4
>> accept = */*
>> host = 127.0.0.1:8080
>> connection = Keep-Alive
>>
>> Suspending : com.sun.grizzly.http.servlet.HttpServletRequestImpl_at_1712651
>> 22-May-2009 12:56:53 PM com.sun.grizzly.http.ProcessorTask parseRequest
>> INFO: SocketChannel request linejava.nio.channels.SocketChannel[connected
>> local=/127.0.0.1:8080 remote=/127.0.0.1:39680] is: R( /)
>> 22-May-2009 12:56:53 PM com.sun.grizzly.http.ProcessorTask parseRequest
>> INFO: SocketChannel headersjava.nio.channels.SocketChannel[connected
>> local=/127.0.0.1:8080 remote=/127.0.0.1:39680] are: === MimeHeaders ===
>> user-agent = Wget/1.11.4
>> accept = */*
>> host = 127.0.0.1:8080
>> connection = Keep-Alive
>>
>> Suspending : com.sun.grizzly.http.servlet.HttpServletRequestImpl_at_6397eb
>> 22-May-2009 12:57:04 PM com.sun.grizzly.http.SocketChannelOutputBuffer
>> flushChannel
>> INFO: HTTP/1.1 200 OK
>> server: grizzly/1.9.16
>> Content-Length: 0
>> Date: Fri, 22 May 2009 16:57:04 GMT
>> Connection: Keep-Alive
>>
>>
>> 22-May-2009 12:57:23 PM com.sun.grizzly.http.SocketChannelOutputBuffer
>> flushChannel
>> INFO: HTTP/1.1 200 OK
>> server: grizzly/1.9.16
>> Content-Length: 0
>> Date: Fri, 22 May 2009 16:57:23 GMT
>> Connection: Keep-Alive
>
> And added the following line in
>
>>        CometResponseHandler handler = new CometResponseHandler();
>>        handler.attach(arg1);
>>        context.addCometHandler(handler);
>>        System.out.println("Suspending : " + arg0);
>
> I do see the Suspended called all the time, and also the push/notify. Ho can
> I reproduce your use case?
>
>>
>> Do you know if there are any plan to release Grizzly Comet Web Server
>> for nio framework 2.0?
>
> We are targetting June 2009. I will soon work on the Comet implementation
> (after J1).
>
>>
>> Last question, (already asked on the other thread), is there any way
>> to add a ProtocolFilter to GrizzlyWebServer, I have been playing with
>> netty and have the chance to add Custom Handlers to the channel, so I
>> was thinking to add ProtocolHandler, CompressionHandler and
>> CryptoHandler.
>
> Yes, and I've answered:
>
>> In Grizzly you will do something like:
>>
>> GrizzlyWebServer.getSelectorThread().getSelectorHandler().
>>    getProtocolChain().poll().addFilter(2,yourCustomProtocolParser());
>
>
>>
>> Another good use of Filters in my case could be to transform
>> documents, I'm going to access different content from moble phones so
>> maybe a good service to add in the Daemon could be a
>> DocumentTransformationFilter, that extract text/html from pdf, doc,
>> docx (I already have this implemented in a DTS Service running
>> standalone).
>>
>> What do you think?
>
> I think that could be pretty simple to do that inside a GrizzlyAdapter
> instead of a ProtocolFilter. Inside the grizzlyAdapter all the headers will
> be parsed for you, and you just have to manipulate the body of the request.
>
> Thanks!
>
> -- Jeanfrancois
>
>
>>
>> Thanks
>>
>> Cesar.-
>>
>>
>> On Thu, May 21, 2009 at 10:18 PM, Jeanfrancois Arcand
>> <Jeanfrancois.Arcand_at_sun.com> wrote:
>>>
>>> Salut,
>>>
>>> I'm back (was releasing this little monster -> http://is.gd/Cb5Y)
>>>
>>> César Fernando Henriques wrote:
>>>>
>>>> Maybe I'm getting wrong... but is supposed that the request get
>>>> suspened for different client's. In my case the servlet serve one
>>>> client and suspend... that's ok, if I dispacth a comet event the
>>>> response is updated with the notify, but I I create another request to
>>>> the servlet from another client the servlet doesn't respond until I
>>>> close the previuos request (Close the browser).
>>>>
>>>> I don't think that should be happening... but maybe I'm totally
>>>> confused.
>>>
>>> No you are correct. I suspect there is not enough threads...but that
>>> strange. I will play with the sample (THANKS) to see what's happening.
>>>
>>> Apology for the delay.
>>>
>>> -- Jeanfrancois
>>>
>>>> Thanks!
>>>>
>>>> On Thu, May 21, 2009 at 6:01 PM, Jeanfrancois Arcand
>>>> <Jeanfrancois.Arcand_at_sun.com> wrote:
>>>>>
>>>>> Salut,
>>>>>
>>>>> César Fernando Henriques wrote:
>>>>>>
>>>>>> Jean, Yes, the service method is invoked, and the event is dispatched
>>>>>> on CometResponseHandler. My problem is that the Servlet running on
>>>>>> GrizzlyWebServer is blocking and I just can serve one client at time.
>>>>>
>>>>> OK but all request gets suspended and that's normal you don't get any
>>>>> response. What are you expecting?
>>>>>
>>>>> Thanks!
>>>>>
>>>>> -- jeanfrancois
>>>>>
>>>>>> I have attached the code.
>>>>>>
>>>>>> Thanks you!!!
>>>>>>
>>>>>> On Thu, May 21, 2009 at 5:43 PM, Jeanfrancois Arcand
>>>>>> <Jeanfrancois.Arcand_at_sun.com> wrote:
>>>>>>>
>>>>>>> Salut,
>>>>>>>
>>>>>>> Survivant 00 wrote:
>>>>>>>>
>>>>>>>> I never did comet stuff yet, but here a snippet that will enable
>>>>>>>> comet.
>>>>>>>>
>>>>>>>>
>>>>>>>> // comet
>>>>>>>>         if(cometEnabled){
>>>>>>>>             SelectorThread st = ws.getSelectorThread();
>>>>>>>>                           AsyncHandler asyncHandler = new
>>>>>>>> DefaultAsyncHandler();
>>>>>>>>             asyncHandler.addAsyncFilter(new CometAsyncFilter());
>>>>>>>>             st.setAsyncHandler(asyncHandler);
>>>>>>>>                           st.setEnableAsyncExecution(true);
>>>>>>>>         }
>>>>>>>>
>>>>>>> No this not not needed.
>>>>>>>
>>>>>>> Cesar, is the service method of your GrizzlyAdapter invoked? Can you
>>>>>>> send
>>>>>>> me
>>>>>>> the entire class so I can try?
>>>>>>>
>>>>>>> Thanks
>>>>>>>
>>>>>>> -- Jeanfrancois
>>>>>>>
>>>>>>>>
>>>>>>>> 2009/5/21 César Fernando Henriques <cesar_at_alttab.com.ar
>>>>>>>> <mailto:cesar_at_alttab.com.ar>>
>>>>>>>>
>>>>>>>>  Hi guys, I'm runnign the following code and something is wrong, the
>>>>>>>>  servlet is blocking so I just can serve one client at time. Is that
>>>>>>>>  supposed to work in that way?
>>>>>>>>
>>>>>>>>  Sorry if this is a silly question.. I'm new to Grizzly.
>>>>>>>>
>>>>>>>>
>>>>>>>>         GrizzlyWebServer server = new GrizzlyWebServer(80);
>>>>>>>>
>>>>>>>>         server.addAsyncFilter(new CometAsyncFilter());
>>>>>>>>
>>>>>>>>         server.addGrizzlyAdapter(new ServletAdapter(new
>>>>>>>> MyServlet()),
>>>>>>>>  new String[]{"/"});
>>>>>>>>
>>>>>>>>         server.addGrizzlyAdapter(new GrizzlyAdapter() {
>>>>>>>>
>>>>>>>>             @Override
>>>>>>>>             public void service(GrizzlyRequest arg0, GrizzlyResponse
>>>>>>>>  arg1) {
>>>>>>>>
>>>>>>>>                 CometEngine cometEngine = CometEngine.getEngine();
>>>>>>>>                 CometContext cometContext =
>>>>>>>>  cometEngine.getCometContext("caca");
>>>>>>>>
>>>>>>>>                 try {
>>>>>>>>                     cometContext.notify("Chatter test has joined.");
>>>>>>>>                 } catch (IOException e) {
>>>>>>>>                     // TODO Auto-generated catch block
>>>>>>>>                     e.printStackTrace();
>>>>>>>>                 }
>>>>>>>>             }
>>>>>>>>         }, new String[] { "/test" });
>>>>>>>>
>>>>>>>>         try {
>>>>>>>>             server.start();
>>>>>>>>         } catch (IOException e) {
>>>>>>>>             // TODO Auto-generated catch block
>>>>>>>>             e.printStackTrace();
>>>>>>>>         }
>>>>>>>>
>>>>>>>>
>>>>>>>>  Regards.-
>>>>>>>>
>>>>>>>>
>>>>>>>>  ---------------------------------------------------------------------
>>>>>>>>  To unsubscribe, e-mail: users-unsubscribe_at_grizzly.dev.java.net
>>>>>>>>  <mailto:users-unsubscribe_at_grizzly.dev.java.net>
>>>>>>>>  For additional commands, e-mail: users-help_at_grizzly.dev.java.net
>>>>>>>>  <mailto:users-help_at_grizzly.dev.java.net>
>>>>>>>>
>>>>>>>>
>>>>>>> ---------------------------------------------------------------------
>>>>>>> To unsubscribe, e-mail: users-unsubscribe_at_grizzly.dev.java.net
>>>>>>> For additional commands, e-mail: users-help_at_grizzly.dev.java.net
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> ------------------------------------------------------------------------
>>>>>>>
>>>>>>> ---------------------------------------------------------------------
>>>>>>> To unsubscribe, e-mail: users-unsubscribe_at_grizzly.dev.java.net
>>>>>>> For additional commands, e-mail: users-help_at_grizzly.dev.java.net
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: users-unsubscribe_at_grizzly.dev.java.net
>>>>> For additional commands, e-mail: users-help_at_grizzly.dev.java.net
>>>>>
>>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe_at_grizzly.dev.java.net
>>>> For additional commands, e-mail: users-help_at_grizzly.dev.java.net
>>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe_at_grizzly.dev.java.net
>>> For additional commands, e-mail: users-help_at_grizzly.dev.java.net
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe_at_grizzly.dev.java.net
>> For additional commands, e-mail: users-help_at_grizzly.dev.java.net
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_grizzly.dev.java.net
> For additional commands, e-mail: users-help_at_grizzly.dev.java.net
>
>