Return-Path: Delivered-To: apmail-xml-cocoon-users-archive@xml.apache.org Received: (qmail 67636 invoked by uid 500); 8 May 2002 18:03:19 -0000 Mailing-List: contact cocoon-users-help@xml.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: list-post: Reply-To: cocoon-users@xml.apache.org Delivered-To: mailing list cocoon-users@xml.apache.org Received: (qmail 67625 invoked from network); 8 May 2002 18:03:19 -0000 Content-Type: text/plain; charset="iso-8859-15" From: Lars Schmidt-Thieme To: Subject: patch for cocoon 2.1dev for JDK 1.4 (including database examples) Date: Wed, 8 May 2002 20:00:46 +0200 X-Mailer: KMail [version 1.3.2] MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Message-Id: X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N Hi, I finally managed to get the database examples in cocoon 2.1dev to work with jdk 1.4. A detailed description follows at the end of this mail; a html-version and a patched and ready-to-deploy war-archiv is available at http://viror.wiwi.uni-karlsruhe.de/cocoon21fix/ Any improvements welcome (especially hints how to get the portal up and running, too). Best regards Lars ----------------------------------------- Fix for cocoon-2.1-dev Intended setup: cocoon: 2.1-dev jdk: sun 1.4 tomcat: 4.0.4b2 os: linux (suse 7.3) Problem: Database examles do not run with jdk 1.4. Accessing e.g. the simple sql example leads to (tail -f webapps/cocoon/WEB-INF/logs/sitemap.log): DEBUG (2002-05-08) 17:52.13:178 [sitemap.transformer.sql](/cocoon/sql/sql-page) HttpProcessor[8080][4]/SQLTransformer$Query: SQLTransformer$Query: could not acquire a Connection -- waiting 5000 ms to try again. Patch: 1.- Get cocoon-2.1-dev (CVS snapshot xml-cocoon2_20020508103228.tar.gz). cd /opt/net tar xzf xml-cocoon2_20020508103228.tar.gz cd xml-cocoon export TOMCAT_HOME=/opt/net/jakarta-tomcat ./build.sh -Dinclude.webapp.libs=yes -Dinclude.scratchpad.libs=yes webapp 2.- Get avalon framework (jakarta-avalon-src.tar.gz), avalon logkit (jakarta-avalon-logkit-src.tar.gz), and avolon excalibur (jakarta-avalon-excalibur-src.tar.gz). Extract in a directory avalon, cd jakarta-avalon ./build.sh cd ../jakarta-logkit cd lib ln -s ../../jakarta-avalon/build/lib/avalon-framework.jar cd .. ./build.sh import-servlet-jar ./build.sh cd ../jakarta-avalon-excalibur ./build.sh jar tf avalon-excalibur.jar | grep datasource Now you should see org/apache/avalon/excalibur/datasource/Jdbc3Connection.class Note that this class is missing in the excalibur-jar shipped with cocoon (ISSUE 1). 3. - First patch of avalon excalibur: edit /opt/net/avalon/jakarta-avalon-excalibur/datasource/src/java/org/apache/avalon/excalibur/datasource/JdbcConnectionFactory.java and uncomment line 122 (carefully read lines 119-121): (ISSUE 2) System.out.println( "Unable to get specified connection class: " + e ); (catch clause in last constructor). ./build.sh clean ./build.sh 4. - Install new excalibur-jar and restart tomcat cd jakarta-tomcat ./bin/shutdown.sh killall -KILL java cp ../avalon/jakarta-avalon-excalibur/avalon-excalibur.jar webapps/cocoon/WEB-INF/lib/avalon-excalibur-20020506.jar ./bin/startup.sh In (tail -f logs/catalina.out): Logging Error: Could not set up Cocoon Logger, will use screen instead org.apache.avalon.framework.configuration.ConfigurationException: cannot find LogTargetFactory class org.apache.avalon.excalibur.logger.factory.ServletTargetFactory at org.apache.avalon.excalibur.logger.DefaultLogTargetFactoryManager.configure(DefaultLogTargetFactoryManager.java:111) 5. - Test cocoon Access http://localhost:8080/cocoon/ with your webbrowser This should work ; you should see the cocoon entry page. 6. - Test database example: Again, access the simple sql example leads. This leads to (sitemap.log): 2002-05-08 18:26:03 WARN (2002-05-08) 18:26.03:665 [core.dat] (/cocoon/sql/sql-page) HttpProcessor[8080][2]/LogKitLogger: Could not return Connection org.apache.avalon.excalibur.datasource.NoValidConnectionException: No valid JdbcConnection class available But now you can see in catalina.out, what happened: Unable to get specified connection class: java.sql.SQLException: Connection is broken: Connection refused Starting service Tomcat-Apache Apache Tomcat/4.0.4-b2 Server 1.6 is running Press [Ctrl]+[C] to abort The last two lines stem from the hsql database, that is used for the examples. As you can see, the excalibur JdbcConnectionFactory tries to connect to the database before the database is started - and fails - and never recovers (ISSUE 3). 7. - Second patch (hack) of avalon excalibur: edit /opt/net/avalon/jakarta-avalon-excalibur/datasource/src/java/org/apache/avalon/excalibur/datasource/JdbcConnectionFactory.java again and - make instance variable m_class non-final (line 30), private Class m_class; - add additional variable connectionClass (new line 35), private final String connectionClass; - factor out the database connection setup by inserting (as new lines 90-95): this.m_connectionClass = connectionClass; hackedInit(); } protected void hackedInit() { and replacing line 111 with String className = m_connectionClass; - call hackedInit if the init failed during startup (new lines 142, 143): if( null == this.m_class ) hackedInit(); 8. = 4. (dont forget killall java, otherwise hsql database may not be shut down correctly and you get an port already in use exception in catalina.out) (You still see the same output as in 6. in the logs, but now the connection initialization will be tried a second time, so it does not matter.) 9. = 5. but now the database example should work (it does for me). The following examples are running on my machine: - multimedia hello world: all - docs: all (including the tutorial). - more samples / static content: all (deli is disabled) / server pages / hello xsp: all / jsp : none (404 page not found) / xsp java: all (including esql) / xsp javascript: all / xsp python: none (404 page not found; I dont have jphython installed). / dynamic content / internationalization: none (404) / dynamic content: all but python (see before; now correct error message) / xscript and soap: seem to work (the stock price is -1, though). / database access: ALL !! / aggregation: all. / portal: front page yes, but login does not work java.lang.NullPointerException at org.apache.cocoon.webapps.session.xml.XMLUtil.getNodesFromPath(XMLUtil.java:870) (this error message has been described in an earlies message by someone else, already). / sources: all / web applications: all / legacy: all but regress and test-math (404) - system tools: all --------------------------------------------------------------------- Please check that your question has not already been answered in the FAQ before posting. To unsubscribe, e-mail: For additional commands, e-mail: