All,

please keep in mind that IBM's JDBC driver for DB2 is a type 2 driver. Iow, it
relies on native code installed somewhere in your filesystem. Our experience
here indicates that because of this, you cannot simply put the relevant JAR
files (runtime.zip, db2java.zip and sqlj.zip) into the WEB-INF/lib directory.

In our case, we had to

a) copy these files into Tomcat's common/lib directory to avoid issues with JNI
when the web app is being reloaded (the issue here being that during the
lifetime of a JVM, any native libraries used by your code must be loaded once
only).
b) rename the extension of these files from ZIP to JAR (I think this is a Tomcat
4.0.1 issue that might have been resolved with newer releases).
c) set PATH, LD_LIBRARY_PATH and other environment variables before starting
Tomcat.

I hope this clarifies a couple of issues..

Thanks
Werner

Kelly Cole wrote:

> Christian,
>
> Thanks for the quick response... I am using Cocoon 2.0.2, Tomcat 4.0.1 and
> JDK 1.3.1_03.
>
> Now that I got the driver in the right place... and modified cocoon.xconf to
> include a  logger attribute:
>                 <jdbc logger="core.datasources.TDB2" name="TDB2">
>                         <pool-controller min="1" max="10"/>
>                         <dburl>jdbc:db2:tdb2</dburl>
>                         <user>jftl206</user>
>                         <password>debbie12</password>
>                 </jdbc>
>
> I also simplified my request query to:
>         <page xmlns:sql="http://apache.org/cocoon/SQL/2.0";>
>                 <title>Hello</title>
>                 <content>
>                         <para>This is my first Cocoon2 page filled with sql
> data!</para>
>                         <execute-query
> xmlns="http://apache.org/cocoon/SQL/2.0";>
>                                 <query>select sys_grp_no, sys_grp_name from
> testdb2.sysgrps</query>
>                         </execute-query>
>                 </content>
>         </page>
>
> I get a bit further. I get this error message (sorry to have included so
> much, I wasn't sure what would be the interesting part):
> exception
>
> javax.servlet.ServletException: Servlet execution threw an exception
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
> FilterChain.java:269)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
> ain.java:193)
>         at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
> va:243)
>         at
> org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
> 66)
>         at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
>         at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
>         at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
> va:201)
>         at
> org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
> 66)
>         at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
>         at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
>         at
> org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2344)
>         at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164
> )
>         at
> org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
> 66)
>         at
> org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.
> java:170)
>         at
> org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
> 64)
>         at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170
> )
>         at
> org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
> 64)
>         at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:462)
>         at
> org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
> 64)
>         at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
>         at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
>         at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
> :163)
>         at
> org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
> 66)
>         at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
>         at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
>         at
> org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:
> 1011)
>         at
> org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1106
> )
>         at java.lang.Thread.run(Thread.java:479)
>
> root cause
>
> java.lang.AbstractMethodError
>         at
> org.apache.avalon.excalibur.datasource.JdbcConnection.prepareStatement(JdbcC
> onnection.java:172)
>         at
> org.apache.cocoon.transformation.SQLTransformer$Query.execute(SQLTransformer
> .java:1014)
>         at
> org.apache.cocoon.transformation.SQLTransformer.executeQuery(SQLTransformer.
> java:271)
>         at
> org.apache.cocoon.transformation.SQLTransformer.endExecuteQueryElement(SQLTr
> ansformer.java:417)
>         at
> org.apache.cocoon.transformation.SQLTransformer.endElement(SQLTransformer.ja
> va:702)
>         at
> org.apache.cocoon.components.sax.XMLTeePipe.endElement(XMLTeePipe.java:124)
>         at
> org.apache.xerces.parsers.AbstractSAXParser.endElement(AbstractSAXParser.jav
> a:568)
>         at
> org.apache.xerces.impl.XMLNamespaceBinder.handleEndElement(XMLNamespaceBinde
> r.java:853)
>         at
> org.apache.xerces.impl.XMLNamespaceBinder.endElement(XMLNamespaceBinder.java
> :643)
>         at
> org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDValidator.
> java:3006)
>         at
> org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator.java:9
> 30)
>         at
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.handleEndElement(XMLDo
> cumentFragmentScannerImpl.java:1145)
>         at
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocu
> mentFragmentScannerImpl.java:988)
>         at
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatc
> her.dispatch(XMLDocumentFragmentScannerImpl.java:1446)
>         at
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocume
> ntFragmentScannerImpl.java:333)
>         at
> org.apache.xerces.parsers.StandardParserConfiguration.parse(StandardParserCo
> nfiguration.java:525)
>         at
> org.apache.xerces.parsers.StandardParserConfiguration.parse(StandardParserCo
> nfiguration.java:581)
>         at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:147)
>         at
> org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:115
> 7)
>         at
> org.apache.avalon.excalibur.xml.JaxpParser.parse(JaxpParser.java:241)
>         at
> org.apache.cocoon.components.source.AbstractStreamSource.toSAX(AbstractStrea
> mSource.java:206)
>         at
> org.apache.cocoon.generation.FileGenerator.generate(FileGenerator.java:142)
>         at
> org.apache.cocoon.components.pipeline.CachingEventPipeline.process(CachingEv
> entPipeline.java:251)
>         at
> org.apache.cocoon.components.pipeline.CachingStreamPipeline.process(CachingS
> treamPipeline.java:399)
>         at
> org.apache.cocoon.www.sitemap_xmap.matchN109BB(C:\jakarta-tomcat-4.0.1\work\
> localhost\cocoon\cocoon-files\org/apache/cocoon/www\sitemap_xmap.java:12044)
>         at
> org.apache.cocoon.www.sitemap_xmap.process(C:\jakarta-tomcat-4.0.1\work\loca
> lhost\cocoon\cocoon-files\org/apache/cocoon/www\sitemap_xmap.java:3815)
>         at
> org.apache.cocoon.www.sitemap_xmap.process(C:\jakarta-tomcat-4.0.1\work\loca
> lhost\cocoon\cocoon-files\org/apache/cocoon/www\sitemap_xmap.java:3097)
>         at org.apache.cocoon.sitemap.Handler.process(Handler.java:222)
>         at org.apache.cocoon.sitemap.Manager.invoke(Manager.java:179)
>         at
> org.apache.cocoon.sitemap.SitemapManager.process(SitemapManager.java:154)
>         at org.apache.cocoon.Cocoon.process(Cocoon.java:575)
>         at
> org.apache.cocoon.servlet.CocoonServlet.service(CocoonServlet.java:998)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
> FilterChain.java:247)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
> ain.java:193)
>         at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
> va:243)
>         at
> org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
> 66)
>         at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
>         at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
>         at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
> va:201)
>         at
> org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
> 66)
>         at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
>         at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
>         at
> org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2344)
>         at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164
> )
>         at
> org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
> 66)
>         at
> org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.
> java:170)
>         at
> org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
> 64)
>         at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170
> )
>         at
> org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
> 64)
>         at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:462)
>         at
> org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
> 64)
>         at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
>         at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
>         at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
> :163)
>         at
> org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
> 66)
>         at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
>         at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
>         at
> org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:
> 1011)
>         at
> org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1106
> )
>         at java.lang.Thread.run(Thread.java:479)
>
> Here's an extract from the right hand side of the end of the sitemap.log:
> SQLTransformer: CONNECTION: TDB2
> SQLTransformer: DOC-ELEMENT: rowset
> SQLTransformer: ROW-ELEMENT: row
> SQLTransformer: NS-URI: http://apache.org/cocoon/SQL/2.0
> SQLTransformer: NS-PREFIX:
> /TraxTransformer: Using stylesheet:
> 'file:/C:/jakarta-tomcat-4.0.1/webapps/cocoon/stylesheets/simple-sql2html.xs
> l' in org.apache.cocoon.transformation.TraxTransformer@3b4b1e, last
> modified: 1021329582543
> FileGenerator: processing file dev/sql-page.xml
> FileGenerator: file resolved to
> file:/C:/jakarta-tomcat-4.0.1/webapps/cocoon/dev/sql-page.xml
> /SQLTransformer: PUBLIC ID: null
> /SQLTransformer: SYSTEM ID:
> file:/C:/jakarta-tomcat-4.0.1/webapps/cocoon/dev/sql-page.xml
> /SQLTransformer: RECEIVED CHARACTERS:
> /SQLTransformer: RECEIVED CHARACTERS: Hello
> /SQLTransformer: RECEIVED CHARACTERS:
> /SQLTransformer: RECEIVED CHARACTERS:
> /SQLTransformer: RECEIVED CHARACTERS: This is my first Cocoon2 page filled
> with sql data!
> /SQLTransformer: RECEIVED CHARACTERS:
> /SQLTransformer: RECEIVED START ELEMENT execute-query
> /SQLTransformer: RECEIVED CHARACTERS:
> /SQLTransformer: RECEIVED START ELEMENT query
> /SQLTransformer: RECEIVED CHARACTERS: select sys_grp_no, sys_grp_name from
> testdb2.sysgrps
> /SQLTransformer: RECEIVED END ELEMENT
> query(http://apache.org/cocoon/SQL/2.0)
> /SQLTransformer: QUERY IS "select sys_grp_no, sys_grp_name from
> testdb2.sysgrps"
> /SQLTransformer: RECEIVED CHARACTERS:
> /SQLTransformer: RECEIVED END ELEMENT
> execute-query(http://apache.org/cocoon/SQL/2.0)
> /SQLTransformer: SQLTransformer executing query nr 0
> /SQLTransformer$Query: EXECUTING select sys_grp_no, sys_grp_name from
> testdb2.sysgrps
>
> And finally, here's a snippet of the core.log ("with the
> [core.datasources.TDB2](/cocoon/db/test.html) HttpProcessor[8080][4]/"
> trimmed off):
> LogKitLogger: Marking 0 objects as old in pool.
> LogKitLogger: JdbcConnection object created
> LogKitLogger: Created a new
> org.apache.avalon.excalibur.datasource.JdbcConnection from the object
> factory.
> LogKitLogger: Got a org.apache.avalon.excalibur.datasource.JdbcConnection
> from the pool.
> LogKitLogger: Put a org.apache.avalon.excalibur.datasource.JdbcConnection
> back into the pool.
>
> Thanks a lot for your help, and sorry to bombard everyone with such a large
> email!
> Kelly
>
> -----Original Message-----
> From: Christian Haul [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, May 16, 2002 2:31 PM
> To: [EMAIL PROTECTED]
> Subject: Re: Connection problem to DB2
>
> On 16.May.2002 -- 12:50 PM, Kelly Cole wrote:
> > I am a new user to Cocoon, just trying to test drive it... One of the
> things
> > I would like to do is to connect to our database (db2 on os390 connecting
> > via DB2/Connect). Unfortunately, I get this entry in the sitemap.log:
>
> Things you didn't tell us:
> where is your driver located? (should be WEB-INF/lib)
>
> which versions do you use (Cocoon, JDK, Tomcat)?
> (should be 2.0.2 or (cvs) 2.0.3 or (cvs) 2.1-dev,
> 1.3.1_02, and 4.0.1, expect problems with other
> versions, solutions were posted oon this list)
>
> Try to find the portion in core.log where the
> connection pool is initialized. You need to
> associate a logger with the connection for that
> (a logger attribute like for the HSQL connection)
>
>         Chris.
>
> --
> C h r i s t i a n       H a u l
> [EMAIL PROTECTED]
>     fingerprint: 99B0 1D9D 7919 644A 4837  7D73 FEF9 6856 335A 9E08
>
> ---------------------------------------------------------------------
> Please check that your question has not already been answered in the
> FAQ before posting. <http://xml.apache.org/cocoon/faqs.html>
>
> To unsubscribe, e-mail: <[EMAIL PROTECTED]>
> For additional commands, e-mail: <[EMAIL PROTECTED]>
>
> ---------------------------------------------------------------------
> Please check that your question has not already been answered in the
> FAQ before posting. <http://xml.apache.org/cocoon/faqs.html>
>
> To unsubscribe, e-mail: <[EMAIL PROTECTED]>
> For additional commands, e-mail: <[EMAIL PROTECTED]>


---------------------------------------------------------------------
Please check that your question has not already been answered in the
FAQ before posting. <http://xml.apache.org/cocoon/faqs.html>

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

Reply via email to