In dit onderwerp vindt u een algemeen overzicht van de architectuur voor gedistribueerde componenten in de EJB-specificatie (Enterprise JavaBeans) van Sun Microsystems.
De volledige specificaties en beschrijvingen van de technologie van Enterprise JavaBeans zijn beschikbaar via de website java.sun.com
.
Enterprisebeans bieden diverse voordelen voor ontwikkelaars van toepassingen:
- U kunt er gedistribueerde toepassingen mee maken door onderdelen te combineren
die zijn ontwikkeld met tools van verschillende leveranciers.
- U kunt er eenvoudig toepassingen mee schrijven. U hoeft zich niet te bekommeren
om low level details van transactie- en statusbeheer, multithreading, resourcepools
en andere ingewikkelde low level API's. Geavanceerde programmeurs hebben (indien nodig)
echter nog steeds rechtstreeks toegang tot de low level API's.
- Eenmaal ontwikkelde toepassingen kunnen in gebruik worden genomen op meerdere platforms
zonder hercompilatie of broncodewijzigingen.
- De EJB-specificatie waarmee het gebruik van enterprisebeans wordt bestuurd, is compatibel met Java-API's en CORBA. De specificatie zorgt tevens voor compatibiliteit
tussen enterprisebeans en niet-Java-toepassingen.
- Enterprisebeans
- Een enterprisebean is een niet-visuele component van een gedistribueerde,
transactie-georiënteerde bedrijfstoepassing. Enterprisebeans worden gewoonlijk in
gebruik genomen in EJB-containers en uitgevoerd op EJB-servers. U kunt deze aanpassen
door de bijbehorende ingebruiknamedescriptors te wijzigen. U kunt ze ook assembleren met andere
beans om nieuwe toepassingen te maken. Er zijn drie soorten enterprisebeans: sessiebeans,
entiteitbeans en bericht-gestuurde beans.
- Sessiebeans: Sessiebeans zijn niet-persistente
enterprisebeans. Deze kunnen met of zonder status zijn (stateful of stateless). Een sessiebean
met status treedt op namens een enkele client en onderhoudt client-specifieke sessie-informatie
(ook wel de conversationele status genoemd) over verschillende methodeaanroepen en
transacties. De bean bestaat gedurende een enkele client/server-sessie.
In een sessiebean zonder status wordt geen conversationele status
bijgehouden. Sessiebeans zonder status worden gegroepeerd op de bijbehorende containers
om verschillende aanvragen van verschillende clients af te handelen.
- Entiteitbeans: Entiteitbeans zijn enterprisebeans die
permanente gegevens bevatten en kunnen worden opgeslagen in diverse archieven voor
permanente gegevens. Elke entiteitbean is gekoppeld aan een eigen identiteit. Entiteitbeans
die hun eigen handhaving beheren, worden BMP-entiteitbeans (bean-managed persistence)
genoemd. Entiteitbeans die hun handhaving overdragen aan de bijbehorende EJB-container
worden CMP-entiteitbeans (container-managed persistence) genoemd.
- Bericht-gestuurde beans: Bericht-gestuurde beans zijn
enterprisebeans waarmee JMS-berichten worden ontvangen en verwerkt. In tegenstelling tot sessie-
en entiteitbeans, hebben bericht-gestuurde beans geen interfaces. Ze zijn alleen toegankelijk
via een berichtenvoorziening (messaging) en houden geen conversationele status bij.
Bericht-gestuurde beans bieden de mogelijkheid tot asynchrone communicatie tussen de
wachtrij en de listener, en zorgen voor een scheiding tussen berichtenverwerking en
bedrijfslogica.
- Client-op-afstandview
- De specificatie client-op-afstandview is beschikbaar sinds
EJB 1.1. De client-op-afstandview van een enterprisebean is onafhankelijk van de locatie.
Een client die wordt uitgevoerd op dezelfde JVM als een beaninstance, gebruikt dezelfde API om toegang tot de
bean te krijgen als een client die wordt uitgevoerd op een andere JVM op dezelfde of een andere machine.
- Interface op afstand: In de interface op afstand worden
de bedrijfsmethoden op afstand opgegeven die door een client kunnen worden aangeroepen voor een enterprisebean.
- Home-interface op afstand: In de home-interface op afstand worden de methoden
opgegeven die door clients op afstand worden gebruikt voor het zoeken, maken en verwijderen van instances
van enterprisebeanklassen.
- Lokale-clientview
- De specificatie lokale-clientview kan worden gebruikt in EJB 2.0 of
hoger. In tegenstelling tot de client-op-afstandview, is de lokale-clientview van een bean
wel afhankelijk van de locatie. Om toegang te kunnen krijgen tot de lokale-clientview van een enterprisebean moeten
zowel de lokale client als de enterprisebean die de lokale-clientview aanlevert zich op
dezelfde JVM bevinden. De lokale-clientview is derhalve minder transparant qua
locatie dan de client-op-afstandview. Lokale interfaces en lokale
home-interfaces bieden ondersteuning voor LDAP-toegang via enterprisebeans
die lokale clients zijn. Sessie- en entiteitbeans kunnen naadloos worden gekoppeld aan
de bijbehorende clients, zonder de overhead die methode-aanroepen voor toegang op afstand
normaal met zich meebrengen.
- Lokale interface: De lokale interface is
een 'lichtgewicht' versie van de interface op afstand, maar dan voor lokale clients. De lokale
interface omvat bedrijfslogicamethoden die kunnen worden aangeroepen door een lokale client.
- Lokale home-interface: In de lokale home-interface worden de methoden
opgegeven die door lokale clients worden gebruikt voor het zoeken, maken en verwijderen van instances
van enterprisebeanklassen.
- Webserviceclientview
- In de EJB 2.1-specificatie biedt de EJB-architectuur ondersteuning voor
webservices. Een client voor een sessiebean kan een webserviceclient zijn.
Een webserviceclient kan gebruikmaken van de webserviceclientview van een sessiebean
zonder status, die een overeenkomstige service-eindpuntinterface heeft.
- Service-eindpuntinterface
- De service-eindpuntinterface voor een sessiebean zonder status biedt de functionaliteit van de sessiebean als webservice-eindpunt. In het WSDL-document (Webservice
Description Language) voor een webservice wordt de webservice beschreven als een
set eindpunten die werkt met berichten. Een WSDL-document kan de service-eindpuntinterface
van een sessiebean zonder status bevatten als een van de desbetreffende eindpunten.
Een bestaande sessiebean zonder status kan zo worden gewijzigd dat er een webserviceclientview
in wordt opgenomen. Daarnaast kunt u een service-endpuntinterface toewijzen op basis van een
bestaande WSDL om de juiste interface op te geven.
Een webserviceclientview is niet afhankelijk
van een locatie en is toegankelijk via een aanroep op afstand.
- JAR-bestand EJB-client
- Een EJB-client-JAR-bestand is een optioneel JAR-bestand dat de clientinterfaces
kan bevatten die vereist zijn voor een clientprogramma om gebruik te kunnen maken van
de clientviews van de enterprisebeans in het EJB-JAR-bestand. Als u besluit om geen
EJB-client-JAR-bestand voor een EJB-module te maken, worden alle clientinterfaceklassen
in het EJB-JAR-bestand geplaatst. Standaard wordt door de workbench per EJB-project
een EJB-client-JAR-project gemaakt.
- EJB-container
- Een EJB-container is een runtime omgeving waarin een of meer enterprisebeans
worden beheerd. Via de EJB-container worden de levenscyclussen van enterprisebeanobjecten
beheerd, gedistribueerde transacties gecoördineerd en de objectbeveiliging
geïmplementeerd. Gewoonlijk wordt elke EJB-container aangeleverd door een EJB-server en
bevat deze container een set enterprisebeans die op de server worden uitgevoerd.
- Ingebruiknamedescriptor
- Een ingebruiknamedescriptor is een XML-bestand dat samen met de enterprisebeans
is verpakt in een EJB-JAR-bestand of een EAR-bestand. Het bevat metagegevens waarin de
inhoud en de structuur van de enterprisebeans worden beschreven, alsmede de runtime transactie-
en beveiligingsinformatie voor de EJB-container.
- EJB-server
- Een EJB-server is een high level proces of toepassing dat zorgt voor
een runtime omgeving ter ondersteuning van de uitvoering van servertoepassingen die
gebruikmaken van enterprisebeans. Een EJB-server omvat een JNDI-naamgevingsservice,
het beheer en de coördinatie van de toewijzing van resources aan clienttoepassingen,
de toegang tot systeemresources, en een transactieservice. Een EJB-server
kan bijvoorbeeld worden aangeleverd via een database of toepassingenserver.