Utilisation de XDoclet :
Développement d'un EJB avec uniquement la classe Bean
Exemple : Création d'un Session Bean avec les balises JavaDoc XDoclet.
Nous allons créer un Session EJB. Peu importe ce que ce Bean fait, nous allons simplement nous intéresser à comment développer un Java Bean en prenant une classe bean, en la commentant avec les balises JavaDoc spécifiques et en utilisant XDoclet pour générer les méta fichiers.
Le fichier ReceiverBean.java
va contenir le méthode documentReady(Document
doc)
. Cette méthode prend un document DOM et le transmet au prochain Xbean
dans la chaîne.
Pour télécharger tous les fichiers de cet exemple cliquez sur l'image : | ![]() |
Définitions spécifiques au niveau de la Classe
Au niveau de la classe, nous devons définir :
stateless
.
Le seul attribut indispensable pour cette balise est de donner à XDoclet le nom du bean. Nous allons aussi définir le type du bean, son nom JNDI (pour le lier avec le home stub) et son nom d'affichage :
|
Les interfaces les plus communes pour la balise ejb:bean
sont :
Stateful
ou Stateless
. Pour les entités (Entities), c'est CMP
ou BMP
.
jndi-name
, mais utilisé pour l'interface locale
(Local interface).
remote,
soit local
, soit both
.Comme pour toutes les balises, vérifier la documentation pour voir la liste complète des options.
Cette balise définit une entrée d'environnement qui sera configurée dans le
JNDI via le contexte spécifique java:comp/env
. Nous allons
définir une entrée d'environnement que le bean utilisera pour aller voir le
prochain Xbean dans la chaîne :
|
Maintenant, nous allons configurer les caractéristiques de mise en commun
spécifiques aux plate-formes en utilisant
WebLogic. Pour signifier que nous sommes dans un monde spécifique aux
plate-formes (et donc spécifique envers un distributeur), nous avons l'espace
de nom weblogic
:
|
Cette balise va configurer les paramètres de pooling dans le
descripteur de déploiement spécifique WebLogic (weblogic-ejb-jar.xml
).
Il y a beaucoup d'autres balises au niveau des classes qui vous permettent de régler tout ce qui est possible dans le déploiement de descripteurs. Voici un bref aperçu de quelques balises standards que vous pourrez utiliser dans votre développement :
none
,
remote
, local
,or both
), placées dans
un paquetage ou plus encore.
home
, mais configure des informations
liées à l'interface du composant (remote
and/or local
).
role-name
d'appeler des méthodes dans les
interfaces distantes et locales du bean.
Nous voulons définir des balises au niveau de la méthode. Si nous voulons qu'une méthode donnée soit une partie d'une interface distante, nous l'indiquerons simplement à XDoclet via les balises de méthode :
|
Vous utiliserez toujours cette balise. Vous parcourrez les méthodes dans
votre classe bean, et si vous souhaitez qu'un client puisse y accéder, il
suffit de placer cette balise au-dessus de la déclaration de la méthode. Si
vou vouliez que cet accès se fasse via l'interface locale, il suffit de changer
la valeur view-type
à local
.
Voici quelques autres balises de niveau méthode pour EJB :
ejbHome*
.
NotSupported | Supports | Required |
RequiresNew | Mandatory | Never)
.
Maintenant que nous avons une fichier source java, ReceiverBean.java
,
qui a été balisé pour XDoclet, nous allons devoir lancer XDoclet, lui
demandant de nous générer tous les enrobages. La méthode préférée pour
lancer l'outil est au travers du système Jakarta-Ant.
Ant est le système de construction (compilation, déploiement, ..) Java
omniprésent.
Le lancement de XDoclet par Ant se fait par l'insertion de tâches Ant
spécialement développées par XDoclet dans le fichier de construction (build.xml
).
Il y a deux tâches principales : <ejbdoclet/>
et <webdoclet/>
.
Comme nous travaillons avec un EJB, nous allons utiliser la target ejbdoclet
dans notre fichier build.xml :
|
Il y a beaucoup d'information dans ce fichier. Nous allons donc le diviser et expliquer chacune des parties séparément :
Avant tout, il va être nécessaire d'informer Ant de la signification de la
nouvelle balise <ejbdoclet/>. Nous définissons donc le nom de la balise,
la classe qui implémente cette balise et le chemin de celle-ci (classpath).
Dans notre cas, nous utilisons les propriétés qui ont été définies au
sommet du fichier build.xml
qui recense les différentes
bibliothèques requises :
|
Cette balise englobante indique à Ant de lancer la tâche EJBDoclet. Nous indiquons où se trouve notre code (sourcepath), où générer le descripteur XML et les sources Java (destdir), et la version de l'EJB spec auquel nous nous référons :
|
Nous indiquons à la balise <ejbdoclet>
où trouver nos
beans, en utilisant la directive <fileset>
. Notre exemple
trouvera tout le code nommé ReceiverBean.java
situé dans le
sous-répertoire de ${java.dir}
:
|
Le prochain groupe de balises assure la génération des interfaces
distantes, locales, et les descripteurs XML standards de déploiement (ejb-jar.xml
)
:
|
Le dernier groupe de balises permet la génération des descripteurs de déploiement spécifiques aux plate-formes. Si vous ne déployez vos EJBs que sur un type de serveur, vous n'aurez qu'une entrée à spécifier. Dans notre cas, notre Xbean EJB devra être apte à être déployé sur autant de serveurs spécifiques (aux distributeurs) que possible. Toutes les balises spécifiques aux plate-formes ont été ajoutées. On remarquera que tous ces fichiers spécifiques aux plate-formes (et au distributeurs) ont été générés sans même que l'on ne connaisse les particularités de ces serveurs applicatifs.
|
Maintenant, pour tout construire pour cet EJB, il suffit de lancer Ant dans
le même répertoire que celui contenant le fichier build.xml. Il faut s'assurer
que les bibliothèques Ant (ant.jar
,
jaxp.jar
, un parseur XML) et que le fichier xdoclet.jar
sont dans le CLASSPATH. Par exemple sous Windows on pourrait avoir :
|
Pour télécharger tous les fichiers de cet exemple cliquez sur l'image : | ![]() |
Remarque : cet exemple est issu de l'article de Dion Almaer du site OnJava.com