[J2EE/EJB]Détecter la présence d'un bean

Détecter la présence d'un bean [J2EE/EJB] - Programmation

Marsh Posté le 01-07-2002 à 11:24:22    

Avant tout je tiens à préciser que je débute totalement avec EJB.  
 
Voici mon problème:  
 
J'ai un container EJB qui contient un session bean et de 0 à plusieurs entity beans.  
 
Comment faire pour que mon session bean connaisse la liste des noms des entity beans du container et puisse y accéder ?

Reply

Marsh Posté le 01-07-2002 à 11:24:22   

Reply

Marsh Posté le 01-07-2002 à 11:25:27    

que veux tu dire par nom ? Qu'est ce que tu veux faire exactement?


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 01-07-2002 à 11:30:31    

en fait, je cherche à récupérer les interfaces de ces composants pour pouvoir appeler leurs méthodes

Reply

Marsh Posté le 01-07-2002 à 11:33:36    

bin oui mais pour cela tu dois avoir l'entrée JNDI et faire un lookup dessus. Je ne vois absolument pas l'intéret de récupérer tout les beans comme ca sans raison (surtout qu'ils doivent correspondre à une interface puisque tu veux appeller une certaine méthode dessus !
 
En fait tu as des entitybeans et tu voudrais appeler une méthode sur TOUTES les instances de ce bean particulier (en gros, tu as un entity bean client et tu voudrais appeller setMachin() sur tout tes clients présents dans ta DB)?
 
Bin il suffit de déclarer un search genre findAll() dans ton interface mais soi conscient que ca peut fouttre ton système à terre si tu as trop de données.


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 01-07-2002 à 11:49:21    

Voici le problème dans sa globalité:
 
J'ai un serveur qui fait tourner différents SGBD. Chaque base du serveur contient des fichiers binaires (dans des champs BLOB) que l'on cherche à extraire.
 
Le but est de développer un EJB générique permettant d'extraire les fichiers binaires d'une base quelquonque et d'y associer pour chaque SGBD différent un EJB contenant le driver JDBC de la base à interroger.
 
L'EJB générique doit donc chercher quelles sont les SGBD du serveur ce qui revient à chercher les EJB du container (qui contienent les drivers JDBC corespondants).
 
Je sais pas si c'est clair, mais c'est ce qu'on m'a demandé de faire.
 
 
 

Reply

Marsh Posté le 01-07-2002 à 12:07:23    

ca l'est mais pour récupérer l'interface d'un bean il te faut son entrée JNDI. Donc tu peux bien sur faire un bean générique et ensuite créer X instances avec X fichiers de configuration et dans chaque fichier de configuration les params propres à chaque SGBD.  
 
Mais ensuite tu dois déclarer (deployer) ces beans dans ton app serveur et leur donner une entrée JNDI. Donc voilà. Maintenant to session bean peut être lui aussi générique sans trop de difficulté mais il faut bien à un moment ou à un autre les déclarer dans l'EJB container ...


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 01-07-2002 à 12:08:15    

ceci dit je ne suis pas sur qu'un entity bean soit la bonne solution pour une exctraction de doonées. Y a t il une session avec le front end ou bien est ce juste des appels d'extractions purs et simples.


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 01-07-2002 à 12:18:41    


 
l'EJB d'extraction n'est pas en entity mais en session,
ce sont les composants EJB qui contienent les drivers qui sont en entity beans.

Reply

Marsh Posté le 01-07-2002 à 13:47:35    

si je me trompe pas JNDI est un registre sous forme d'arbre. Pourquoi tu n'enregistrerais pas tous tes sessions bean d'extraction dans une des branches ?
Pour ton bean générique tu n'aurais qu'à récupérer toutes les feuilles de cette branche pour retrouver tous les SGBD que tu gère ...

Reply

Marsh Posté le 01-07-2002 à 14:11:32    

benou:  
Ta solution doit pouvoir marcher mais j'en ai trouvé une autre qui me convient: je déploie un autre EJB entity qui contient la liste des EJB qui contienent les drivers JDBC.
 
Dès qu'un SGBD est ajouté ou retiré la liste est mise à jour.
 
Ainsi mon EJB générique récupère la liste et peut connaître tous les SGBD dispos pour l'extraction.

Reply

Marsh Posté le 01-07-2002 à 14:11:32   

Reply

Marsh Posté le 01-07-2002 à 17:02:01    

J'ai un nouveau problème:
 
Comment faire pour récupérer l'interface home d'un EJB dont on ne connaît pas le nom ?
 
En effet je peux récupérer le nom de l'EJB qui contient le driver dans mon composant qui liste les drivers , mais il sera dans une variable.
Je ne pourrais donc pas caster l'interface récupérée.
Des idées ?


Message édité par redant le 01-07-2002 à 17:02:29
Reply

Marsh Posté le 01-07-2002 à 23:28:54    

tu dois les caster en une interface commune à tous tes beans, non ? je vois pas le problème ...

Reply

Marsh Posté le 10-07-2002 à 12:11:31    

Citation :


 
si je me trompe pas JNDI est un registre sous forme d'arbre. Pourquoi tu n'enregistrerais pas tous tes sessions bean d'extraction dans une des branches ?  
Pour ton bean générique tu n'aurais qu'à récupérer toutes les feuilles de cette branche pour retrouver tous les SGBD que tu gère ...
 


 
Je crois finalement que c'est la meilleure méthode, par contre comment utiliser JNDI pour des recherches avec filtres dans le genre chercher tous les beans dont l'entrée JNDI commence par Driver ? ou alors chercher tous les beans d'une branche ?
 
Je pensais associer javax.naming.Context.lookup() avec FilterName mais comment faire pour obtenir un tableau de références au lieu d'un seul résultat ?


Message édité par redant le 10-07-2002 à 12:12:14
Reply

Marsh Posté le 10-07-2002 à 17:07:28    

up
 :bounce:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed