You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users-fr@cocoon.apache.org by Frédéric Glorieux <fr...@ajlsm.com> on 2005/12/11 10:29:39 UTC

récupérer une connexion exist en cocoon.xconf

Bonjour,

Je peux configurer à peu près comme il me faut des connexions xmldb dans 
concon.xconf, genre

<driver class="org.exist.xmldb.DatabaseImpl" user="admin" 
password="admin" type="monInstance">
   <database-id>Ceddre</database-id>
   <configuration>/home/exist/monInstance/conf.xml</configuration>
   <create-database>true</create-database>
</driver>

Elles sont disponibles pour par exemple

<map:generate src="xmldb:monInstance:///db/{1}"/>

Maintenant, j'aimerai profiter de cette connexion pour aller faire des 
choses dans cette instance Exist en java

Je suppose que Cocoon configure quelque part certains objets ?
Est-ce qu'il y a quelquepart un DatabaseManager répertoriant les 
instances configurées en cocoon.xconf ?

Je vais chercher au débogueur, mais si un gourou pouvait m'en dire plus...

-- 
Frédéric Glorieux (AJLSM, http://ajlsm.com)

---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Re: récupérer une connexion exist en cocoon.xconf

Posted by Pierrick Brihaye <pi...@free.fr>.
Frédéric Glorieux wrote:

> Mon problème, c'est quand je ne les connais pas, que l'appli puisse en 
> avoir la liste, selon ce qu'un administrateur aura inscrit dans un 
> cocoon.xconf, un énumérateur quelconque...

Comme indiqué précédement, c'est la sémantique qu'eXist donne à la méthode :
http://xmldb-org.sourceforge.net/xapi/api/org/xmldb/api/base/Database.html#getNames()

Dans les faits, le cablage n'est pas fait mais il doit être possible de 
s'en tirer en allant du côté de BrokerPool.getInstances().

Voilà. A+

p.b.


---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Re: récupérer une connexion exist en cocoon.xconf

Posted by Frédéric Glorieux <fr...@ajlsm.com>.
>>> Le DatabaseManager est un singleton dont toutes les méthodes sont 
>>> statiques. 

> Non, pas besoin de *créer* un DatabaseManager, puisque tout est statique.

> Database[] toutesLesBases = DatabaseManager.getDatabases();

Désolé de n'avoir pas compris, excellent, cela marche très bien ! La 
norme est bien implantée.

-- 
Frédéric Glorieux (AJLSM, http://ajlsm.com)

---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Re: récupérer une connexion exist en cocoon.xconf

Posted by Sylvain Wallez <sy...@apache.org>.
Frédéric Glorieux wrote:
>
>
>>> Je suppose que Cocoon configure quelque part certains objets ?
>>> Est-ce qu'il y a quelquepart un DatabaseManager répertoriant les 
>>> instances configurées en cocoon.xconf ?
>>
>> Le DatabaseManager est un singleton dont toutes les méthodes sont 
>> statiques. 
>
> OK, donc si je veux un DatabaseManager avec ma liste de bases 
> configurées dans cocoon.xconf, je me le fais moi-même.

Non, pas besoin de *créer* un DatabaseManager, puisque tout est statique.

>> Tu peux donc accéder aux bases où bon te semble, une fois qu'elles 
>> ont été configurées par l'init de Cocoon.
>
> Elles me servent bien ce que je veux, quand je les connais d'avance.
>
> Mon problème, c'est quand je ne les connais pas, que l'appli puisse en 
> avoir la liste, selon ce qu'un administrateur aura inscrit dans un 
> cocoon.xconf, un énumérateur quelconque...

Database[] toutesLesBases = DatabaseManager.getDatabases();

Sylvain

-- 
Sylvain Wallez                        Anyware Technologies
http://bluxte.net                     http://www.anyware-tech.com
Apache Software Foundation Member     Research & Technology Director


---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Re: récupérer une connexion exist en cocoon.xconf

Posted by Frédéric Glorieux <fr...@ajlsm.com>.

>> Je suppose que Cocoon configure quelque part certains objets ?
>> Est-ce qu'il y a quelquepart un DatabaseManager répertoriant les 
>> instances configurées en cocoon.xconf ?
> 
> Le DatabaseManager est un singleton dont toutes les méthodes sont 
> statiques. 

OK, donc si je veux un DatabaseManager avec ma liste de bases 
configurées dans cocoon.xconf, je me le fais moi-même.

> Tu peux donc accéder aux bases où bon te semble, une fois 
> qu'elles ont été configurées par l'init de Cocoon.

Elles me servent bien ce que je veux, quand je les connais d'avance.

Mon problème, c'est quand je ne les connais pas, que l'appli puisse en 
avoir la liste, selon ce qu'un administrateur aura inscrit dans un 
cocoon.xconf, un énumérateur quelconque...

-- 
Frédéric Glorieux (AJLSM, http://ajlsm.com)

---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Re: récupérer une connexion exist en cocoon.xconf

Posted by Sylvain Wallez <sy...@apache.org>.
Frédéric Glorieux wrote:

> Je suppose que Cocoon configure quelque part certains objets ?
> Est-ce qu'il y a quelquepart un DatabaseManager répertoriant les 
> instances configurées en cocoon.xconf ?

Le DatabaseManager est un singleton dont toutes les méthodes sont 
statiques. Tu peux donc accéder aux bases où bon te semble, une fois 
qu'elles ont été configurées par l'init de Cocoon.

Sylvain

-- 
Sylvain Wallez                        Anyware Technologies
http://bluxte.net                     http://www.anyware-tech.com
Apache Software Foundation Member     Research & Technology Director


---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Re: récupérer une connexion exist en cocoon.xconf

Posted by Sylvain Wallez <sy...@apache.org>.
Pierrick Brihaye wrote:

> Pour info, eXist est en GPL, pas en ASL : les patches ont donc 
> vocation à remonter :-)))

Les patches ont aussi vocation à remonter en ASL, même si on ne l'oblige 
pas. Et la remontée des patches GPL n'est pas obligatoire s'il n'y a pas 
de redistribution...

Sylvain, en direct de la ApacheCon à San Diego :-)

-- 
Sylvain Wallez                        Anyware Technologies
http://bluxte.net                     http://www.anyware-tech.com
Apache Software Foundation Member     Research & Technology Director


---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Re: récupérer une connexion exist en cocoon.xconf

Posted by Frédéric Glorieux <fr...@ajlsm.com>.
Bon, après la galère de la mise à jour avec une lib exist dernière 
distrib, les conf, les données, je n'ai repéré aucun problème à 
multiplier les instances Exist en lectures + écriture dans un 
cocoon.xconf, et merci Cocoon de donner un DatabaseManager

Le seul patch souhaitable concerne la résolution des paths relatifs pour 
une distrib war, je te transmets ailleurs un bug Exist sur le dossier où 
trouver un fichier journal

Cela se comporte comme cela doit


<driver class="org.exist.xmldb.DatabaseImpl" user="admin" password="" 
type="coucou">
   <database-id>coucou</database-id>
   <create-database>true</create-database>
   <configuration>/home/coucou/coucou.xml</configuration>
</driver>
<driver class="org.exist.xmldb.DatabaseImpl" user="admin" password=""
type="beuh">
   <database-id>beuh</database-id>
   <configuration>home/beuh/beuh.xml</configuration>
   <create-database>true</create-database>
</driver>

Et ceci marche très bien

<map:generate src="xmldb:coucou:///db/{1}"/>

Pareil pour de l'écriture avec par exemple l'action copy-source

Le seul risque que j'ai repéré, il vaut mieux mettre le même nom dans 
@type ou <database-id/>, sinon, il y a des emmêlements de pinceaux que 
je n'ai pas bien compris.

>> Je fais tourner 3 instances Exist avec chacune leur conf et leur 
>> fichiers *.dbx,
> 
> Comment fais-tu ? Ports différents ?

> Pour info, eXist est en GPL, pas en ASL : les patches ont donc vocation 
> à remonter :-)))




-- 
Frédéric Glorieux (AJLSM, http://ajlsm.com)

---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Re: récupérer une connexion exist en cocoon.xconf

Posted by Pierrick Brihaye <pi...@free.fr>.
Frédéric Glorieux wrote:

> Je fais tourner 3 instances Exist avec chacune leur conf et leur 
> fichiers *.dbx,

Comment fais-tu ? Ports différents ?

> Et en fait, c'est plus que logique ? Ce n'est pas à un DatabaseManager 
> de gérer les instances multiples ?

Dans l'esprit des specs xmldb, si. On n'est pas censé savoir le moteur 
situé derrière telle ou telle instance.

> DatabaseManager.registerDatabase()
> 
> J'aimerai bien récupérer ce
> DatabaseManager :o)

Le problème, c'est qu'il est presque gravé dans le marbre ici :
http://xmldb-org.sourceforge.net/xapi/xapi-draft.html

et plus particulièrement ici :
http://xmldb-org.sourceforge.net/xapi/api/org/xmldb/api/DatabaseManager.html

> Merci de l'info d'un commiter Exist, donc on en restera au patch local.

Pour info, eXist est en GPL, pas en ASL : les patches ont donc vocation 
à remonter :-)))

p.b.


---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Re: récupérer une connexion exist en cocoon.xconf

Posted by Frédéric Glorieux <fr...@ajlsm.com>.
> Cette
> approche est toute théorique 

Heu, non, elle est expérimentale.

Je fais tourner 3 instances Exist avec chacune leur conf et leur 
fichiers *.dbx, et je suis certain de voir ce que j'y ai mis, avec les 
utilisateurs dba qui y sont (vu au client JAVA).

D'où l'intérêt d'utiliser ces connexions configurées par un 
administrateur dans une application.

> car, à ma connaissance, l'implémentation 
> d'une XMLDB sur un moteur eXist ne sait gérer qu'une seule instante 

Et en fait, c'est plus que logique ? Ce n'est pas à un DatabaseManager 
de gérer les instances multiples ?

DatabaseManager.registerDatabase()

J'aimerai bien récupérer ce
DatabaseManager :o)

> qui 
> s'appelle "exist" dans 99.999999% des cas.

Je m'en suis aperçu, j'ai un Exist patché pour ça.

> Voir:
> http://cvs.sourceforge.net/viewcvs.py/exist/eXist-1.0/src/org/exist/xmldb/DatabaseImpl.java?annotate=1.39 
> 
> 
> et détricoter à partir de la ligne 297.
> 
> Il a y a sans doute encore pas mal de travail à faire de ce côté-là 
> mais, ajouté au reste des TODO, ça aura, je le crains, une priorité 
> assez basse.

Merci de l'info d'un commiter Exist, donc on en restera au patch local.


-- 
Frédéric Glorieux (AJLSM, http://ajlsm.com)

---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Re: récupérer une connexion exist en cocoon.xconf

Posted by Pierrick Brihaye <pi...@free.fr>.
Salut,

Frédéric Glorieux wrote:

> Elles sont disponibles pour par exemple
> 
> <map:generate src="xmldb:monInstance:///db/{1}"/>

 > Je suppose que Cocoon configure quelque part certains objets ?
 > Est-ce qu'il y a quelquepart un DatabaseManager répertoriant les
 > instances configurées en cocoon.xconf ?

Cette
approche est toute théorique car, à ma connaissance, l'implémentation 
d'une XMLDB sur un moteur eXist ne sait gérer qu'une seule instante qui 
s'appelle "exist" dans 99.999999% des cas.

Voir:
http://cvs.sourceforge.net/viewcvs.py/exist/eXist-1.0/src/org/exist/xmldb/DatabaseImpl.java?annotate=1.39

et détricoter à partir de la ligne 297.

Il a y a sans doute encore pas mal de travail à faire de ce côté-là 
mais, ajouté au reste des TODO, ça aura, je le crains, une priorité 
assez basse.

A+

p.b.


---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org