Infexions (WA) Pty LtdHope this is useful to anyone Finally got around to attempt to make xindice / dbxml work with C2. Checked the FAQ's and archive and ended up very confused. Anyway I kind of summarised all the advice / postings I found and got it to work [in the end].
Here is a rundown on what I did / modified to cocoon to get it to work. The environment Win2K, Cocoon 2.0.1, Tomcat 4.0.1 and xindice-1.0rc1 Assumption: xindice is running on localhost:4080 and the addressbook example db has been created. There are apparently two ways of doing this: 1. using a generator 2. using a source-handler In a recent posting it was noted however that the generator will be deprecated shortly, so first I got rid of the bits in sitemap.xmap that deal with the generator: First comment out this section (it's near the top of sitemap.xmap) <map:generator name="xmldb" src="org.apache.cocoon.generation.XMLDBGenerator" logger="sitemap.generator.xmldb"> <driver>org.dbxml.client.xmldb.DatabaseImpl</driver> <base>xmldb:dbxml:///db/</base> </map:generator> <map:generator name="xmldbcollection" src="org.apache.cocoon.generation.XMLDBCollectionGenerator" logger="sitemap.generator.xmldbcollection"> <driver>org.dbxml.client.xmldb.DatabaseImpl</driver> <base>xmldb:dbxml:///db/</base> </map:generator> Next comment out these lines (near the end of sitemap.xmap): <map:match pattern="xmldb-generator/db/**/"> <map:generate type="xmldbcollection" src="/{1}"/> <map:serialize type="xml"/> </map:match> <map:match pattern="xmldb-generator/db/**"> <map:generate type="xmldb" src="/{1}"/> <map:serialize type="xml"/> </map:match> Now modify the remaining map:match entry: <map:match pattern="xmldb/**"> <map:match type="request-parameter" pattern="xpath"> <map:generate src="xmldb:dbxml://localhost:4080/{../1}#{1}"/> <map:serialize type="xml"/> </map:match> <map:generate src="xmldb:dbxml://localhost:4080/{1}"/> <map:serialize type="xml"/> </map:match> so it looks like this: <map:match pattern="xmldb/**"> <map:match type="request-parameter" pattern="xpath"> <map:generate src="xmldb:xindice://localhost:4080/db/{../1}#{1}"/> <map:serialize type="xml"/> </map:match> <map:generate src="xmldb:xindice://localhost:4080/db/{1}"/> <map:serialize type="xml"/> </map:match> Replace: xmldb:dbxml://localhost:4080/ With: xmldb:xindice://localhost:4080/db/ Untill I added the "db/" at the end I was getting an error saying a file named: XXXX_bootstrap.ior not found. Where XXXX is the collection name used in the request. In fact if you look in %XINDICE_HOME%/docs there is only one .ior file and it's called db_bootstrap.ior. Next to cocoon.xconf. Modify the following lines: <source-handler logger="core.source-handler"> <!-- xmldb pseudo protocol --> <protocol name="xmldb" class="org.apache.cocoon.components.source.XMLDBSourceFactory"> <!-- dbXML driver --> <driver type="dbxml" class="org.dbxml.client.xmldb.DatabaseImpl"/> <!-- Add here other XML:DB compliant databases drivers --> </protocol> </source-handler> so they look like this: <source-handler logger="core.source-handler"> <!-- xmldb pseudo protocol --> <protocol name="xmldb" class="org.apache.cocoon.components.source.XMLDBSourceFactory"> <!-- xindice driver --> <driver type="xindice" class="org.apache.xindice.client.xmldb.DatabaseImpl"/> <!-- Add here other XML:DB compliant databases drivers --> </protocol> </source-handler> Copy xindice.jar into the cocoon\WEB-INF\lib directory. Start xindice, if it isn't running yet. Start Tomcat. And try: http://localhost:8080/cocoon/xmldb/addressbook/ The result looks something like this [I have three entries in the addressbook db]: <?xml version="1.0" encoding="UTF-8"?> <collection:collections resources="3" collections="0" xmlns:collection="http://apache.org/cocoon/xmldb/1.0"> <collection:resource name="0100007f1f9fdabb000000ec2b2a4110"/> <collection:resource name="0100007f1f9fdabb000000ec2b30c130"/> <collection:resource name="0100007f1f9fdabb000000ec2b8cabd3"/> </collection:collections> To see all the entries in you addressbook db try: http://localhost:8080/cocoon/xmldb/addressbook/?xpath=//person Although all this is working sweet, I do get this error in error.log: ERROR (2002-02-22) 13:51.08:468 [sitemap.generator.velocity] (/cocoon/xmldb/addressbook/) HttpProcessor[82][4]/VelocityGenerator: ResourceManager : unable to find resource 'VM_global_library.vm' in any resource loader. ERROR (2002-02-22) 13:51.08:578 [sitemap.generator.velocity] (/cocoon/xmldb/addressbook/) HttpProcessor[82][4]/VelocityGenerator: ResourceManager : unable to find resource 'VM_global_library.vm' in any resource loader. Always 2 entries like this but all seems to running fine. I have written this in StyleBook format. You can download it from: http://members.iinet.net.au/~xions/dev/xindice.zip Unzip it to %PATH_TO_SERVLET_ENGINE%\webapps\cocoon\documentation\xdocs Access it via: http://localhost:8080/cocoon/documents/xindice/index.html Inflexions (WA) Pty Ltd to.... body Perry Molendijk Inflexions (WA) Pty Ltd PO Box 57 Inglewood WA 6052 Australia Tel: (+61) 0401 677 453 IMPORTANT INFORMATION: This message and any files transmitted with it are confidential and should be read only by those persons to whom it is addressed. If you have received this message in error, please notify us immediately by way of reply. Please also destroy and delete the message from your computer. Any unauthorised form of reproduction of this message is strictly prohibited. It is the duty of the recipient to virus scan and otherwise test the information provided before loading onto any computer system. Inflexions (WA) Pty Ltd does not warrant that the information is free of a virus or any other defect or error. Inflexions (WA) Pty Ltd is not liable for the proper and complete transmission of the information contained in this communication, nor for any delay in its receipt. Any views expressed in this message are those of the individual sender, except where the sender specifically states them to be the views of Inflexions (WA) Pty Ltd. --------------------------------------------------------------------- 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]>