Let me step in to say this now:

The way that the component model in general is for Cocoon, it is
difficult to impossible to make any sitemap component ThreadSafe.  The
exceptions are the Reader, the Matcher, the Action, and the Selector.

Before we went Beta with Cocoon 2, I proposed that we change the
interfaces for the Generator/Transformer/Serializer to return an
instance of the ContentHandler or Source that is used.  This would
allow the Components to be ThreadSafe, and individually manage their
own ContentHandler creation policies.

There is an inherent problem in making the Component also an
implementation of a pipeline.  One of the reasons is that for simple
Transformers (say one that catches <util:get-time format="hh:mm:ss"/>
and substitutes it for text inline) could essentially use one
ContentHandler for all threads.

Furthermore, with separate setup() and generate() methods, no
implementation of the SitemapComponent interface can be ThreadSafe.
Period.  This is limiting.

All this said, I still find that the biggest limitation on scalibility
is the ECM itself.  The ECM started out as part of the Cocoon code-base,
and for the complexity that it had was quite powerful.  My commendations
to Giacomo and others who wrote it.  However, as experience and usage
has born witness there are lessons to be learned.

The approach I would like to take for the Cocoon component model is
a refining of all the interfaces.  Unfortunately, that would require
some backwards incompatible changes. :(

When I get the ContainerManager done and a new scratchpad
implementation of Cocoon (as extending AbstractContainer), Main, and
CocoonServlet; we can start to assess the real limitations that the
current component model has with scalibility.

Until then, you are going to do alot of work for only marginal gains.


-- 

"They that give up essential liberty to obtain a little temporary safety
  deserve neither liberty nor safety."
                 - Benjamin Franklin


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to