I am ready to test the embedded version of this. Mark
James Bates wrote: > Thank you Vladimir, that clarifies things for me :) > > In the case of the embedded architecture there are no separate client > and server processes, this is true. > > There is nonetheless still a logical architecture to the application: Some > part of the application should set up the database "server" (which in this > case are a set of classes in the same JVM process as the rest), and some other > part should use XML:DB (and in fact, the embed driver) to access it, > preferably > without "knowing" that it is actually talking to an embed driver. > > Because of this, I am not convinced that the XML:DB URL must necessarily > contain > all that is required to start up the "server" part (i.e. a DatabaseImpl object > with config file). Your solution is at least as elegant, IMHO. > > XML:DB and JDBC are both "connectivity" API's, and both I think assume that > some > sort of server environment (even if that is just some classes in the local > JVM) > is already running. If setting such a "server" up means setting a property on > the > driver, why not? > > Now I think there's no reason to not do both: > > - check XML:DB URL: if it contains a config-file path, use it > (e.g. if the url is like > xmldb:xindice-embed:/path-to-config-file://collection/path) > - otherwise (url is like xmldb:xindice-embed://collection/path) use > param passed to setProperty of Database object (which in principle has > already been created before) > - In absence of both of the above, use System.getProperty() > - As a last resort (system property absent too), fall back to > $XINDICE_HOME/conf/system.xml (look up > and use env. variable). > > Many JDBC drivers allow several different ways of defining the same > connection. It only contributes > to flexibility for end-users. > > Do people think the above approach may satisfy most needs? > > James > > > -----Original Message----- > > From: Vladimir R. Bossicard [mailto:[EMAIL PROTECTED] > > Sent: 07 January 2003 07:57 > > To: [EMAIL PROTECTED] > > Subject: Re: Release plans? > > > > > > > I must have missed the beginning of this discussion; sorry. > > Could you > > > remind me of the problem? > > > > The question was "How can I configure the embed driver?" > > > > In the XMLRPC driver, the system.xml configuration file is > > loaded by the > > XindiceServlet and this config file is defined in the web.xml file. > > Clean solution, nothing to say. > > > > For the embed driver however things are a little bit different. Both > > the client- and server-side codes are located into the same > > classes: so > > in order to configure the server and be able to read from the > > database, > > the system.xml file must be passed to the client. Somehow. Still > > following me? :-) > > > > For the record, the XMLTools (the client side) requires a > > configuration > > file on the CLI if you are using the embed driver. > > > > Currently the XMLTools passes the location of the config file via a > > System.setProperty() function call. The constructor of the > > embed driver > > calls System.getProperty() and reads the file. Personally I find this > > an ugly hack (since I've implemented this I'm entitled to say > > so :-) ). > > > > The org.xmldb.base.api.Database has a method 'setProperty' > > and I propose > > to use it instead. This would require to: > > - modify the embed driver to handle the configuration when passed via > > the setProperty method > > - modify the XMLTools class to read the content of the configuration > > file (-d flag) and pass it to the created Database object. > > - modify the o.a.x.c.xmldb.DatabaseImpl to store the configuration and > > pass it to the new driver object. > > > > I've already implemented the solution and it works perfectly. > > > > Gianugo things the the XMLDB:API client should be like a JDBC driver, > > where everything is passed via the URI. There are several differences > > between the JDBC and XMLDB APIs: > > > > - the JDBC client first make a connection with the server where the > > configuration is passed: this step is "missing" in the XMLDB API > > - AFAIK JDBC doesn't allow you to define how the connection is made. > > You don't have JDBC-WebDAV, JDBC-XMLRPC, JDBC-JMS: it's up to you to > > create your client/server implementation to provide such services > > - if you define an Excel file as your source, you will have to define > > its locateion when you register your ODBC datasource. Of course you > > could include this in the connection String but I don't see > > the solution > > jdbc:odbc:excel:c::\my%20Documents\my%20sources\my%20documents > > .xsl:username:password > > > > (or something like this), as something very practicable. > > > > I don't ask for a new method, a new interface nor a new class: I just > > ask that we use the capabilities of the XMLDB:API. If some think that > > the Database.setProperty method is not adequate, they should > > contact the > > XMLDB:API guys or write another API (APAIK Xindice is not > > restricted to > > the XMLDB:API). But if we support this API I don't see any reason to > > bypass a documented method with an ugly hack. > > > > -Vladimir > > > > -- > > Vladimir R. Bossicard > > Apache Xindice - http://xml.apache.org/xindice > > > > > > > > -- Mark J Stang System Architect Cybershop Systems
begin:vcard n:Stang;Mark x-mozilla-html:TRUE adr:;;;;;; version:2.1 email;internet:[EMAIL PROTECTED] fn:Mark Stang end:vcard
