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:
- Du kan bruke dem til å bygge distribuerte applikasjoner ved å kombinere komponenter
som er utviklet med verktøy fra flere leverandører.
- De gjør det enkelt å skrive applikasjoner. Du trenger ikke å bekymre deg om detaljene i
transaksjons- og tilstandsstyring, flertrådskjøring, ressurskøer eller andre
lavnivå-APIer. Hvis det er nødvendig, kan ekspertprogrammerere imidlertid
fremdeles få direkte tilgang til lavnivå-APIene.
- De kan utvikles en gang og deretter distribueres
til flere plattformer uten ny kompilering eller endringer i kildekoden.
- EJB-spesifikasjonen som styrer bruken av Enterprise-bønner, er kompatibel med andre
Java-APIer og CORBA. Den gjør også at
Enterprise-bønner og ikke-Java-applikasjoner kan brukes sammen.
- 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.