La lecture en ligne est gratuite
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Partagez cette publication

Du même publieur

1
Avertissement
Tutorial Eclipse / WTP EJBEntite´es
MatthieuEXBRAYAT,Universite´dOrl´eans Matthieu.Exbrayat@univ-orleans.fr
Octobre 2006
Cepetittutorialpermetdeprendreenmainwtpsouseclipsepourlare´alisationdEJBentite´es(CMP)etderelation inter-entite´s(CMR).Cetutorialposse`delavantagedede´crirelefonctionnementavecdesversionsr´ecentesdeslogiciels utilis´es. Lesnomsdesr´epertoiresdacce`s,notamment`aeclipse,xdoclets,jboss,peuventdie´rerentrecetutorialetlesinstallations re´alise´esensallemachine. Voustrouverezplusieurstutoriauxcompl´ementairessurinternet: http://www.eclipse.org/webtools/community/communityresources.html. Cestutoriauxenanglaiscouvrentunspectrepluslargedemisesenoeuvre,ne´anmoinslesversionsdeslogicielsutilis´ees peuventˆetreplusanciennesetlamiseenoeuvrele´g`erementdie´rentedecequevousserezammen´es`afaireenmanip.
2
Pre´sentationdelexemple
lexempleimplante´correspondaumod`elesuivant:deslivres,desauteursetdesinstancesdelivres.Ilyaunecardinalit´e n-n entre livre et auteur, et 1-n entre instance et livre. Les relations sont bidirectionnelles. Nousd´ecrironsicidesentitysnereposantpassurdestablespre´-existantes.Enconse´quencechaqueEJBseraparame´tre´ pourcre´erlatablecorrespondantelorsdesond´eploiement.
3
cr´eationdesEJBentite´
Andenepastropge´n´ererdeclassesparasites,recongurerlesxdoclets(Window/preferences.../xdoclet/ejbdocletcomme indique´engure1. Parailleurs,pourquelerede´ploiementduprojetsefasseautomatiquementapr`eschaquemodication,modierlesparam`etres ded´eploiementdansWindow/preferences.../Server.meomcuqe´niidru2eneg
1
Figure 1: Configuration xdoclets ejbdoclet
3.1 EJB Author Cre´erunnouveauprojetJ2EE,etdanslesous-projetEJBfaireNew/Xdoclet EJBdans le menu contextuel. ChoisirContainer Managed Entity Bean, et cliquerNext. Indiquer le package (ejb) et le nom du bean (AuthorBean) (cf. fig. 3), cliquerNext. Danslafenˆetresuivante(param´etragedude´ploiement),modierleUseCase4) pour afficher(cf. fig. Define new attributes (pard´efautonvaexplorerunebasepoursemappersurunetableexistante,cequelonnesouhaitepasfairepourlinstant). CliquerNext. Donnerladescriptiondelatablea`cre´eretdumappingcommeindique´engure5.LacolonneNameindique le nom de l’attribut dans l’ejb,Columncelle de l’attribut correspondant dans la table.Typeindique le type de l’attribut de l’ejb,JDBC Typele type JDBC correspondant etSQL TypeNe pas oublier de cocher la casele type de l’attribut dans la table. Primary keyuqreurlapo.Clicl´eNextpuisFinish.
2
Figure2:Congurationduserveurpourrede´ploiementautomatique
Figure3:Cr´eationdelEJBentityAuthor(1)
Parde´faut,lentit´eestcr´e´eaveclesinterfaceslocaletremote.Nousallonstoutdabordsupprimerlesinterfacesremote anquelesentite´snesoientaccessiblesqua`traversunsessionfrontal.Pourcefaire,noussupprimonslesinterfaces AuthorHome.javaetAuthor.javade la liste des classes, puis dans le code de AuthorBean nous modifions les tags xdoclets de la classe en ajoutantview-type=”local”msdon,uosinors,anquelatableP.raialluei`emecerneononxitiose´rca`e´rpal l’attributcreate-tablea`truece qui donne :
/** * <!-- begin-xdoclet-definition -->
3
* * * * * * * * * * * * * * *
@ejb.bean name="Author" jndi-name="Author" type="CMP" primkey-field="authID" schema="AuthorSCHEMA" cmp-version="2.x" view-type="local"
@ejb.persistence table-name="AUTHOR"
Figure4:Cre´ationdelEJBentityAuthor(2)
Figure5:Cr´eationdelEJBentityAuthor(3)
@ejb.finder query="SELECT OBJECT(a) FROM AuthorSCHEMA as a" signature="java.util.Collection findAll()"
4
* @ejb.pk class="java.lang.Integer" * * * @jboss.persistence datasource="java:/DefaultDS" * datasource-mapping="Hypersonic SQL" table-name="AUTHOR" * create-table="true" remove-table="false" alter-table="false" * <!-- end-xdoclet-definition --> * @generated **/
public abstract class AuthorBean implements javax.ejb.EntityBean {
3.2 EJBs Book et Instance Nouscre´onscesdeuxEJBdelamˆememanie`requelapre´ce´dent,sansoublierlesmodicationsdestagsxdoclets,avecles attributs suivants :
bookID (Integer,pk) et bookTitle (varchar(20))Book :
Instance : instanceRef (varchar(10),pk)
Nous disposons maintenant de 9 classes et interfaces (fig. 6).
4
Figure6:Lesclassesetinterfacesge´ne´re´es
mise en place des relations
Lesrelationssontmisesenplacemanuellementparlebiaisdem´ethodesabstraitesetdetagsxdoclets.
4.1 Relation Livre-Auteur Cetterelationestbidirectionellen-n.Ellevadoncreposersurdesme´thodesmanipulantdescollections,etvasupposer lacr´eationdunetablesuppl´ementaireg´erantlesinstancesdelarelation.Enconse´quencedansundesdeuxbeansilfaut sp´eciercettetable(eticinepasoublierdedemandersacre´ation).Rappelonsnous´egalementquunerelationa`unnomet poss`ededeuxrˆolesde´nissantlarelationvudepuischaqueejb.Enconse´quencelecodesera,ducoˆt´eLivre:
/** * @ejb.interface-method
view-type="local"
5
* * @ejb.relation * name= "authbook" * role-name= "authorsofbook" * target-ejb= "AuthorLocal" * target-multiple= "yes" * * @jboss.relation related-pk-field="authID" * fk-column = "authID" * * @jboss.relation-table table-name="AUTHBOOK" create-table="true" */ public abstract java.util.Collection getAuthors();
/** * @ejb.interface-method view-type="local" */ public abstract void setAuthors(java.util.Collection authors);
etducˆote´Auteur:
/** * @ejb.interface-method view-type="local" * * @ejb.relation * name= "authbook" * role-name= "booksofauthor" * target-ejb= "BookLocal" * target-multiple= "yes" * * @jboss.relation related-pk-field="bookID" * fk-column = "bookID" */ public abstract java.util.Collection getBooks();
/** * @ejb.interface-method view-type="local" */ public abstract void setBooks(java.util.Collection books);
4.2 Relation Livre-Instance Cetterelationestbidirectionnellen-1.Nousmanipuleronsdoncduncoˆte´desinstancesetdelautredescollections,etla relationneserapasmane´trialise´eparunetablemaisparunattributsupple´mentairedanslejb(etlatable)ducoˆte´n,cest `adireducˆot´eInstance.Lecodeseradonc,ducˆot´einstance:
/** * @ejb.interface-method view-type="local" * * @ejb.relation * name= "instbook" * role-name= "bookofinstance" * target-ejb= "BookLocal" * target-multiple= yes" * * @jboss.relation related-pk-field="bookID" * fk-column = "bookID" */ public abstract BookLocal getBook();
6
Un pour Un
Permettre à tous d'accéder à la lecture
Pour chaque accès à la bibliothèque, YouScribe donne un accès à une personne dans le besoin