A document has been updated: http://cocoon.zones.apache.org/daisy/documentation/1420.html
Document ID: 1420 Branch: main Language: default Name: New in 2.2 (unchanged) Document Type: Cocoon Document (unchanged) Updated on: 8/27/08 12:24:22 PM Updated by: David Legg A new version has been created, state: draft Parts ===== Content ------- This part has been updated. Mime type: text/xml (unchanged) File name: (unchanged) Size: 5551 bytes (previous version: 5613 bytes) Content diff: <html> <body> <p>While developing Cocoon 2.2 the main goal was simplicity, modularity and --- consistent configuration. This page is a summary of all the new features and +++ consistent configuration. This page is a summary of the new features and improvements.</p> <h1>General</h1> (13 equal lines skipped) <li>An optional additional validation of sitemaps based on an XML schema definition is configureable.</li> <li>Cocoon 2.2 uses Comons Logging instead of Avalon Logkit as logging interface --- and Log4j as logging implementation. (<em>Also see the 'Incompatibles changes' --- section of this document.</em>)</li> +++ and Log4j as logging implementation. (<em>See Also the 'Incompatible changes' +++ section below.</em>)</li> </ul> <h1>Modularity</h1> (13 equal lines skipped) <h1>Configuration and Deployment</h1> <ul> --- <li>Cocoon 2.1 was configured at build time. This means that you have to build --- Cocoon 2.1 yourself in order to get the Cocoon that you need for your --- application. There was no simple upgrade path from one minor/patch release to --- the next. Cocoon 2.2 expands the meaning of blocks. Blocks have become binary --- deployment units which follow a particular directory structure and can provide --- Servlet-Services, Java services, Java classes and resources and Cocoon specific --- files (templates, stylesheets, etc.).</li> +++ <li>Cocoon 2.1 had to be configured at build time. This meant you had to build +++ Cocoon 2.1 yourself in order to get the kind of Cocoon needed by your +++ application. There was no simple upgrade path from one minor release to the +++ next. Cocoon 2.2 overcomes this problem by expanding the meaning of blocks. +++ Blocks have become binary deployment units which follow a particular directory +++ structure and can provide Servlet-Services, Java services, Java classes and +++ resources and Cocoon specific files (templates, stylesheets, etc.).</li> <li>Cocoon blocks express their dependencies using project object model descriptors (POM 4.0) defined by the Maven project. This makes it easy to build --- Cocoon 2.2 based projects with Maven 2 though it's no hard requirement.</li> --- <li>Cocoon 2.2 provides a consistent way of configuration based on the Cocoon --- Spring Configurator - a new Cocoon sub project. It supports the configuration of --- components based on the Spring property placeholder configurer and the property --- overrider configurer and is aware of running modes, i.e. you can provide special --- properties for different environments (e.g. development, test, production).</li> +++ Cocoon 2.2 based projects with Maven 2 (though it's not a requirement).</li> +++ <li>Cocoon 2.2 provides a consistent way to configure your application based on +++ the Cocoon Spring Configurator - a new Cocoon sub project. It supports the +++ configuration of components based on the Spring property placeholder configurer +++ and the property overrider configurer and is aware of running modes, i.e. you +++ can provide special properties for different environments (e.g. development, +++ test, production).</li> <li>Cocoon 2.2 uses Jakarta Commons Logging 1.1 as logging framework and Log4j as default implementation.</li> <li>The number of dependencies of a minimal Cocoon application (sitemaps, --- pipelines, XML templates) was reduced and together they amount to less than +++ pipelines, XML templates) has been reduced and together they amount to less than 10MB (incl. Xalan and Xerces libs!).</li> </ul> <h1>Tools</h1> +++ <p>The Cocoon Maven 2 plugin makes it very easy to use Cocoon together with +++ Maven 2 as a build system. The main features are:</p> +++ <ul> --- <li>The Cocoon Maven 2 plugin makes is very easy to use Cocoon together with --- Maven 2 as build system. The main features are</li> --- <ul> --- <li>starting a block as web application (+ support for the automatical reload of --- Java classes and all other resources),</li> --- <li>rewritting web.xml to weave in a shielding classloader that reverses the +++ <li>The ability to start a block as a web application (+ support for the +++ automatic reload of Java classes and all other resources),</li> +++ <li>Rewriting web.xml to weave in a shielding classloader that reverses the classloading hierarchy in order to avoid classloader problems (e.g. with XML libraries),</li> --- <li>a block can supply xpatch files to patch the <tt>web.xml </tt>of the +++ <li>A block can supply xpatch files to patch the <tt>web.xml </tt>of the destination web application.</li> --- </ul> --- <li>Schema files for sitemaps.</li> </ul> (8 equal lines skipped) <h1>Migrating 2.1 components</h1> <p>When you have avalon based components that you want to use with the new --- spring configuration system make sure you are configure them right. Avalon based --- components were implementing an interface to e.g. be Threadsafe. In Spring you +++ spring configuration system, make sure you configure them correctly. Avalon +++ based components implementing an interface to e.g. be Threadsafe. In Spring you will need to configure the scope (default is singletone). If you see a lot of NPE in concurrency tests then you would need to use the prototype scope as shown below.</p> --- --- <pre/> --- <pre><beans> <bean id="dispatcher" scope="prototype" name="org.apache.cocoon.transformation.Transformer/dispatcher" (2 equal lines skipped) </bean> </beans></pre> --- --- <pre/> --- <h1>Incompatible changes</h1> <ul> --- <li>All Cocoon components don't implement the Avalon Logkit logging interfaces +++ <li>Cocoon components no longer implement the Avalon Logkit logging interface (<tt><a href="http://excalibur.apache.org/apidocs/org/apache/avalon/framework/logger/Logger.html">org.apache.avalon.framework.logger.Logger</a></tt> --- ) anymore but Commons logging instead. This change also makes it possible to --- configure components via Spring configuration files. If you extend one of those --- components (e.g. +++ ). Instead they use Commons logging. This change makes it possible to configure +++ components via Spring configuration files. If you extend a component (e.g. <a href="http://cocoon.apache.org/2.1/apidocs/org/apache/cocoon/transformation/AbstractSAXTransformer.html">AbstractSAXTransformer</a>), --- you have to change the logger implementation and to recompile your classes. We --- are sorry but there is no backwards compatible way in doing this move from --- Avalon Logkit to Commons Logging.</li> +++ you have to change the logger implementation and recompile your classes. There +++ is, unfortunately, no backwards compatible way of doing this.</li> </ul> </body> (1 equal lines skipped)