Ohjelmointi

Lue kaikki EJB 2.0: sta

2. kesäkuuta julkaistu Enterprise JavaBeans 2.0 ei ole pelkästään pistejulkaisu vaan myös uusi versio spesifikaatiosta. Hieman yli 500 sivun EJB 2.0 -määrittely on 200 sivua (66 prosenttia) pidempi kuin edellinen EJB 1.1 -erittely. Tärkeimmät muutokset spesifikaatioissa ovat muutokset, jotka on tehty konttiohjattuun pysyvyyteen (CMP) ja täysin uuden paputyypin, MessageDrivenBean.

Suurin osa EJB 2.0: n muutoksista löytyy uuden CMP-komponenttimallin määritelmästä. Se eroaa radikaalisti vanhasta CMP-mallista, koska se esittelee täysin uuden osanottajan, sinnikkyyspäällikköja täysin uusi tapa määritellä konttiohjatut kentät sekä suhteet muihin pavuihin ja riippuvaisiin kohteisiin.

Ohjelman käyttöönotto MessageDrivenBean (viestipapu) on myös merkittävä. Viestipapu edustaa JMS: n (Java Message Service) integraatiota EJB: hen, jotta voidaan luoda täysin uudenlainen papu, joka on suunniteltu käsittelemään asynkronisia JMS-viestejä. Tämä jännittävä uusi paputyyppi tarjoaa komponenttimallin JMS-asiakkaille, jolloin ne voidaan ottaa käyttöön EJB-konttijärjestelmän rikkaassa ja vankassa ympäristössä.

Eritelmään on tehty monia muita pienempiä muutoksia. Nämä muut muutokset, vaikka ne ovat tärkeitä, koskevat lähinnä spesifikaation kiristämistä epäselvyyksien poistamiseksi ja komponenttien kannettavuuden lisäämiseksi. Tämä artikkeli keskittyy uusiin CMP- ja viestipapukomponenttimalleihin, jotka esiteltiin EJB 2.0: ssa.

Annan useita konkreettisia esimerkkejä, joten sen pitäisi olla melko helppo seurata ja ymmärtää. EJB-aloittelijoille saattaa kuitenkin olla vaikeampi materiaali, koska oletetaan, että lukijoilla on perustiedot EJB: stä. Katso lisätietoja EJB: stä lähteistä.

Konttien hallinnoima pysyvyys

Konttien hallinnoimassa pysyvyydessä on tapahtunut radikaaleja muutoksia EJB 2.0: ssa. EJB 2.0: ssa pysyvyyden hallinta käsittelee CMP-entiteettipapujen pysyvyyden automaattisesti ajon aikana. Pysyvyyspäällikkö on vastuussa entiteettipapun kartoittamisesta tietokantaan uuden papu-pysyvyyshallintasopimuksen perusteella nimeltä abstrakti pysyvyyskaavio. Lisäksi pysyvyyden hallinta on vastuussa etsintämenetelmien toteuttamisesta ja suorittamisesta, joka perustuu uuteen kyselykieleen nimeltä EJB QL.

On tärkeää huomata, että EJB 2.0 -määrityksen mukaisten tuotteiden on tuettava EJB 1.1 CMP -mallia ja uutta EJB 2.0 -mallia. Vaikka nämä mallit eivät ole yhteensopivia, taaksepäin yhteensopivuuden varmistamiseksi tarvitaan tuki EJB 1.1 -mallille.

Abstrakti pysyvyyskaavio

Ymmärtääkseni kuinka abstrakti pysyvyyskaavio toimii ja miksi se on tärkeää, tarkastelen nopeasti, miten CMP: tä käsitellään EJB 1.1: ssä, ja keskustelen sitten siitä, miten se määritellään EJB 2.0: ssa.

EJB 1.1 CMP -malli

EJB 1.1: ssä pavun kehittäjä on vastuussa papuluokan pysyvien kenttien ilmoittamisesta joko Java-primitiivisiksi tai sarjoitettaviksi tyypeiksi. Seuraavat esimerkit osoittavat Työntekijä yrityspapuluokka, sellaisena kuin se on määritelty EJB 1.1: ssä, useita CMP-kenttiä:

// Employee bean -luokan julkinen luokka EmployeeBean toteuttaa java.ejb.EntityBean {// ilmentymäkentät EntityContext ejbContext; // konttiohjatut kentät public int identiteetti; julkinen merkkijono etunimi; julkinen merkkijono sukunimi; julkinen kaksinkertainen palkka; julkinen osoiteosoite; public Integer ejbCreate (int id, String fname, String lname) {identiteetti = id; etunimi = fname; sukunimi = lname; return null; } ...} // Osoitteesta riippuva luokka public class Osoite toteuttaa Serializable {public String street; julkinen String kaupunki; julkinen kieli valtio; julkinen merkkijono vetoketju; } 

Kun relaatiotietokantaa käytetään pysyvyyteen, primitiiviset kentät, kuten henkilöllisyys, etunimi, sukunimija palkka on melko helppo säilyttää, koska ne sopivat hyvin SQL-tyyppiin, kuten KOKONAISLUKU, HIILTYÄja KAKSINKERTAINEN.

EJB 1.1: ssä CMP-papun XML-käyttöönottokuvaaja antaa cmp-kenttä elementit papuluokan pysyvien kenttien (konttiohjatut kentät) tunnistamiseksi. Kuten alla on esitetty, cmp-kenttä elementtejä käytetään erottamaan tietokantaan kirjoitetut kentät toisistaan. Esimerkiksi ejbKonteksti kenttä ei sisälly säilöohjattujen kenttien luetteloon, eikä se siksi ole pysyvä kenttä.

   TyöntekijäEJB ... Kontti ... henkilöllisyys etunimi sukunimi palkan osoite ... 

Säilön tarjoaja toimittaa työkalun pavun pysyvien kenttien kartoittamiseen tietokantataulukoiden sarakkeisiin, yleensä yhden taulukon kutakin papua kohden. Sarjattavat tyypit, kuten Osoiteon kuitenkin vaikeampaa pysyä. EJB 1.1 -käyttöjärjestelmässä ei ole tavanomaista tapaa kartoittaa sarjoitettavia objekteja relaatiotietokantaan. vaikkakin Osoite luokassa on oma joukko kenttiä, XML-käyttöönottokuvaaja ei tarjoa mekanismia näiden kenttien kartoittamiseksi tietokantaan. Useimmissa tapauksissa odotettiin, että sarjoitettavat objektit, kuten Osoite pysyisi binäärityypinä, jota kutsutaan joskus a möykky tyyppi tietokantataulukkoon.

Tämä ongelma pahenee entiteettipapujen tietomallin monimutkaisuuden kasvaessa. An Työntekijä esimerkiksi papuilla voi olla monia samanlaisia ​​lapsiobjekteja Osoite, kuten Edut ja Tehtävänimike. Nämä lapsiobjektit, joita kutsutaan riippuvaisiksi objekteiksi, voivat muodostaa monimutkaisia ​​objektikaavioita, jotka kattavat useita taulukoita relaatiotietokannassa. Lisäksi EJB 1.1: n CMP on suurelta osin riittämätön kestämään suhteita muihin pavuihin. Jos papu halusi ylläpitää EJB 1.1: ssä suhdetta toiseen pavuun, kontti käyttäisi automaattisesti ensisijaista avainta tai kahvaa linkkinä. Se on osoittautunut melko raakaksi mekanismiksi ylläpitää suhteita muihin pavuihin, joiden luonnollinen suhde voi olla kaksisuuntainen tai riippuvainen pelloista, joita ensisijainen avain tai kahva ei helposti esitä.

EJB 2.0 CMP -malli

EJB 2.0: ssa uusi sopimus CMP-entiteettipapun ja sitkeydenhallinnan välillä antaa sinun määritellä monimutkaisemmat ja kannettavat papu-papu, papu-riippuvainen ja jopa riippuvainen-riippuvainen objektisuhteet kokonaisuuden papuissa.

Pysyvä johtaja on uusi osallistuja Enterprise JavaBeans -asennuksen prosessiin. Säilön myyjä tai toimittaja, joka on erikoistunut tietyn tietokannan pysyvyyteen, voi tarjota pysyvyyden hallinnan. Ajatuksena on erottaa papusuhteiden hallintaan käytetty mekanismi säilöstä, joka vastaa tietoturvan, tapahtumien ja resurssien hallinnasta. Vastuiden erottaminen antaa eri sinnikkyyspäälliköille mahdollisuuden työskennellä eri konttien kanssa. Sen avulla entisöpapuista tulee entistä kannettavampia EJB-toimittajien ja sinnikkyyspäälliköiden keskuudessa.

Jos olet työskennellyt tai opiskellut CocoBasen, Thought Inc. -tuotteen kanssa, joka tuottaa automaattisesti BMP (Bean Managed Persistence) -papuja EJB 1.1 -säiliöille, olet jo jonkin verran perehtynyt siihen, miten pysyvä hallintatyökalu voi toimia. CocoBase luo kaiken BMP-papujen tietokannan käyttölogiikan papujen käyttöönottajan tarjoamien objektien ja relaation välisten kartoitustietojen perusteella. EJB 2.0: ssa pysyvyyden hallinta voi luoda CMP-entiteettien kartoituksen relaatiotietokantaan perustuen käyttöönottokuvaajan, papun abstraktiin pysyvyyskaavaan ja käyttöönottajan tekemään työhön. Pysyvyydenhallinta ei kuitenkaan rajoitu relaatiotietokantaan. Pysyvyyshallitsijoita voidaan kehittää myös objektitietokannoille sekä vanhoille ja ERP-järjestelmille, kuten SAP.

Jotta sinnikkyyspäällikkö erotettaisiin kontista, papun ja sinnikkyyspäällikön välillä oli määriteltävä sopimus. Sopimus ilmenee uudessa abstraktissa pysyvyysskeemassa. Tämä kaava määritetään uuden XML-elementtijoukon avulla asennuskuvaajassa ja joukolla koodiaidioita CMP-entiteettipapuissa. EJB 2.0: ssa CMP-papuluokka julistetaan abstraktiksi, ja sen pysyviin ja suhdekenttiin pääsee abstraktien lisäys- ja mutatointimenetelmien avulla, joiden menetelmäallekirjoitukset kartoittavat erityisiä elementtejä XML-käyttöönottokuvaajassa.

Kun papu otetaan käyttöön, voit luoda pysyviä hallintatyökaluja abstraktin papuluokan ja siitä riippuvien objektiluokkien konkreettisen toteutuksen luomiseksi XML-käyttöönottokuvaajan ja pavuluokan perusteella. Konkreettiset toteutukset sisältävät datakoodin, joka todella lukee ja kirjoittaa papun tilan tietokantaan ajon aikana. Ajon aikana säilö käyttää pysyvyydenhallintatyökalujen luomia alaluokkia papupalveluntarjoajan määrittelemien abstraktien luokkien sijaan.

Lihan antamiseksi keskusteluun annetaan CMP-olion esimerkki, joka selittää konkreettisemmin, miten abstrakti pysyvyyskaava toimii.

Esimerkki CMP-kokonaisuudesta EJB 2.0: ssa

EJB 2.0: ssa konttiohjattu kokonaisuuspapu on määritelty abstraktiksi eikä sen pysyviä kenttiä ole määritelty suoraan papuluokassa. Sen sijaan on kehitetty abstrakti pysyvä skeema, jonka avulla pavuntuottaja voi ilmoittaa pysyvät kentät ja papusuhteet epäsuorasti. Alla on esimerkki Työntekijä papu, joka käyttää uutta abstraktia pysyvää kaavaa. Huomaa, että mikään pysyvistä kentistä ei ole ilmoitettu papuluokassa.

julkinen tiivistelmä EmployeeBean toteuttaa javax.ejb.EntityBean {. // esiintymäkentät EntityContext ejbContext; // säilön hallinnoimat pysyvät kentät public abstract void setIdentity (int identity); public abstract int getIdentity (); public abstract void setFirstName (Merkkijono etunimi); julkinen abstrakti merkkijono getFirstName (); public abstract void setLastName (Merkkijono sukunimi); julkinen abstrakti merkkijono getLastName (); // säilön hallinnoimat suhdekentät public abstract void setContactInfo (ContactInfo info); julkinen tiivistelmä ContactInfo getContactInfo (); ...} 

Tämän pavun XML-käyttöönottokuvaajassa abstrakti pysyvyyskaava ilmoittaa säilön hallinnoimat kentät ja suhteet.

   TyöntekijäEJB ... Kontti ... henkilöllisyyden etunimi sukunimi ... YhteystiedotInfo YhteystiedotInfo katukaupunki valtion zip-kotiPuhelintyöPuhelinsähköposti ... Työntekijä-YhteystiedotInfo-työntekijä-on-ota yhteyttä yhdelle työntekijälleEJB-yhteyshenkilöTiedotYhteystiedotTiedot 
$config[zx-auto] not found$config[zx-overlay] not found