XDoclet

XDoclet – atviro kodo įrankis naujiems programos fragmentams bei kitokiems jos dokumentams (pavyzdžiui, XML dalims) automatiškai generuoti pagal esamo Java kalba parašyto modulio (klasės) anotacijas. XDoclet anotacija yra sutarta specifine forma užrašytas visos klasės ar kurio nors klasės metodo komentaras.

XDoclet dažniausiai naudojamas J2EE pagalbinėms klasėms automatiškai generuoti. Dauguma J2EE „pupų“ turi bent po dvi pagalbines klases (tolimą arba lokalų interfeisą ir tolimus arba lokalius namus) ir dar turi būti tinkamai aprašyta visoms pupoms bendrame XML dokumente. XDoclet gali automatiškai generuoti abu interfeisus, abiejų tipų „namus“, XML aprašą ir, jei reikia, kitas pagalbines klases. Taip sutaupoma daug programavimo laiko. Be to, programuotojas gali susitelkti ties viena klase su XDoclet anotacijomis: to paties keitimo (tarkim, naujo metodo įvedimo) nereikia atlikti visose su tuo susijusiose pagalbinėse klasėse.

Lomboz projekte XDoclet integruota į grafinę vartotojo sąsąją ir prireikus vykdomas automatiškai. XDoclet taip pat gali būti vykdoma kaip Ant užduotis.

Kadangi XDoclet modulius nesunku parašyti, ši sistema intensyviai vystosi ir šiuo metu turi daug labai įvairios paskirties modulių. XDoclet generuoja ir konkrečiam serveriui (JOnAS, JBoss ir kit) reikalingus specifinius, papildomus XML aprašus.

Pavyzdys 
Ilgalaikės (duomenų bazėje išsaugomos) pupos antraštė su XDoclet žymėmis gali atrodyti taip:

 /**
  * Čia yra banko saskaitos ilgalaikė pupa. Tai pavyzdys, kaip naudoti XDoclet žymes.
  *
  * @ejb.bean
  *     name="bankas/saskaita"
  *     type="CMP"
  *     jndi-name="ejb/bankas/saskaita"
  *     local-jndi-name="ejb/bankas/LocalSaskaita"
  *     primkey-field="pasoNumeris"
  *     schema = "Klientai"
  *
  * @ejb.finder
  *     signature="java.util.Collection findAll()"
  *     unchecked="true"
  *
  * @ejb.finder signature="java.util.Collection findPagalVarda(java.lang.String name)" 
  *             unchecked="true"
  *             query= "SELECT OBJECT(o) FROM Klientai AS o WHERE o.vardas
  *             LIKE ?1"
  *
  * @ejb.transaction
  *     type="Required"
  */

Šaltiniai 

J2EE