In dit onderwerp vindt u een algemeen overzicht van de architectuur voor gedistribueerde componenten in de specificatie van de Sun Microsystems Enterprise JavaBeans™ (EJB)
versie 2.x-architectuur.
De volledige specificaties en beschrijvingen van de technologie van EnterpriseJavaBeans zijn beschikbaar via de websitejava.sun.com.
Enterprisebeans bieden diverse voordelen voor toepassingenontwikkelaars. Ze doen het volgende:
- 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.
- Compatibel met de EJB-specificatie waarmee het gebruik van enterprisebeans wordt bestuurd, en compatibel met Java™ API's en CORBA. Het 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 berichtgestuurde beans. Sessiebeans en berichtgestuurde beans zijn
ruwe componenten die zijn bedoeld als model voor het bedrijfsproces terwijl
entiteitenbeans worden gebruikt als model voor gegevensobjecten op detailniveau.
- Sessiebeans: Sessiebeans zijn niet-persistente enterprisebeans.
Deze kunnen met of zonder status zijn (stateful of stateless).
- Sessiebean met status: Treedt op namens een enkele client en behoudt
client-specifieke sessie-informatie (ook wel de conversationele status genoemd) over
verschillende methodeaanroepen en transacties. De bean bestaat gedurende een enkele client/server-sessie.
- Sessiebeans zonder status: Worden gegroepeerd op de bijbehorende containers
om verschillende aanvragen van verschillende clients af te handelen.
- Entiteitenbeans: Entiteitenbeans zijn enterprisebeans die permanente gegevens bevatten en in diverse opslaglocaties voor permanente gegevens kunnen worden opgeslagen. 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.
- Berichtgestuurde beans: Berichtgestuurde beans zijn enterprisebeans waarmee
JMS-berichten worden ontvangen en verwerkt. In tegenstelling tot sessie-
en entiteitbeans, hebben berichtgestuurde beans geen interfaces. Ze zijn alleen toegankelijk
via een berichtenvoorziening (messaging) en behouden geen conversationele status. Berichtgestuurde 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-afstand 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.
De view client op afstand bestaat uit twee interfaces
- 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. De view lokale client bestaat uit twee interfaces
- 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-eindpuntinterface 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.
- EJB-client-JAR-bestand
- 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.