EJB 2.x-ontwikkelresources

In dit onderwerp vindt u een uitleg van gangbare resources en tools voor het ontwikkelen van EJB versie 2.x.

EJB-modules

EJB-modules worden afgebeeld in de view Projectverkenner van het perspectief Java™ EE en maken deel uit van EJB-projecten.

Een EJB-module wordt gebruikt om een of meer enterprisebeans te assembleren in één eenheid die in gebruik kan worden genomen. Een EJB-module wordt ontwikkeld in een EJB-project en kan worden geëxporteerd als zelfstandig JAR-bestand of worden gecombineerd met andere EJB- of webmodules in een bedrijfstoepassing. De indeling van een EJB-JAR-bestand is gelijk aan de indeling van standaard Java-archiefbestanden. Een EJB-module bevat de volgende onderdelen:

  • Een of meer enterprisebeans met bijbehorende CLASS- en JAVA-bestanden
  • Afbeeldingen en andere bestanden, afhankelijk van het doel waarvoor de enterprisebean dient
  • Een ingebruiknamedescriptor. Het bestandstype voor de ingebruiknamedescriptor is XML (Extensible Markup Language). Dit bestand declareert de inhoud van de EJB-module, definieert de structuur van de beans in de module en beschrijft hoe de beans moeten worden gebruikt tijdens runtime.
  • Het bestand MANIFEST.MF in de directory META-INF. Het manifestbestand kan een klassenpadvermelding bevatten, met verwijzingen naar andere JAR-bestanden of EJB-modules in een J2EE-bedrijfstoepassing. Het bestand definieert de externe dependency's van de module.

Een EJB-module wordt in een EJB-container geïnstalleerd en wordt hierin ook uitgevoerd.

Een enterprisebean is een Java-component die kan worden gecombineerd met andere resources voor het maken van gedistribueerde client/server-toepassingen.

Opmerking: Als u besluit een EJB-client-JAR-bestand voor een EJB-module te maken, worden de clientinterfaceklassen voor de enterprisebeans niet opgenomen in het JAR-bestand van de EJB, maar wel in het JAR-bestand van de EJB-client.
EJB-projecten

In de workbench kunt u resources voor bedrijfstoepassingen in projecten maken en beheren. Een EJB-project is een logische module waarmee u uw enterprisebeans kunt organiseren.

De workbench ondersteunt projecten van EJB 1.1, EJB 2.0 en EJB 2.1. Het J2EE-specificatieniveau van een bijbehorend EAR-project moet worden ingesteld op J2EE 1.3 of hoger voor projecten van EJB 2.0 en J2EE 1.4 voor projecten van EJB 2.1. In een project van EJB 1.1 kunt u alleen beans van EJB 1.1 maken.

Een EJB-project is een gespecialiseerd Java-project. Een EJB-project moet net als een Java-project een of meer bronmappen hebben om de bron- en uitvoerbestanden voor het project op te kunnen slaan. Standaard heet de bronmap ejbModule. U kunt deze naam echter wijzigen bij het maken van het project of nieuwe bronmappen. Bij het publiceren of in gebruik nemen van het project wordt de inhoud van de mappen samengevoegd.

Het EJB-project kan niet als bronmap worden gebruikt. Doet u dit wel, dan treden er fouten op. Verder kan slechts één bronmap de map META-INF met het bestand MANIFEST.MF en de ingebruiknamedescriptor bevatten.

Opmerking: Als u besluit een EJB-client-JAR-bestand voor een EJB-module te maken, worden de clientinterfaceklassen voor de enterprisebeans in plaats van het EJB-project in een afzonderlijk EJB-client-JAR-project opgenomen. EJB-client-JAR-projecten worden in de Projectverkenner aangeduid als Java-projecten onder het knooppunt Overige projecten.
EJB-clientprojecten

Met de EJB-tools kunt u EJB-client-JAR-projecten maken voor EJB-modules. Een EJB-client-JAR-project bevat alle interfaceklassen die vereist zijn voor een clientprogramma om gebruik te kunnen maken van de clientviews van de enterprisebeans in het EJB-project. Als u een EJB-clientproject voor een EJB-project maakt, wordt een nieuw Java-project gemaakt en aan het werkgebied toegevoegd. Het EJB-clientproject wordt als JAR-functiebestand toegevoegd aan elke module waarvan het EJB-project deel uitmaakt.

Standaard wordt er ook een EJB-client-JAR-project gemaakt wanneer u een EJB-project maakt met behulp van de wizard. U kunt in de wizard echter aangeven dat u dit niet wilt doen.

Tip: Bovendien kunt u het EJB-clientproject toevoegen aan een andere bedrijfstoepassing waarin het EJB-project niet als module is opgenomen. Zo weet u zeker dat het EJB-client-JAR-bestand wordt geëxporteerd en ingesloten bij het exporteren van het EAR-bestand met de toepassing.
Enterprisebeans

Een enterprisebean is een Java-component die kan worden gecombineerd met andere resources voor het maken van gedistribueerde client/server-toepassingen.

Er zijn drie soorten enterprisebeans: entiteitbeans, sessiebeans en bericht-gestuurde beans. In een bedrijfstoepassing worden alle beansoorten meestal samen gebruikt.

Entiteitbeans
Een entiteitbeans slaat permanente gegevens op. Voor een entiteitbean waarbij het vasthouden van gegevens door de container wordt beheerd (Container-Managed Persistence, CMP) zijn databaseverbindingen nodig. Als een entiteitbean het vasthouden van gegevens zelf regelt, wordt dit uitgevoerd op de manier die in de code van de bean is vastgelegd. Dit kan bijvoorbeeld gebeuren door naar databases of XML-bestanden te schrijven.
Sessiebeans
Sessiebeans vereisen geen databasetoegang, maar kunnen deze wel zo nodig indirect aanvragen aan de hand van entiteitbeans. Sessiebeans kunnen verder rechtstreeks toegang tot databases (en andere resources) krijgen door middel van resourceverwijzingen.
Bericht-gestuurde beans
Een bericht-gestuurd bean is een speciaal type enterprisebean, omdat deze berichten verwerkt in het JMS-berichtenvoorzieningssysteem. De bedrijfslogica die door een bericht-gestuurde bean wordt uitgevoerd, hangt net als bij een standaard JMS-berichtconsument af van de berichtinhoud. Het dynamisch maken en toewijzen van instances van bericht-gestuurde beans is op diverse manieren vergelijkbaar met het gedrag van sessie-enterprisebeans zonder status. Bericht-gestuurde beans verschillen echter op een aantal punten van sessie-enterprisebeans zonder status (en andere soorten enterprisebeans):
  • Bericht-gestuurde beans verwerken meerdere JMS-berichten tegelijk en voeren geen reeks van methode-aanroepen uit.
  • Bericht-gestuurde beans kennen geen home- of remote-interface, waardoor ze niet rechtstreeks kunnen worden opgevraagd door interne of externe clients.
Ingebruiknamedescriptors

Een ingebruiknamedescriptor bevat configuratiegegevens die door de runtime-omgeving worden gebruikt voor een toepasing. Een descriptor kan de volgende informatie bevatten:

  • De structuur en de inhoud (enterprisebeans bijvoorbeeld) van de toepassing
  • Verwijzingen naar interne en externe dependency's. Een enterprisebean in een EJB-module kan bijvoorbeeld afhankelijk zijn van een andere enterprisebean die zich niet in dezelfde module bevindt.
  • Verwijzingen naar resourcefactory-objecten, zoals URL's of JDBC-gegevensbronnen
  • Beveiligingsrollen die door de container worden gehanteerd voor het implementeren van de toegangsbesturing voor de toepassing
  • Informatie over de manier waarop (en of) transacties voor de toepassing moeten worden beheerd door de container

Ingebruiknamedescriptors zijn XML-bestanden die bij de bestanden van de toepassing zijn ingesloten in een Java-archiefbestand. Een EJB-ingebruiknamedescriptor heet ejb-jar.xml en bevindt zich in de map META-INF van een EJB-project. Een J2EE-toepassing bevat één ingebruiknamedescriptorbestand op toepassingsniveau, dat de hele toepassing bestuurt. Bovendien bevat de toepassing diverse ingebruiknamedescriptors op componentniveau, die elk voor een module in de toepassing gelden.