bdelacretaz 2003/06/18 05:01:17
Modified: src/documentation/xdocs/installing updating.xml
Log:
proofreading and general cleanup
Revision Changes Path
1.7 +106 -94 cocoon-2.1/src/documentation/xdocs/installing/updating.xml
Index: updating.xml
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/documentation/xdocs/installing/updating.xml,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- updating.xml 17 Jun 2003 13:41:26 -0000 1.6
+++ updating.xml 18 Jun 2003 12:01:17 -0000 1.7
@@ -7,173 +7,186 @@
<authors>
<person name="Carsten Ziegeler" email="[EMAIL PROTECTED]"/>
<person name="Jörg Heinicke" email="[EMAIL PROTECTED]"/>
+ <person name="Bertrand Delacrétaz" email="[EMAIL PROTECTED]"/>
</authors>
</header>
<body>
<s1 title="Updating Cocoon">
- <p>Please take your time and read this document completly before you try to
upgrade from
+ <p>Please take your time to read this document completely before trying to
upgrade from
a Cocoon 2.0.x version to 2.1 (or above).</p>
<p>
This is a brief discussion of the changes between the latest official release
@released.version@
- and the current development version of Apache Cocoon. So, if you are interested
in
- installing the official release, ignore this document. But if you want to know
what is going
- on in the development of Cocoon, have a look...
+ and the current development version of Apache Cocoon.
+ You only need this information if you are updating an existing Cocoon
installation, or
+ if you want to know what is going on in the development of Cocoon.
</p>
<p>
- Cocoon has developed many Avalon components which are of a more general nature.
So, the best
- solution was to donate these components to the Avalon Excalibur project and move
them out
- of Cocoon. This move has lead to some changes in configuration etc. which are
described
- by this document.
+ The Cocoon team has developed many Avalon components which are not specific to
Cocoon and have
+ been donated to the Avalon Excalibur project and moved out
+ of Cocoon. This has led to some configuration changes which are described
+ in this document.
</p>
- <p>In addition there were some disadvantages in the internal architecture of
Cocoon. The
- new version removes these bottlenecks and gives more flexibility, usability and
performance.
+ <p>
+ The internal architecture of cocoon has also been improved to give more
flexibility, usability and performance.
</p>
</s1>
<s1 title="Sitemap">
- <p>There are some changes in the sitemap and the configuration of some
components in
+ <p>There are some changes in the sitemap and in the configuration of some
components in
the sitemap.</p>
<s2 title="FOP Serializer">
- <p>FOP serializer's <user-config> relative path now resolves relative
- to sitemap's directory. All Cocoon URIs are supported too.</p>
+ <p>Relative paths in FOP serializer's <user-config> are now resolved
relatively
+ to the directory that contains the sitemap.</p>
+ <p>All Cocoon URIs are supported too.</p>
</s2>
<s2 title="Namespace changes">
- <p>In order to follow strict rules for the namespace handling, some transformers
- and generators changed their namespace, so if you use any of these components
- make sure to change the namespaces.</p>
+ <p>
+ In order have more consistent namespaces, some transformers
+ and generators (listed below) use new namespaces. If you use any of these
components, you will
+ need to use the new namespaces.
+ </p>
<s3 title="Request Generator">
- <p>RequestGenerator changed namespace from
http://xml.apache.org/cocoon/requestgenerator/2.0 to
- http://apache.org/cocoon/request/2.0.
+ <p>RequestGenerator changed its namespace from
http://xml.apache.org/cocoon/requestgenerator/2.0 to
+ http://apache.org/cocoon/request/2.0.
</p>
</s3>
<s3 title="I18nTransformer">
- <p>The I18nTransformer changed its namespace from
- http://apache.org/cocoon/i18n/2.0 to http://apache.org/cocoon/i18n/2.1</p>
- </s3>
- <s3 title="I18nTransformer">
- <p>The I18nTransformer changed its namespace from
+ <p>The I18nTransformer changed its namespace from
http://apache.org/cocoon/i18n/2.0 to http://apache.org/cocoon/i18n/2.1</p>
</s3>
</s2>
</s1>
- <s1 title="Recompiling Own Code">
- <p>Due to some changes in the logging of Cocoon components, for example own
generators,
- transformers or actions, code compiled for Cocoon 2.0.x will not run using
- Cocoon 2.1.</p>
- <p>In order to get your own components running, you only have to recompile your
code
- and then everything should work fine.</p>
+ <s1 title="Changes in logging interfaces require recompilation">
+ <p>
+ Due to some interface changes in the Cocoon logging components, custom java
+ components (generators,transformers or actions for example) compiled for
Cocoon 2.0.x will not run
+ under Cocoon 2.1 unless recompiled.</p>
</s1>
<s1 title="Components">
<p>
- The Cocoon architecture has had some significant changes. However, great care
has been
- taken that all changes are in a compatible way. This effort has been successful
except
+ The Cocoon architecture has changed significantly. However, great care has been
+ taken to preserve backwards compatibility.
+ This effort has been successful except for
one change which shouldn't affect anybody (see below).
</p>
- <s2 title="Source Resolving">
- <p>Under Cocoon 2.0.x, the SourceResolver was not an Avalon component, so it
could not be
- looked up using a component manager. Under 2.1, the SourceResolver is now an
Avalon component
- and can be requested using
<em>cocoon.manager.lookup(SourceResolver.ROLE).</em></p>
+ <s2 title="Source Resolver">
+ <p>The SourceResolver is an now Avalon component
+ which can be accessed using
<em>cocoon.manager.lookup(SourceResolver.ROLE).</em></p>
</s2>
<s2 title="XSLT Processor">
+ <p>
+ The default XSLT processor has changed, and there are some issues related
to JDK 1.4
+ </p>
<s3 title="Xalan vs. XSLTC">
<p>The most important change is the switch from
<link href="http://xml.apache.org/xalan-j">Xalan</link> to
- <link href="http://xml.apache.org/xalan-j/xsltc_usage.html">XSLTC</link> as
default XSLT
- processor. It's configured in the root sitemap in the
<code>map:components</code> section.
- Simply search for <code>map:transformers</code>.</p>
- <p>XSLTC is used, because it shell be faster than Xalan, but it is maybe not
as stable as
- Xalan. Another little problem are the not very meaningful messages when the
transformation
- fails. Bruno provided already a
+ <link href="http://xml.apache.org/xalan-j/xsltc_usage.html">XSLTC</link> as
the default XSLT
+ processor (configured in the root sitemap in the <code>map:components</code>
section under
+ <code>map:transformers</code>).</p>
+ <p>We decided to switch to XSLTC for performance reasons, but it might not be
as stable as
+ Xalan, and XSLTC's error messages are currently not as good as Xalan's.
+ </p>
+ <p>
+ Bruno Dumon has queued a
<link
href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=20114">patch</link>
- to the Xalan team hoping it will be applied soon. At the moment if you only
get the error
- message like <em>"unable to create templates for stylesheet ..."</em>, simply
switch the
- processor to Xalan for this transformation (you don't need to change the
default processor)
- and you will hopefully get more expressive messages.</p>
+ for XSLTC, which improves error handling and will hopefully be applied soon.
For now, if you get error
+ messages like <em>"unable to create templates for stylesheet ..."</em>,
simply switch the
+ processor to Xalan in the <code>map:transform</code> element to get better
error reporting (hopefully).
+ You don't necessarily need to switch the default processor, it can be done
individually for the transformation
+ that gives errors.
+ </p>
</s3>
<s3 title="XML/XSLT with JDK 1.4">
- <p>Another important and really error and exception prone issue is the Xalan
and Xerces
+ <p>Another serious issue is the presence of the Xalan and Xerces
package in the JDK 1.4. For general information on this please read the
- <link href="http://xml.apache.org/xalan-j/faq.html#jdk14">Xalan FAQ</link>.
What I want to
- point out here, is that you have to update your libraries in the endorsed
dirs of the JDK
+ <link href="http://xml.apache.org/xalan-j/faq.html#jdk14">Xalan FAQ</link>
and our own
+ <link
href="http://wiki.cocoondev.org/Wiki.jsp?page=EndorsedLibsProblem">EndorsedLibsProblem</link>
+ wiki page.
+ </p>
+ <p>
+ Basically, you have to update your libraries in the endorsed dirs of the JDK
or the servlet containers with every new version of Xalan and Xerces
delivered with Cocoon.
- Sometimes an error occurs, because there are different versions of these
packages in the
+ Strange errors can occur if you have different versions of these packages in
the
classpath (independent of those in the JDK).
</p>
</s3>
</s2>
<s2 title="XML Parser">
- <p>The XML parser has also been moved to Excalibur.
- In the cocoon.xconf the hint name has therefore changed from <em>parser</em> to
- <em>xml-parser</em>. The configuration has not changed, so if you want to
- manually update swap the hint names.</p>
- <p>From within your source code you should not lookup the
+ <p>The XML parser component has been moved to Excalibur.
+ In cocoon.xconf, the hint name has therefore changed from <em>parser</em> to
+ <em>xml-parser</em>. The configuration has not changed, so changing the hint
+ names is sufficent.</p>
+ <p>Java code should not use
<em>org.apache.cocoon.components.parser.Parser.ROLE</em> anymore; use
<em>org.apache.excalibur.xml.sax.SAXParser.ROLE</em> instead.
</p>
</s2>
<s2 title="XML Entity Resolver">
- <p>The resolver used for resolving XML entities has also been moved to
Excalibur.
- In the cocoon.xconf the hint name has therefore changed from <em>resolver</em>
to
- <em>entity-resolver</em>. The configuration has not changed, so if you want to
- manually update swap the hint names and the implementation.</p>
- <p>From within your source code you should not lookup the
+ <p>Similarly, the XML entity resolver component has been moved to Excalibur.
+ In cocoon.xconf the hint name has therefore changed from <em>resolver</em> to
+ <em>entity-resolver</em>. The configuration has not changed, so changing the
hint
+ names is sufficent.</p>
+ <p>Java code should not use
<em>org.apache.cocoon.components.resolver.Resolver.ROLE</em> anymore; use
<em>org.apache.excalibur.xml.EntityResolver.ROLE</em> instead.
</p>
</s2>
<s2 title="Stores">
- <p>The Store and StoreJanitor components and implementations have moved to
+ <p>The Store and StoreJanitor components and implementations have been moved to
Avalon Excalibur.</p>
<p>TODO:Changes in cocoon.xconf...</p>
- <p>In general the packages changed from org.apache.cocoon.components.store
- to org.apache.excalibur.store (resp. org.apache.excalibur.store.impl). So
- if you have custom java code using this components, you have to change
+ <p>In general the package names changed from
<em>org.apache.cocoon.components.store</em>
+ to <em>org.apache.excalibur.store</em> (and
<em>org.apache.excalibur.store.impl</em>). So
+ if you have custom java code using these components, you have to change
your imports.</p>
- <p>The roles PERSISTENT_CACHE and TRANSIENT_CACHE have been renamed to
- PERSISTENT_STORE and TRANSIENT_STORE. The hold() method has been removed
+ <p>The roles <em>PERSISTENT_CACHE</em> and <em>TRANSIENT_CACHE</em> have been
renamed to
+ <em>PERSISTENT_STORE</em> and <em>TRANSIENT_STORE</em>. The hold() method
has been removed
from the Store interface.</p>
</s2>
<s2 title="SAXConnectors, Stream and Event Pipeline">
<p>This is the only real incompatible change (But don't panic, this will
- not affect you, well at least only a little bit :). The internal
architecture of Cocoon
- has changed. In the older version, the processing pipeline - constructed by
+ not affect you, or maybe just a little bit..).
+ </p>
+ <p>
+ The internal architecture of Cocoon
+ has changed: previously, the processing pipeline - consisting of
a generator, the transformers and a serializer - was represented by two
components,
- called stream and event pipeline.</p>
+ called <em>stream</em> and <em>event pipeline</em>.</p>
<p>For a simpler architecture, enhanced functionality and improved performance,
- these components have been combined into one: the processing pipeline.
- The very rarely used feature of SAXConnectors has been removed,
+ these components have been combined into one: the <em>processing
pipeline</em>.
+ The <em>SAXConnectors</em>, which were rarely used, have been removed
to avoid overcomponentization.</p>
- <p>In addition the map:pipeline element of the sitemap has gained more meaning
- as it is now possible to configure each map:pipeline section in the sitemap
- differently. So there can be one section using caching, another one not
- caching at all and a third one using a different caching implementation etc.
+ <s3 title="Individual configuration of pipelines">
+ <p>The sitemap now provides individual configuration of
<code>map:pipeline</code> sections.
+ You can now define one pipeline using caching, another one not using
+ caching at all and a third one using a different caching implementation, for
example.
</p>
- <s3 title="Changed Configuration">
+ </s3>
+ <s3 title="Pipelines configuration in the sitemap">
<p>
- The configuration of the pipelines has moved from the cocoon.xconf to the
sitemap.
- So, for updating you have to remove the "event-pipeline" and
"stream-pipeline" section
- from your cocoon.xconf and add the map:pipes section to the map:components
section
- in your sitemap. You can find the pipelines components definition in the
sample
- sitemap of Cocoon. Here is an example:
+ The configuration of the pipelines has moved from cocoon.xconf to the sitemap.
+ To update your installation, you have to remove the "event-pipeline" and
"stream-pipeline" section
+ from your cocoon.xconf and add the <code>map:pipes</code> section to the
<code>map:components</code> section
+ of your sitemap. You can find the pipelines components definition in the
sample
+ main sitemap of Cocoon. Here is an example:
</p>
<source><![CDATA[
<map:sitemap>
<map:components>
...
<map:pipes default="caching">
- <map:pipe name="caching"
+ <map:pipe name="caching"
src="org.apache.cocoon.components.pipeline.impl.CachingProcessingPipeline"/>
- <map:pipe name="noncaching"
+ <map:pipe name="noncaching"
src="org.apache.cocoon.components.pipeline.impl.NonCachingProcessingPipeline"/>
</map:pipes>
</map:components>
...
</map:sitemap>
]]></source>
- <p>The configuration is similar to the configuration of other sitemap
components, like
- generators or actions. You can choose these different implementations of
pipelines
- in the map:pipeline section by specifying the type attribute:
+ <p>You can choose these different pipeline implementations
+ in the <code>map:pipeline</code> section by specifying their
<code>type</code> attribute:
</p>
<source><![CDATA[
<map:sitemap>
@@ -188,21 +201,20 @@
</map:pipelines>
</map:sitemap>
]]></source>
- <p>So again, this is similar to choosing the type of the generator or any
other sitemap
- component. If you omit the type attribute the default configuration from the
components
+ <p>This is similar to choosing the type of a generator or any other sitemap
+ component. If the type attribute is omitted, the default configuration from
the <code>map:components</code>
section is used.
</p>
- <p>The SAXConnectors have been removed, so if you manually upgrade you have to
remove
- the <em>sax-connectors</em> configuration from the
<em>cocoon.xconf</em>.</p>
- <p>So you see, although this is an incompatible change in the Java code, you
have only
+ <p>The SAXConnectors have been removed, so if you upgrade manually you have to
remove
+ the <em>sax-connectors</em> configuration from <em>cocoon.xconf</em>.</p>
+ <p>So it's not that bad, despite incompatible changes in the Cocoon code there
is
little to do to update your Cocoon installation.</p>
</s3>
</s2>
<s2 title="File Upload">
- <p>File upload class name changed from
org.apache.cocoon.components.request.multipart.FilePart to
- org.apache.cocoon.servlet.multipart.Part.
- File upload method names changed from FilePart.getFilePath() to
- Part.getUploadName()
+ <p>The class name for file upload has changed from
<em>org.apache.cocoon.components.request.multipart.FilePart</em> to
+ <em>org.apache.cocoon.servlet.multipart.Part</em>, and the
<em>getFilePath()</em> has been renamed
+ <em>Part.getUploadName().</em>
</p>
</s2>
</s1>