Dette emnet inneholder en oversikt over den distribuerte komponentarkitekturen som er definert i komponentarkitekturen for Sun Microsystems Enterprise JavaBeans (EJB) versjon 2.x.
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 utvikles en gang og distribueres deretter til flere plattformer uten ny kompilering eller endringer i kildekoden.
- De tilbyr kompatibilitet mellom EJB-spesifikasjonen som styrer bruken av Enterprise-bønner og andre Java-APIer og CORBA. De 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ønneer, entitetsbønner og meldingsdrevne
bønner. Sesjonsbønner og meldingsdrevne bønner er grovkornede komponenter som er utviklet til å være modell for forretningsprosesser, mens entitetsbønner brukes til å være modell for finkornede dataobjekter.
- Sesjonsbønner: Sesjonsbønner er ikke-permanente Enterprise-bønner.
De kan være
stateful eller stateless.
- Stateful sesjonsbønner: Fungerer på vegne av en enkelt klient, og opprettholder klientspesifikk sesjonsinformasjon (kalt konversasjonstilstand) for flere metodekall og transaksjoner. De eksisterer så lenge en enkelt klient/server-sesjon varer.
- Stateless sesjonsbønner: Opprettholder ikke noen konversasjonstilstand, og 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 til EJB-containeren, 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.
Visningen Ekstern klient består av to grensesnitt:
- 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. Visningen Lokal klient består av to grensesnitt:
- 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 å
bruke, og 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.