cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Christofer Dutz" <>
Subject AW: AW: eXist xmldb
Date Wed, 07 Jun 2006 06:17:47 GMT
Hi All,


As I mentioned, my version only uses local access, so configuring all these additional servlets
is not necessary and the additional jars aren’t needed. 

One thing I remembered thou:I think the Driver automatically initializes the database if it
can’t find an instance … had quite some problems with this. 

Then it would be better to put the config-file in the place Abbas recommended. It will then
find it automatically.


Regards, chris






Von: Abbas Mousavi [] 
Gesendet: Mittwoch, 7. Juni 2006 01:19
Betreff: Re: AW: eXist xmldb


Hi Peter and Chris


I think that I should add something to the chris mail:

Mainly - as I know - there is two document for Installing exist with cocoon on tomcat one
at Cocoon Wiki and One at eXist Wiki:


I prefer the document at eXist site, as Chris said, the document says that you should copy


* commons-pool-1.1.jar

    * xmlrpc-1.2-patched.jar

    * xmldb.jar

    * exist.jar

    * exist-optional.jar


and optionaly

    * castor-0.9.5-xml.jar

    * commons-fileupload-1.0.jar

    * isorelax.jar

    * jgroups-all.jar

    * xsdlib.jar

    * msv.jar


from cocoon distribution to cocoon/WEB-INF/lib, (the exact list of required jars depends on
your needs.) then you should remove


    * xmldb-api-20030701.jar

    * xmldb-common-20030701.jar

    * xmldb-xupdate-20040205.jar


>From cocoon/WEB-INF/lib.


Next, copy the central configuration file for exists from $EXIST_HOME/webapp/WEB-INF/conf.xml
to cocoon/WEB-INF.

If you need to use the SOAP service, you should also copy $EXIST_HOME/webapp/WEB-INF/server-config.wsdd
to cocoon/WEB-INF.

In order to move the data in the eXist database, copy the contents of $EXIST_HOME/webapp/WEB-INF/data/
to cocoon/WEB-INF/data/. 


Edit cocoon/WEB-INF/web.xml. At the top, before the Cocoon servlet is configured, add the
following lines:

You can eliminate the servlets that you don’t need them, You may skip the AxisServlet,
AdminServlet, WebDAVServlet or RpcServlet (needed if you want to access the database instance
from a remote client app), but you definitely need EXistServlet here


<!-- RpcServlet provides XML-RPC access to eXist -->






<servlet> <servlet-name>WebDAVServlet</servlet-name> <servlet-class>org.exist.http.servlets.WebDAVServlet</servlet-class>


<init-param> <param-name>authentication</param-name> <param-value>basic</param-value>
</init-param> </servlet>


<!-- XQueryServlet generates HTML from an XQuery file. --> <servlet> <servlet-name>XQueryServlet</servlet-name>


<init-param> <param-name>uri</param-name> <param-value>xmldb:exist:///db</param-value>


<init-param> <param-name>form-encoding</param-name> <param-value>UTF-8</param-value>


<init-param> <param-name>container-encoding</param-name> <param-value>UTF-8</param-value>


<init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value>
</init-param> </servlet>


<servlet> <servlet-name>EXistServlet</servlet-name> <servlet-class>org.exist.http.servlets.EXistServlet</servlet-class>


<!-- where to find eXist's configuration file relative to the basedir of the web-application.
--> <init-param> <param-name>configuration</param-name> <param-value>conf.xml</param-value>


<!-- eXist's home directory. All file names in the configuration file will be relative
to this directory. --> <init-param> <param-name>basedir</param-name>
<param-value>WEB-INF/</param-value> </init-param>


<init-param> <param-name>start</param-name> <param-value>true</param-value>






<!-- configure the Axis servlets. Axis provides eXist's web-services via SOAP --> <servlet>
<servlet-name>AxisServlet</servlet-name> <display-name>Apache-Axis Servlet</display-name>
<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class> </servlet>


<servlet> <servlet-name>AdminServlet</servlet-name> <display-name>Axis
Admin Servlet</display-name> <servlet-class> org.apache.axis.transport.http.AdminServlet
</servlet-class> <load-on-startup>100</load-on-startup> </servlet>



Next, you need to add url mappings for these servlets. At the bottom section of the file,
again before the Cocoon mapping, add:

Again you can use only url mappings that you need


<!-- Define where the XMLRPC servlet listens -->






<!-- eXist's DatabaseAdminServlet --> <servlet-mapping> <servlet-name>EXistServlet</servlet-name>
<url-pattern>/servlet/*</url-pattern> </servlet-mapping>


<servlet-mapping> <servlet-name>WebDAVServlet</servlet-name> <url-pattern>/webdav/*</url-pattern>


<!-- XQueryServlet --> <servlet-mapping> <servlet-name>XQueryServlet</servlet-name>
<url-pattern>*.xql</url-pattern> </servlet-mapping>


<!-- The following servlet-mappings are for Axis (SOAP) --> <servlet-mapping>
<servlet-name>AxisServlet</servlet-name> <url-pattern>/axis-servlet/AxisServlet</url-pattern>


<servlet-mapping> <servlet-name>AxisServlet</servlet-name> <url-pattern>*.jws</url-pattern>


<servlet-mapping> <servlet-name>AxisServlet</servlet-name> <url-pattern>/services/*</url-pattern>


<servlet-mapping> <servlet-name>AdminServlet</servlet-name> <url-pattern>/axis-servlet/AdminServlet</url-pattern>



Then edit cocoon/WEB-INF/cocoon.xconf. Change the section that configures the xmldb pseudo
protocol. Add the xmldb driver for eXist:

<!-- xmldb pseudo protocol -->




  <!-- Add here other XML:DB compliant databases' drivers -->

  <driver class="org.exist.xmldb.DatabaseImpl" type="exist"/>



This configuration works but from my experience it is better that you also replace org.apache.cocoon.components.source.impl.XMLDBSourceFactory
with org.exist.cocoon.XMLDBSourceFactory, since it seems that 

org.apache.cocoon.components.source.impl.XMLDBSourceFactory has some problems with unicode
document, but org.exist.cocoon.XMLDBSourceFactory uses eXist’s xmldb source and is
taylored to eXist and has no Unicode problem.



To use eXist's XSP logicsheet, edit the section on markup languages and include a reference
to eXist's logicsheet at the top:



    <xsp-language logger="core.markup.xsp" name="xsp">

      <parameter name="prefix" value="xsp"/>

      <parameter name="uri" value=""/>


<!--+ | Properties for the java language +--> <target-language name="java"> <!--
Defines the XSP Core logicsheet for the Java language --> <parameter name="core-logicsheet"


<builtin-logicsheet> <parameter name="prefix" value="xdb"/> <parameter name="uri"
value=""/> <parameter name="href" value="resource://org/exist/xmldb.xsl"/>
</builtin-logicsheet> ...


You should now be able to copy the contents of eXist's webapp directory ($EXIST_HOME/webapp)
into a subdirectory of your Cocoon installation (e.g. cocoon/exist) and access eXist's main
page and most examples. However, some examples won't work as they assume a fixed path /exist.
The XQuery scripts need to be changed accordingly. 

Also you can use XQuery Generator as Chris said.





Yahoo! <*http:/*http:/>
 Messenger with Voice. PC-to-Phone calls for ridiculously low rates.

View raw message