users@grizzly.java.net

Re: (Getting the ProtocolChain instance) Re: Servlet blocking??

From: César Fernando Henriques <fuzzball_at_alttab.com.ar>
Date: Wed, 27 May 2009 13:22:54 -0300

Hi,

On Wed, May 27, 2009 at 12:31 PM, Jeanfrancois Arcand
<Jeanfrancois.Arcand_at_sun.com> wrote:
> Salut,
>
> César Fernando Henriques wrote:
>>
>> Hi,
>>
>> On Wed, May 27, 2009 at 12:06 PM, Jeanfrancois Arcand
>> <Jeanfrancois.Arcand_at_sun.com> wrote:
>>>
>>> Salut,
>>>
>>> César Fernando Henriques wrote:
>>>>
>>>> Hi,
>>>>
>>>> On Tue, May 26, 2009 at 10:34 PM, Jeanfrancois Arcand
>>>> <Jeanfrancois.Arcand_at_sun.com> wrote:
>>>>>
>>>>> Salut,
>>>>>
>>>>> César Fernando Henriques wrote:
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> On Tue, May 26, 2009 at 9:56 PM, Jeanfrancois Arcand
>>>>>> <Jeanfrancois.Arcand_at_sun.com> wrote:
>>>>>>>
>>>>>>> Salut,
>>>>>>>
>>>>>>> César Fernando Henriques wrote:
>>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> On Mon, May 25, 2009 at 11:08 PM, Jeanfrancois Arcand
>>>>>>>> <Jeanfrancois.Arcand_at_sun.com> wrote:
>>>>>>>>>
>>>>>>>>> Salut,
>>>>>>>>>
>>>>>>>>> sorry for the delay. I've just added a test case in Grizzly:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Mainly, to get the ProtocolChain, just do:
>>>>>>>>>
>>>>>>>>>> ProtocolChain pc =
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> gws.getSelectorThread().getController().getProtocolChainInstanceHandler().poll();
>>>>>>>>>
>>>>>>>>> From there you can add your ProtocolFilter. I've filled issue:
>>>>>>>>>
>>>>>>>>> https://grizzly.dev.java.net/issues/show_bug.cgi?id=621
>>>>>>>>>
>>>>>>>>> and added
>>>>>>>>>
>>>>>>>>> SelectorThread.getProtocolChain() to make it easier/trivial.
>>>>>>>>>
>>>>>>>>> and this is fixed in 1.9.16-SNAPSHOT. We are planning to release
>>>>>>>>> 1.9.16
>>>>>>>>> this
>>>>>>>>> week or early next week.
>>>>>>>>
>>>>>>>> A little doubt, this already fix the
>>>>>>>> server.getSelectorThread().getController() returning null if I call
>>>>>>>> getController before starting the server?
>>>>>>>
>>>>>>> Yes you still need to start the GWS in order to be allowed to add
>>>>>>> your
>>>>>>> ProtocolFilter. Is it causing an issue?
>>>>>>
>>>>>> No, it's ok, just that in my mind I was thinking in ProtocolFilter
>>>>>> like any Adapter, is there something I'm missing? should not be easier
>>>>>> to allow the user to setup the server configuration Filters/Adapters
>>>>>> in any order?
>>>>>
>>>>> So your proposal, if I understand you correctly, would consist of
>>>>> adding
>>>>> to
>>>>> the GWS class something like addProtocolFilter(ProtocolFilter, int
>>>>> position), independent if the Server is started or not, right?
>>>>
>>>> Yes, I was thinking in something like that... I don't know if there
>>>> are many use cases that make it worthwhile adding something like this.
>>>>
>>>> Remember that I'm thinking on ProtocolFilter in something similar to
>>>> SimpleChannelHandler in netty so I can add a custom protocol or a
>>>> transformation layer on top of HTTP. Maybe I'm totally wrong about
>>>> this idea. (I'm still thinking)
>>>>
>>>> I need to look at the code to understand really how it works, becasue
>>>> I don't see clear yet if  it can be used in the way I'm thinking.
>>>>
>>>> What I want is to create a serie of ProtocolFilters for example to
>>>> transform the content of http responses (pdf to html, doc to html,
>>>> etc), to add Compression and Cryptography (other than ssl, at http
>>>> content level) , etc.
>>>
>>> I see. I suspect this API is more appropriate for content transformation
>>> (but not SSL):
>>>
>>>
>>> https://grizzly.dev.java.net/nonav/apidocs/com/sun/grizzly/tcp/http11/OutputFilter.html
>>>
>>> As an example, you can take a look at the GZIP implementation:
>>>
>>>
>>> https://grizzly.dev.java.net/nonav/xref/com/sun/grizzly/tcp/http11/filters/GzipOutputFilter.html#72
>>
>> Thanks, I will take a look at the sources.
>>
>> Could you point me to some documentation, so I can start reading about
>> the architecture of Grizzly? I'm mainly interested in the http module.
>
> Unfortunately, we don't have such documentation available. I can try to do
> some quick write up that explain how the http module works later today if
> that can help. But one question before: Have you looked at the http-servlet
> module? You can probably achieve all the above by writing Filters, and add
> them to your ServletAdapter. There is a lot of documentation available for
> Servlet, so it would make you ready much faster IMO.

Yes, I have readed about http-servlet module (and I know about servlet
technology, I have a couple o web aplications already deployed, but
I'm not an expert).

I'm taking another approach here (maybe I'm wrong) because I have a
client (daemon) side that will mostly do the entire job, my server
side is basically a proxy connecting the client (daemon) and the
mobile agent. so, my server will be actually a "client" and I'm
thinking in adding these layers on top of http protocol for simplicity
on coding the Daemon logic. I would like to reach an API where I can
do something like this.

router.dispatch(new MessageEvent(session, data));

and let the service to handle transformation, encryption, compression
and delivery.

I'm mostly convinced on using grizzly comet at the proxy side with
ServletAdapter / GrizzlyAdapter, but I'm still not sure how to handle
the daemon (client) side.

I will take a look at jersey client.

Thanks.
Cesar.-

>
>
>>
>> I will need to write some code for the client side... do you think
>> it's a difficult tasks to write an http async client?
>
> This is not simple for sure. But you should take a look at the Jersey Client
> (jersey.dev.java.net). Jersey is a big user of Grizzly and their client
> works really really well with the http module.
>
>  I have checked
>>
>> out the httpclient on the svn, I think it should be a good starting
>> point.
>>
>> Best Regards.
>
> Thanks!
>
> -- Jeanfrancois
>
>
>>
>> Cesar.-
>>
>>>
>>>> I have the basic idea on how this should work based on what I was
>>>> doing with netty, but I don't think It will fit on GWS, maybe should I
>>>> write my own GWS Server.
>>>>
>>>> I hope you can understand my point... sometimes it's hard for my to
>>>> explain in english :-(. I'm from Argentina. I must improve my
>>>> spanglish!!!
>>>
>>> No this is quite clear...I'm from Quebec, so same frenchglish issue :-)
>>>
>>> A+
>>>
>>> -- Jeanfrancois
>>>
>>>> Thanks
>>>>
>>>> Cesar.-
>>>>
>>>>>> Is there any doc I can read to understand how it works?
>>>>>>
>>>>>> Thank you and sorry I'm taking lot of your time...
>>>>>
>>>>> NOT at all. This is a very interesting discussion.
>>>>>
>>>>> Thanks!
>>>>>
>>>>> -- Jeanfrancois
>>>>>
>>>>>
>>>>>> Cesar.-
>>>>>>
>>>>>>> Thanks
>>>>>>>
>>>>>>> -- jeanfrancois
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> Thanks
>>>>>>>>
>>>>>>>> Cesar.-
>>>>>>>>
>>>>>>>>> Thanks!
>>>>>>>>>
>>>>>>>>> -- Jeanfrancois
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> César Fernando Henriques wrote:
>>>>>>>>>>
>>>>>>>>>> yeap I found that issue, well I think I will try Grizzly for
>>>>>>>>>> server
>>>>>>>>>> side and netty from client side ;-)
>>>>>>>>>>
>>>>>>>>>> Thanks Jean,
>>>>>>>>>>
>>>>>>>>>> Best Regards
>>>>>>>>>>
>>>>>>>>>> Cesar.-
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Mon, May 25, 2009 at 8:59 PM, Jeanfrancois Arcand
>>>>>>>>>> <Jeanfrancois.Arcand_at_sun.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>> Salut,
>>>>>>>>>>>
>>>>>>>>>>> César Fernando Henriques wrote:
>>>>>>>>>>>>
>>>>>>>>>>>> Jean,
>>>>>>>>>>>>
>>>>>>>>>>>> Is there any async http client implementend with grizzly?
>>>>>>>>>>>
>>>>>>>>>>> Not yet, unfortunately. We are working on it:
>>>>>>>>>>>
>>>>>>>>>>> https://grizzly.dev.java.net/issues/show_bug.cgi?id=265
>>>>>>>>>>>
>>>>>>>>>>> Thanks!
>>>>>>>>>>>
>>>>>>>>>>> -- Jeanfrancois
>>>>>>>>>>>
>>>>>>>>>>>> Thanks
>>>>>>>>>>>>
>>>>>>>>>>>> 2009/5/25 César Fernando Henriques <fuzzball_at_alttab.com.ar>:
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks, Jean, I'm still doing tests with both Grizzly and
>>>>>>>>>>>>> Netty.
>>>>>>>>>>>>> To
>>>>>>>>>>>>> be
>>>>>>>>>>>>> honest I'm inclined to choose netty at this point, just for the
>>>>>>>>>>>>> API
>>>>>>>>>>>>> simplicity, but I really like Grizzly because it solve all my
>>>>>>>>>>>>> reqs
>>>>>>>>>>>>> with the CometEngine
>>>>>>>>>>>>>
>>>>>>>>>>>>> My problem is that I don't have a global vision of Grizzly,
>>>>>>>>>>>>> yet,
>>>>>>>>>>>>>  and
>>>>>>>>>>>>> where it's going in terms of versions and features to be
>>>>>>>>>>>>> supported.
>>>>>>>>>>>>>
>>>>>>>>>>>>> For example I'm seeing that GrizzlyWebServer in 2.0 doesn't
>>>>>>>>>>>>> have
>>>>>>>>>>>>> access to TCPSelectorHandler, why? Is this beacuse 2.0 doesn't
>>>>>>>>>>>>> support
>>>>>>>>>>>>> comet yet? I don't think it's related to comet (maybe I'm
>>>>>>>>>>>>> wrong).
>>>>>>>>>>>>> Should be nice to have the chance to add ProtocolFilter to GWS
>>>>>>>>>>>>> in
>>>>>>>>>>>>> 2.0
>>>>>>>>>>>>> release.
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> If you think It will be easy to fix I can take a look at the
>>>>>>>>>>>>> commet
>>>>>>>>>>>>> enabled GWS code.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks!
>>>>>>>>>>>>>
>>>>>>>>>>>>> Cesar.-
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Mon, May 25, 2009 at 6:14 PM, Jeanfrancois Arcand
>>>>>>>>>>>>> <Jeanfrancois.Arcand_at_sun.com> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Salut,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> César Fernando Henriques wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Thanks Jean,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I have tried accesing from different browsers and It works
>>>>>>>>>>>>>>> perfectly
>>>>>>>>>>>>>>> :-)
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I will keep doing some test, and trying to work around the
>>>>>>>>>>>>>>> issue
>>>>>>>>>>>>>>> of
>>>>>>>>>>>>>>> adding ProtocolFilter on GrizzlyWebServer, do you remember
>>>>>>>>>>>>>>> that
>>>>>>>>>>>>>>> issue?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>  TCPSelectorHandler tcpHandler = server.getSelectorThread()
>>>>>>>>>>>>>>>                             .getSelectorHandler();
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>  getSelectorHandler() return null. If I call
>>>>>>>>>>>>>>> getSelectorHandler
>>>>>>>>>>>>>>> after
>>>>>>>>>>>>>>>  gws.start() it return a valid handler but I get a null at
>>>>>>>>>>>>>>> tcpHandler.getProtocolChainInstanceHandler();
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Ok this should be easy to fix. Do you want me to take a look
>>>>>>>>>>>>>> or
>>>>>>>>>>>>>> you
>>>>>>>>>>>>>> already
>>>>>>>>>>>>>> moved to Netty :-) Anyway I will file an issue but if you
>>>>>>>>>>>>>> don't
>>>>>>>>>>>>>> need
>>>>>>>>>>>>>> it
>>>>>>>>>>>>>> today, I will work on 2.0 release :-)
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Thanks!
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> -- Jeanfrancois
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Thanks!
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Best Regards,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Cesar.-
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Mon, May 25, 2009 at 11:58 AM, Jeanfrancois Arcand
>>>>>>>>>>>>>>> <Jeanfrancois.Arcand_at_sun.com> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Salut,
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> César Fernando Henriques wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Hi all, I have been doing some tests with the EchoServer
>>>>>>>>>>>>>>>>> and
>>>>>>>>>>>>>>>>> it
>>>>>>>>>>>>>>>>> seems
>>>>>>>>>>>>>>>>> to be running ok, my problem is just with GrizzleWebServer,
>>>>>>>>>>>>>>>>> I'm
>>>>>>>>>>>>>>>>> really
>>>>>>>>>>>>>>>>> newbie ... but I'm suspecting that I have some throuble
>>>>>>>>>>>>>>>>> with
>>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>> AsyncWebFilter.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> It's just frustrating... :-(
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Any body has seen this erro before?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I think you are running inside Eclipse and the browser
>>>>>>>>>>>>>>>> doesn't
>>>>>>>>>>>>>>>> not
>>>>>>>>>>>>>>>> allow
>>>>>>>>>>>>>>>> more than 2 connections to the same host. This is a well
>>>>>>>>>>>>>>>> know
>>>>>>>>>>>>>>>> issue
>>>>>>>>>>>>>>>> when
>>>>>>>>>>>>>>>> using comet, e.g if your browser opens more than two
>>>>>>>>>>>>>>>> connections
>>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>> server, all other connections will be blocked by the
>>>>>>>>>>>>>>>> browser.
>>>>>>>>>>>>>>>> This
>>>>>>>>>>>>>>>> is
>>>>>>>>>>>>>>>> not
>>>>>>>>>>>>>>>> a
>>>>>>>>>>>>>>>> Grizzly issue :-) Can you try outside Eclipse with 2
>>>>>>>>>>>>>>>> different
>>>>>>>>>>>>>>>> browser
>>>>>>>>>>>>>>>> (like
>>>>>>>>>>>>>>>> I'm doing)?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Thanks!
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> -- Jeanfrancois
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Thank you guys!
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Saludos
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Cesar.-
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> 2009/5/23 César Fernando Henriques
>>>>>>>>>>>>>>>>> <fuzzball_at_alttab.com.ar>:
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> 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
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>>>>>>>> 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
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>> 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
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> 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
>
>