EJB-arkitektur

Dette emnet inneholder en oversikt over den distribuerte komponentarkitekturen som er definert i spesifikasjonen for EJB-arkitekturen (Enterprise JavaBeans) fra Sun Microsystems.

Du finner komplette spesifikasjoner og beskrivelser av teknologien bak Enterprise JavaBeans på nettstedet java.sun.com .

Enterprise-bønner har flere fordeler for applikasjonsutviklere:

Enterprise-bønner
En Enterprise-bønne er en ikke-visuell komponent av en distribuert, transaksjonsorientert Enterprise-applikasjon. Enterprise-bønner blir vanligvis distribuert i EJB-containere og kjørt på EJB-servere. Du kan tilpasse dem ved å endre distribusjonsdeskriptorene, og du kan sette dem sammen med andre bønner for å opprette nye applikasjoner. Det finnes tre typer Enterprise-bønner: sesjonsbønner, entitetsbønner og meldingsdrevne bønner.
  • Sesjonsbønner: Sesjonsbønner er ikke-permanente Enterprise-bønner. De kan være stateful eller stateless. En stateful sesjonsbønne fungerer på vegne av en enkelt klient, og opprettholder klientspesifikk sesjonsinformasjon (kalt konversasjonstilstand) for flere metodekall og transaksjoner. Den eksisterer så lenge en enkelt klient/server-sesjon varer. En stateless sesjonsbønne opprettholder ikke noen konversasjonstilstand. Stateless sesjonsbønner grupperes etter containeren slik at de kan håndtere flere forespørsler fra flere klienter.
  • Entitetsbønner: Entitetsbønner er Enterprise-bønner som inneholder permanente data, og som kan lagres i ulike permanente datalagre. Hver entitetsbønne har sin egen identitet. Entitetsbønner som styrer sin egen persistens, kalles BMP-entitetsbønner (Bean-Managed Persistence). Entitetsbønner som delegerer persistensen, kalles CMP-entitetsbønner (Container-Managed Persistence).
  • Meldingsdrevne bønner: Meldingsdrevne bønner er Enterprise-bønner som mottar og behandler JMS-meldinger. I motsetning til sesjons- eller entitetsbønner har meldingsdrevne bønner ingen grensesnitt. Det er bare mulig å få tilgang til dem gjennom meldinger, og de opprettholder ikke noen konversasjonstilstand. Meldingsdrevne bønner tillater asynkron kommunikasjon mellom køen og lytteren, og de sørger for et skille mellom meldingsbehandling og firmalogikk.
Visningen Ekstern klient
Spesifikasjonen for visningen Ekstern klient ble tilgjengelig i EJB 1.1. Visningen Ekstern klient for en Enterprise-bønne er uavhengig av plassering. En klient som kjører i samme JVM som en bønneforekomst, bruker samme API til å få tilgang til bønnen som en klient som kjører i en annen JVM på samme eller en annen maskin.
  • Eksternt grensesnitt: Det eksterne grensesnittet oppgir de eksterne forretningsmetodene som en klient kan sende kall til på en Enterprise-bønne.
  • Eksternt hjemmegrensesnitt:Det eksterne hjemmegrensesnittet oppgir metodene som er brukt av eksterne klienter til å finne, opprette og fjerne forekomster av klasser av Enterprise-bønner.
Visningen Lokal klient
Spesifikasjonen for visningen Lokal klient er tilgjengelig i EJB 2.0 eller nyere. I motsetning til visningen Ekstern klient er visningen Lokal klient for en bønne plasseringsavhengig. Tilgangen som visningen Lokal klient har til en Enterprise-bønne, krever både den lokale klienten og Enterprise-bønnen som sørger for at visningen Lokal klient er i samme JVM. Visningen Lokal klient har derfor ikke den samme plasseringstransparensen som visningen Ekstern klient. Lokale grensesnitt og lokale hjemmegrensesnitt gir støtte for lettvektstilgang fra Enterprise-bønner som er lokale klienter. Sesjons- og entitetsbønner kan kobles tett til klientene, noe som tillater tilgang uten den systemadministrasjonen som vanligvis knyttes til eksterne metodekall.
  • Lokalt grensesnitt: Det lokale grensesnittet er en lettvektsversjon av det eksterne grensesnittet, men for lokale klienter. Det omfatter forretningslogikkmetoder som en lokal klient kan sende kall til.
  • Lokalt hjemmegrensesnitt:Det lokale hjemmegrensesnittet oppgir metodene som er brukt av lokale klienter til å finne, opprette og fjerne forekomster av klasser av Enterprise-bønner.
Visningen Web-tjenesteklient
I spesifikasjonen for EJB 2.1 introduserte EJB-arkitekturen støtte for web-tjenester. En klient for en sesjonsbønne kan være en web-tjenesteklient. En web-tjenesteklient kan bruke visningen Web-tjenesteklient for en stateless sesjonsbønne, som har et tilsvarende grensesnitt for tjenestesluttpunkt.
Grensesnitt for tjenestesluttpunkt
Grensesnitt for tjenestesluttpunkt for en stateless sesjonsbønne viser funksjonaliteten for sesjonsbønnen som et web-tjenestesluttpunkt. WSDL-dokumentet (Web Service Description Language) for en web-tjeneste beskriver web-tjenesten som et sett av sluttpunkt for meldinger. Et WSDL-dokument kan inkludere grensesnittet for tjenestesluttpunkt for en stateless sesjonsbønne som ett av sluttpunktene. En eksisterende stateless sesjonsbønne kan endres til å inkludere en visning av en web-tjenesteklient, eller et grensesnitt for tjenestesluttpunkt kan tilordnes fra en eksisterende WSDL for å gi det riktige grensesnittet.

En visning av en web-tjenesteklient er uavhengig av plassering, og det er mulig å få tilgang til den gjennom eksterne kall.

EJB-klientens JAR-fil
En JAR-fil for en EJB-klient er en valgfri JAR-fil som kan inneholde klientgrensesnittene et klientprogram trenger for å bruke klientvisningene for Enterprise-bønnene som ligger i EJB-klientens JAR-fil. Hvis du bestemmer deg for ikke å opprette en JAR-fil for EJB-klienten for en EJB-modul, vil alle klientgrensesnittklassene være i EJB-modulens JAR-fil. Arbeidsbenken oppretter som standard EJB-klientens JAR-prosjekter for hvert tilsvarende EJB-prosjekt.
EJB-container
En EJB-container er et kjøretidsmiljø som styrer en eller flere Enterprise-bønner. EJB-containeren styrer levetiden for Enterprise-bønner, koordinerer distribuerte transaksjoner og implementerer objektsikkerhet. EJB-containere kommer vanligvis fra en EJB-server, og de inneholder et sett av Enterprise-bønner som kjører på serveren.
Distribusjonsdeskriptor
En distribusjonsdeskriptor er en XML-fil som er pakket med Enterprise-bønnene i en JAR-fil for EJB eller en EAR-fil. Den inneholder metadata som beskriver innholdet og strukturen i Enterprise-bønnene, og kjøretidstransaksjonen og sikkerhetsinformasjonen for EJB-containeren.
EJB-server
En EJB-server er en prosess eller applikasjon på høyt nivå som sørger for et kjøretidsmiljø som støtter utføringen av serverapplikasjoner som bruker Enterprise-bønner. En EJB-server har en JNDI-tilgjengelig navngivningstjeneste, den styrer og koordinerer tildelingen av ressurser til klientapplikasjoner, gir tilgang til systemressurser og sørger for en transaksjonstjeneste. En EJB-server kan for eksempel leveres av en database- eller applikasjonsserver.