Dette emne indeholder en oversigt i store træk af den distribuerede komponentarkitektur, der er defineret i specifikationen for Sun Microsystems Enterprise JavaBeans™ (EJB) version 2.x-arkitekturen.
De samlede Enterprise JavaBeans-specifikationer og beskrivelser af teknologien er tilgængelige fra webstedet java.sun.com.
Enterprise-beans giver programudviklere flere fordele. De gør følgende:
- De sætter dig i stand til at udvikle distribuerede programmer ved at kombinere komponenter udviklet ved hjælp af værktøjer fra forskellige leverandører.
- De gør det let at udvikle programmer. Udviklere behøver ikke håndtere detaljer på lavt niveau, f.eks. transaktions- og tilstandsstyring, multithreading, ressourcepuljer og andre komplekse lavniveau-API'er. Programmører med den nødvendige viden kan dog stadig få direkte adgang til lavniveau-API'erne.
- De udvikles én gang og distribueres derefter på flere platforme uden at blive kompileret igen eller få ændret kildekoden.
- De sørger for kompatibilitet mellem den EJB-specifikation, der styrer brugen af Enterprise-beans, og andre Java™-API'er og CORBA. Derved opnås også, at Enterprise-beans og ikke-Java-programmer kan fungere sammen.
- Enterprise-beans
- En Enterprise-bean er en ikke-visuel komponent i et distribueret, transaktionsorienteret Enterprise-program. Enterprise-beans distribueres typisk til EJB-opbevaringssteder og udføres på EJB-servere. De kan tilpasses, ved at deres distributionsdeskriptorer ændres, og de kan oversættes sammen med andre beans og dermed indgå i nye programmer.
Der findes tre typer Enterprise-beans: sessions-beans, entitets-beans og meddelelsesstyrede beans. Sessions-beans og meddelelsesstyrede beans er grovkornede komponenter, som har til formål at modellere virksomhedsprocesser, mens entitets-beans bruges til at modellere finkornede dataobjekter.
- Sessions-beans: Sessions-beans er ikke-persistente Enterprise-beans.
De kan have en tilstand eller være tilstandsløse (Stateful/Stateless).
- Sessions-beans af typen Stateful: Arbejder på vegne af en enkelt klient og opretholder klientspecifikke sessionsoplysninger (kaldes konversationstilstand) på tværs af metodekald og transaktioner. De eksisterer i en enkelt klient/serversessions løbetid.
- Sessions-beans af typen Stateless: Opretholder ikke en konversationstilstand og placeres i en pulje af deres opbevaringssted, så de kan håndtere anmodninger fra flere klienter.
- Entitets-beans Entity-beans er Enterprise-beans, der indeholder vedvarende data, og som kan gemmes i diverse vedvarende datalagre. Hver entitets-bean har sin egen identitet. Entitets-beans, der administrerer deres egen persistens kaldes entitets-beans med bean-administreret persistens (BMP - bean-managed persistence). Entitets-beans, der delegerer deres persistens til deres EJB-opbevaringssted, kaldes CMP-entitets-beans (container-managed
persistence).
- Meddelelsesstyrede beans: Meddelelsesstyrede beans er Enterprise-beans, der modtager og behandler JMS-meddelelser. I modsætning til sessions- eller entitets-beans har meddelelsesstyrede beans ikke nogen grænseflader. Der er kun adgang til dem via meddelelsesfunktionen, og de opretholder ikke nogen konversationstilstand. Meddelelsesstyrede beans
tillader asynkron kommunikation mellem køen og lytteren og adskiller meddelelsesbehandling og forretningslogik.
- Ekstern klientoversigt
- Specifikationen af den eksterne klientoversigt blev tilgængelig fra og med EJB
1.1. En Enterprise-beans eksterne klientoversigt er uafhængig af placeringen.
En klient, der udføres i samme JVM som en bean-forekomst, bruger samme API til at få adgang til bean'en som en klient, der udføres i en anden JVM på samme maskine eller en anden maskine.
Den eksterne klientoversigt består af to grænseflader
- Ekstern grænseflade: Den eksterne grænseflade angiver de eksterne virksomhedsmetoder, som en klient kan kalde på en Enterprise-bean.
- Ekstern privat grænseflade: Den eksterne private grænseflade angiver de metoder, som eksterne klienter anvender til at finde, oprette og fjerne forekomster af
Enterprise-bean-klasser.
- Lokal klientoversigt
- Specifikationen af den lokale klientoversigt er tilgængelig i EJB 2.0 og nyere.
I modsætning til den eksterne klientoversigt er en beans lokale klientoversigt afhængig af placeringen. Adgang via en lokal klientoversigt til en Enterprise-bean kræver, at både den lokale klient og den Enterprise-bean, som stiller den lokale klientoversigt til rådighed, findes i samme JVM. Den lokale klientoversigt er derfor i modsætning til den eksterne klientoversigt afhængig af placeringen. Lokale grænseflader og lokale private grænseflader understøtter enkel adgang fra Enterprise-beans, der er lokale klienter. Sessions- og entitets-beans kan forbindes tæt med deres klienter og tillade adgang uden det ekstra forbrug, der ofte er forbundet med eksterne metodekald. Den lokale klientoversigt består af to grænseflader:
- Lokal grænseflade: Den lokale grænseflade er en slank udgave af den eksterne grænseflade, men til lokale klienter. Den inkluderer forretningslogikmetoder, der kan kaldes af en lokal klient.
- Lokal privat grænseflade: Den lokale private grænseflade angiver de metoder, som lokale klienter anvender til at finde, oprette og fjerne forekomster af
Enterprise-bean-klasser.
- Oversigt over webserviceprogramklienter
- I EJB 2.1-specifikationen blev der indført understøttelse af webserviceprogrammer i EJB-arkitekturen. En klient for en sessions-bean kan være en webserviceprogramklient.
En webserviceprogramklient kan udnytte en tilstandsløs sessions-beans oversigt over webserviceprogramklienter, som har en tilsvarende grænseflade til serviceprogramslutpunktet.
- Grænseflade til serviceprogramslutpunkt
- Grænsefladen til serviceprogramslutpunktet for en tilstandsløs sessions-bean udbyder funktionaliteten for sessions-bean'en som slutpunktet for et webserviceprogram. WSDL-dokumentet (Web Service
Description Language) til et webserviceprogram beskriver webserviceprogrammet som et sæt slutpunkter, der behandler meddelelser. Et WSDL-dokument kan inkludere en tilstandsløs sessions-beans grænseflade til serviceprogramslutpunkter som et af dens slutpunkter.
En eksisterende tilstandsløs sessions-bean kan revideres, så den indeholder en oversigt over webserviceprogramklienter, eller en grænseflade til serviceprogramslutpunkter kan tilknyttes vha. mapping fra et eksisterende WSDL, så den angiver den korrekte grænseflade.
En oversigt over webserviceprogramklienter er uafhængig af placeringen og kan benyttes via eksterne kald.
- EJB-klient-JAR-fil
- En EJB klient-JAR-fil er en valgfri JAR-fil, der kan indeholde de klientgrænseflader, som et klientprogram skal bruge, og klientoversigterne for de
Enterprise-beans, som er indeholdt i EJB JAR-filen. Hvis du vælger ikke at oprette en EJB klient-JAR-fil til et EJB-modul, vil alle klientgrænsefladeklasserne være indeholdt i EJB JAR-filen. Arbejdsbænken opretter som standard EJB klient-JAR-projekter for hvert tilsvarende EJB-projekt.
- EJB-opbevaringssted
- Et EJB-opbevaringssted er et runtime-miljø, der administrerer en eller flere Enterprise-beans. EJB-opbevaringsstedet administrerer Enterprise-bean-objekternes livscyklus, koordinerer distribuerede transaktioner og implementerer objektsikkerhed. Hvert EJB-opbevaringssted stilles normalt til rådighed af en EJB-server og indeholder et sæt Enterprise-beans, der udføres på serveren.
- Distributionsdeskriptor
- En distributionsdeskriptor er en XML-fil, der er pakket sammen med Enterprise-beans i en EJB JAR-fil eller en EAR-fil. Den indeholder metadata, der beskriver indhold og struktur for disse Enterprise-beans, og runtime-transaktioner og sikkerhedsoplysninger til EJB-opbevaringsstedet.
- EJB-server
- En EJB-server er en proces eller et program på højt niveau, som stiller et runtime-miljø til rådighed for udførelse af serverprogrammer, der bruger Enterprise-beans. En EJB-server stiller en navnefunktion til rådighed, som JNDI har adgang til, administrerer og koordinerer tildeling af ressourcer til klientprogrammer, giver adgang til systemressourcer og udfører transaktionsfunktioner. En EJB-server kan f.eks. leveres af en database eller en programserver.