cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Berin Loritsch <blorit...@apache.org>
Subject Re: C2: trouble getting streaming to work as expected
Date Wed, 28 Mar 2001 18:27:48 GMT
"McCoy, David" wrote:
> 
> Could you elaborate on what would be necessary to install a
> DeterministicXMLSerializer in to Cocoon?

It's not that difficult.  Once you create the XMLSerializer, you
add it to the list of serializers in cocoon.xconf:

<map:serializers default="html">
  <map:serializer name="deterministic" class="com.mycom.DeterministicXMLSerializer"/>
</map:serializers>

When you want to explicitly use the serializer in the map
then do something like this:

<map:match pattern="deterministic/**">
  <map:generate type="serverpages" src="docs/{1}.xsp"/>
  <map:serializer type="deterministic"/>
</map:match>


NOTE: you can make the deterministic serializer the default type.  In that
case, you can omit the "type" attribute.

Cocoon always sets the output stream explicitly for Serializers and Readers.
Basically, in a Servlet environment, it works like this:

Serializer serializer = (Serializer) serializerSelector.select("deterministic");
serializer.setOutputStream(response.getOutputStream());

As you can see, you are still at the mercy of the Servlet Engine for the type
of output streams.  To ensure serialization continues, just remember to
flush() after every write.  For your quicker pages that don't take a long time
to generate this serializer will be painfully slow.  For your more intensive
and slowly generated pages, this serializer will be PERCEIVED as faster mainly
because you are seeing results as they come.  The measured time between the
Buffered IO and the unbuffered IO will almost always favor the buffered IO.
In many cases though, it is _perceived_ speed that is more important than
_measured_ speed.


> -----Original Message-----
> From: Berin Loritsch [mailto:bloritsch@apache.org]
> Sent: Tuesday, March 27, 2001 12:09 PM
> To: cocoon-dev@xml.apache.org
> Subject: Re: C2: trouble getting streaming to work as expected
> 
> "Lock, Fred" wrote:
> >
> > Hello,
> >
> > My partner and I are using the enclosed XSP (see below) to experiment with
> > the streaming capabilities of C2. We are applying the
> dynamic-page2html.xsl
> > which comes with the C2 distribution to format the output. We are using IE
> > version 5.5 to view the output. C2 is running on Tomcat 3.2.1.
> >
> > We expect that when we hit the XSP we should see the browser displaying a
> > new integer number on successive lines every 0.5 seconds.
> >
> > However, what actually happens is that we wait approximately 70 seconds,
> and
> > then integers 0 through 131 are displayed. We then wait another 70 seconds
> > and integers 132 through 268 are displayed, etc.
> >
> > It appears that the output is being cached, then streamed out, cached,
> etc.
> >
> > Is there some way to reduce this cache, or force a flush?
> 
> Cocoon will use the BufferedOutputStream in just about every circumstance
> because
> it is faster to the end user.  If you need deterministic timing on the
> serializer,
> then you need a "DeterministicXMLSerializer" or something like that and
> perform
> flush()es on each nugget of information.  Since Cocoon is designed for a
> transaction
> oriented environment, the notion of what you are trying to due goes against
> how
> Cocoon is designed to be used.
> 
> This is the same with most Server Side Processing in a Web environment.  A
> transaction
> occurs from request to response.  Once the response is fully sent, the
> transaction
> is done.  There really isn't the notion of a progressive transaction.
> 
> What is the end result that you envision by having a deterministic response
> on
> the client browser?  I guarantee that once you start embedding that
> information
> in tables, Netscape won't display the information until the table is closed
> (all
> at once).
> 
> >
> > Thanks,
> > Fred
> >
> > =================================================================
> > XSP file to experiment with C2 streaming.
> > dynamic-page2html.xsl is used to style the output.
> > =================================================================
> >
> > <?xml version="1.0" encoding="ISO-8859-1"?>
> >
> > <xsp:page
> >   language="java"
> >   xmlns:xsp="http://apache.org/xsp"
> > >
> >   <page>
> >    <title>A Simple XSP Page</title>
> >    <content>
> >      <para>Some page content</para>
> >      <xsp:logic>
> >        for (int i = 0 ; i &lt; 500 ; i++) {
> >          <para>
> >            <xsp:expr>i</xsp:expr>
> >          </para>
> >          try {
> >            Thread.sleep(500);
> >          } catch (Exception e) {}
> >        }
> >      </xsp:logic>
> >    </content>
> >   </page>
> > </xsp:page>
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: cocoon-dev-unsubscribe@xml.apache.org
> > For additional commands, email: cocoon-dev-help@xml.apache.org
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: cocoon-dev-unsubscribe@xml.apache.org
> For additional commands, email: cocoon-dev-help@xml.apache.org
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: cocoon-dev-unsubscribe@xml.apache.org
> For additional commands, email: cocoon-dev-help@xml.apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: cocoon-dev-unsubscribe@xml.apache.org
For additional commands, email: cocoon-dev-help@xml.apache.org


Mime
View raw message