Hi Chris,

I am having difficulties, can you please help

To start the server, add the following to the cocoon.xconf:

<component role=" org.exist.server" class="de.cware.cweb.system.xmldb.XmlDbServerImpl" home="C:/home/domains" suffix="data/xmldb" minBrokers="1" maxBrokers="5"/>

Well I have to admit, that I created my own Server component for starting the db itself inside cocoon … think you will have to have a look for code looking like:

BrokerPool.configure(“exist”, minBrokers, maxBrokers, config);


1. I assume that the XmlDbServerImpl above is your own component for starting the db inside cocoon - is that true?
2. What is  home="C:/home/domains" for ?
3. What is  suffix="data/xmldb" for ?

 

This is where initializing the BorkerPool for the instance is initialted. Couldn’t fin exactly which class is needed for this.

If you don’t manage to find it, I can send you mine, but that is made for initializing multiple Database Instances automatically (one per virtual hosts) but It would be suitable for a start J

4. I can't manage it, can you please send me yours

Thanks Peter

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 [mailto:[EMAIL PROTECTED]]
Gesendet: Mittwoch, 7. Juni 2006 01:19
An: [EMAIL PROTECTED]oon.apache.org
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>org.exist.xmlrpc.RpcServlet</servlet-name>

    <servlet-class>org.exist.xmlrpc.RpcServlet</servlet-class>

  </servlet>

 

<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> <servlet-class>org.exist.http.servlets.XQueryServlet</servlet-class>

 

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

 

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

 

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

 

<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> </init-param>

 

<!-- 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> </init-param>

 

<load-on-startup>1</load-on-startup>

 

</servlet>

 

<!-- 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 -->

  <servlet-mapping>

    <servlet-name>org.exist.xmlrpc.RpcServlet</servlet-name>

    <url-pattern>/xmlrpc</url-pattern>

  </servlet-mapping>

 

<!-- 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> </servlet-mapping>

 

<!-- 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-mapping> <servlet-name>AxisServlet</servlet-name> <url-pattern>*.jws</url-pattern> </servlet-mapping>

 

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

 

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

 

 

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 -->

<component-instance

class="org.apache.cocoon.components.source.impl.XMLDBSourceFactory"

name="xmldb">

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

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

</component-instance>

 

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:

 

<markup-languages>

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

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

      <parameter name="uri" value="http://apache.org/xsp"/>

 

<!--+ | Properties for the java language +--> <target-language name="java"> <!-- Defines the XSP Core logicsheet for the Java language --> <parameter name="core-logicsheet" value="resource://org/apache/cocoon/components/language/markup/xsp/java/xsp.xsl"/>

 

<builtin-logicsheet> <parameter name="prefix" value="xdb"/> <parameter name="uri" value="http://exist-db.org/xmldb/1.0"/> <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.

 

Regards

Abbas


Yahoo! Messenger with Voice. PC-to-Phone calls for ridiculously low rates.

Reply via email to