Finally succeeded in getting Cocoon to run successfully within Websphere 5.1 by carrying out the following steps:

1) Setting the classloader mode to PARENT_LAST for both the EAR and WAR files
2) Using ParanoidCocoonServlet by replacing:
 <servlet-class>org.apache.cocoon.servlet.CocoonServlet</servlet-class> with <servlet-class>org.apache.cocoon.servlet.ParanoidCocoonServlet</servlet-class> in the web.xml (this step might be optional)
3) Explicitly setting the logging to use the Apache commons logging supplied with Cocoon. This was a major stumbling block as a ClassCastException was getting thrown due to incompatibility between websphere's own TrLogFactory and that in the Apache commons api. To overcome this problem we referred to an IBM document detailing how to integrate Jakarta logging within Websphere 5 found at  - http://www-1.ibm.com/support/docview.wss?uid=swg27004610&aid=1
The solution we tried, as detailed in the document, was to specify the fully-qualified class name of the LogFactory implementation in file org.apache.commons.logging.LogFactory within the EAR file's �/META-INF/services directory. This involved creating a file org.apache.commons.logging.LogFactory and insert into it the name of the JCL LogFactory implementation class, without quotes. For example, to utilize the Log4j LogFactory insert the name: org.apache.commons.logging.impl.Log4jFactory.

Hope these instructions may be of use to others,

Will Durrant

Reply via email to