V predchádzajúcom článku sme začali vytvárať rozhrania pre entity beans, ktoré budeme potrebovať pre náš príklad elektronickej aukcie. V tomto článku budeme pokračovať, pričom si vytvoríme a popíšeme ďalšie component rozhrania a niekoľko pomocných tried. Tento článok bude teda prevažne naplnený zdrojovým kódom.

Keď si pozorne pozriete zdrojový kód rozhrania EnglishAuction zistíte, že obsahuje referencie na Item, čo je lokálne rozhranie pre entity bean, ktorá bude reprezentovať položku vloženú do aukcie. Toto rozhranie bude pozostávať výlučne z get metód, ktorých úlohou bude vrátiť požadované vlastnosti danej položky aukcie. Zjednodušenie je v predpoklade, že jednotlivé položky určené na dražbu už v systéme existujú a nemusíme ich teda vytvárať alebo modifikovať. Nasleduje výpis lokálneho rozhrania Item:

Item

Odhliadnuc od vhodnosti tejto zmeny, ak by ste chceli konvertovať lokálne rozhranie EnglishAuction na remote rozhranie, jednoducho vám stačí zmeniť extends klauzulu na EJBObject a pridať do každej metódy signalizáciu vyhodenia výnimky RemoteException. Keďže toto rozhranie sprístupňuje svojmu okoliu aj metódy rozhrania Item a remote rozhranie nemôže sprístupňovať metódy lokálneho rozhrania, museli by sme následne konvertovať aj rozhranie Item.

Rozhranie EnglishAuction ďalej referencuje lokálne rozhranie Bidder, za účelom správneho prepojenia danej ponuky s konkrétnym dražiteľom. Toto rozhranie podobne ako Item pozostáva z niekoľkých get metód a z dvoch metód na zistenie fakturačnej adresy a adresy na doručenie tovaru. Tieto metódy používajú objekt AddressView rovnakým spôsobom, ako rozhranie EnglishAuction používa objekt BidView.

Bidder

Nasledujúce dva listingy zobrazujú zdrojový kód tried BidView a AddressView. Tieto triedy poskytujú jednoduché dátové štruktúry, ktoré môžu entity beans využiť pre poskytovanie informácií o svojich závislých objektoch. Tieto triedy sú navrhnuté tak, aby sa zvýraznil fakt, že manipulácia s hodnotami ich vlastností nemá dopad na perzistentné dáta jednotlivých entity beans. Aktualizácia tohto typu dát prebieha obvykle tak, že sa vytvorí nová inštancia niektorej z „view“ tried s požadovanými hodnotami a predá sa niektorej z update metód patriacich k entity beans.

Objekt triedy Bid je nemenný (immutable), pretože určite nechceme, aby sa výška ponuky od dražiteľa akokoľvek zmenila, po svojom uskutočnení. Z toho dôvodu sa možnosť aktualizácie bude vzťahovať skôr na objekt triedy Address.

AddressView

BidView

View objekty, zobrazujúce stav iného objektu, nemusia byť automaticky závislé objekty. Napríklad rozhranie EnglishAuction tiež poskytuje metódu, ktorá vracia aktuálny stav aukcie samotnej. Táto možnosť, ktorá je veľmi dôležitá pri práci so vzdialenými klientmi, poskytuje jednoduchý spôsob ako na jeden krát zistiť stav entity, bez nutnosti opakovaných volaní. Nasledujúci výpis zobrazuje zdrojový kód triedy AuctionDetailView:

AuctionDetailView

V rámci uvedených tried by bolo vhodné vložiť do jednotlivých deklarácií metód ošetrenie potenciálnych výnimiek, ktoré môžu vzniknúť. V niektorom z budúcich článkov sa budeme podrobne venovať ošetreniu výnimiek pri tvorbe EJB, pretože to je veľmi dôležitá súčasť návrhu entity beans a ich rozhraní. Nasledujúce dva výpisy zobrazujú triedy výnimiek, ktoré sú referencované v rozhraní EnglishAuction:

InvalidBidException

InvalidAuctionStatusException

Súhrn

V tomto článku sme ukončili vytváranie potrebných component rozhraní a ich závislých tried. Podľa špecifikácie EJB 2.0 sa pojmom component interface súhrnne odkazuje na local interface a remote interface. Podľa toho, pre akého klienta je rozhranie určené.

Všetky vytvorené rozhrania si môžete stiahnuť.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Žádný příspěvek v diskuzi

Odpovědět