EJB-architectuur

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:

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.