Entwicklung eines Geschäftsreservierungssystems basierend auf EJB-Technologie
Autor:Eve Cole
Aktualisierungszeit:2009-07-02 17:12:35
Bei der Entwicklung großer Netzwerksysteme wird zunehmend Technologie eingesetzt. In diesem Artikel stellt der Autor die Definition von EJB (Enterprise Java Beans), das auf der EJB-Technologie basierende Strukturmodell des Anwendungssystems sowie den Inhalt und die Klassifizierung von EJB vor Schließlich wurde in Kombination mit dem EJB-basierten Geschäftsreservierungssystem ein Strukturmodell und EJB-Komponenten verwendet.
EJB ist technisch gesehen kein „Produkt“, sondern eine technische Spezifikation. Die Definition von EJB durch SUN lautet: Die Struktur von EJB ist eine Komponentenstruktur für die Entwicklung und Konfiguration komponentenbasierter verteilter Geschäftsanwendungen. Mit EJB-Strukturen entwickelte Anwendungen sind skalierbar, transaktionsorientiert und für mehrere Benutzer sicher. Diese Anwendungen müssen möglicherweise nur einmal geschrieben werden, können aber auf einer Task-Server-Plattform bereitgestellt werden, die die EJB-Spezifikation unterstützt. Im Allgemeinen ist EJB ein serverseitiges Standardkomponentenmodell für die Überwachung von Komponententransaktionen.
Systemstrukturmodell basierend auf EJB-Technologie
Die EJB-Struktur ist eine serverseitige Komponentenstruktur, bei der es sich um eine hierarchische Struktur handelt. Ihr Strukturmodell ist in Abbildung 1 dargestellt. Dieses Strukturmodell kann normalerweise in Kundenschicht, Geschäftslogikschicht und Datenschicht unterteilt werden. Der Autor wird im Folgenden eine kurze Einführung dazu geben.
Abbildung 1: EJB-basiertes Anwendungsstrukturmodell
Die Client-Schicht dient hauptsächlich dazu, verschiedene Zugriffsanforderungen für das gesamte System zu erfüllen und folgende Aufgaben zu erledigen:
Benutzereingaben entgegennehmen, Benutzereingaben analysieren und prüfen und entsprechend verarbeiten;
Zeigt die vom serverseitigen High-Level übermittelten Laufergebnisse an.
Die Client-Schicht besteht normalerweise aus Client-Prozessen, die vom Browser dynamisch erstellt und zerstört werden.
Geschäftslogikschicht Dies ist der kritischste Teil des gesamten Systems. Die Geschäftslogikschicht ist normalerweise in zwei Schichten unterteilt. Die obere Schicht ist die Anforderungsempfangsschicht (allgemein als Webschicht bezeichnet), die zum Empfangen von Anforderungen vom Browser und zum Übertragen der Anforderungen zur Verarbeitung der Ergebnisse verwendet wird werden an den Browser gesendet. Diese Prozesse bestehen hauptsächlich aus JSP-Seiten, webbasierten Applets und Servlets, die HTML-Seiten anzeigen. Die unterste Schicht ist die Anforderungsverarbeitungsschicht (im Allgemeinen als EJB-Schicht bezeichnet), die den Abhörprozess, den Verarbeitungsprozess und den Datenbankbetriebsprozess umfasst. Sie ist dafür verantwortlich, Kundenanfragen von der Anforderungsempfangsschicht zu verarbeiten und gleichzeitig zu verarbeiten Übergeben Sie die Anforderungsergebnisse an die Anforderungsempfangsschicht. Bei Bedarf müssen die Verarbeitungsergebnisse zur Speicherung an die Datenschicht übergeben werden.
Die Datenschicht stellt hauptsächlich Datendienste für die Geschäftslogikschicht bereit, z. B. das Speichern der Verarbeitungsergebnisse der Geschäftslogikschicht und die Rückgabe der von der Geschäftslogikschicht abgerufenen Datenergebnisse. Sie wird auch verwendet, um Änderungen in der Datenquelle abzuschirmen Wenn sich die Datenbank ändert, müssen wir sie nur ändern. Verwenden Sie einfach die Anweisung, um eine Verbindung zur Datenquelle herzustellen.
Klassifizierung von EJB-Komponenten Normalerweise gibt es zwei Grundtypen von serverseitigen EJB-Komponenten: Entity Bean und Session Bean.
Abbildung 2: Architektur des Geschäftsreservierungssystems
Entity Beans sind Modelle, die für reale Objekte erstellt wurden, bei denen es sich normalerweise um dauerhafte Datensätze in einer Datenbank handelt. Entity Bean erstellt ein Modell für Geschäftskonzepte, das als Substantive ausgedrückt werden kann. Es beschreibt sowohl den Zustand realer Objekte als auch deren Verhalten und ermöglicht Entwicklern die Kapselung von Daten und Geschäftsregeln, die sich auf bestimmte Konzepte beziehen. Session Bean ist eine Enterprise Bean, die über die Home-Schnittstelle erstellt wird und für Client-Verbindungen bestimmt ist. Session-Bean-Instanzen werden im Allgemeinen nicht mit anderen Clients geteilt. Session Bean ist eine Erweiterung der Clientanwendung und ist für die Verwaltung des gesamten Prozesses oder der gesamten Aufgabe verantwortlich. Session Beans können die Interaktion zwischen Entity Beans verwalten und beschreiben, wie sie zusammenarbeiten, um eine spezielle Aufgabe zu erledigen.
Entity-Beans können basierend auf der Art und Weise, wie sie die Persistenz verwalten, in Container-verwaltete Beans und mithilfe von Beans verwaltete Beans unterteilt werden. Containerverwaltete Beans werden automatisch vom EJB-Container verwaltet. Der Container weiß, wie die Felder der Bean-Instanz der Datenbank zugeordnet sind, und verwaltet automatisch das Einfügen, Aktualisieren und Löschen entitätsbezogener Daten in der Datenbank Beans müssen dies alles explizit tun. Bean-Entwickler müssen Code schreiben, um die Datenbank zu betreiben. Der EJB-Container teilt der Bean-Instanz nur mit, wann sie Daten sicher in die Datenbank einfügen, aktualisieren und löschen kann. Die Bean-Instanz erledigt die gesamte Persistenzarbeit selbst.
Session Beans können je nachdem, ob sie Stateful sind, in Stateless Beans und Stateful Beans unterteilt werden. Stateless Session Beans sind in der Regel vielseitig und wiederverwendbar; Stateful Session Beans sind Erweiterungen von Clientanwendungen, die Aufgaben im Namen von Clients erledigen und den clientbezogenen Status beibehalten.
Entwicklung eines Geschäftsreservierungssystems Das Kabinenreservierungssystem ist ein Geschäftsreservierungssystem, das auf der auf der J2EE-Plattform entwickelten EJB-Komponententechnologie basiert. Sein Hauptprozess besteht darin, dass der Benutzer nach der Anmeldung durch die Kundenauswahlseite und die Navigationsauswahlseite geführt wird wiederum und stellt dem Kunden die Option „Wählen Sie eine verfügbare Kabine“ zur Verfügung (erhalten Sie die Liste der verfügbaren Kabinen von der TravelAgentBean). Die listAvailableCabin()-Methode von TravelAgentBean wird vom Servlet aufgerufen, das diese Webseite generiert. Die Kabinenliste wird zum Erstellen einer verwendet Wenn der Benutzer eine Kabine auswählt und die Auswahl absendet, wird eine HTTP-Anfrage an den EJB-Server (Websphere Application Server) gesendet. Nachdem der Server die Anfrage empfangen hat, sendet er sie Es wird an das ReservationServlet gesendet. Um die eigentliche Buchung vorzunehmen, werden die von der BookPassage()-Methode zurückgegebenen Tag-Informationen verwendet, um eine weitere Webseite zu erstellen, die an den Browser des Benutzers zurückgesendet wird. Wenn die Reservierung erfolgreich ist, ruft ProcessPaymentServlet die Zahlungsmethode in ProcessPaymentBean auf, um den Ladevorgang für den Kunden zu implementieren. Seine spezifische Struktur ist in Abbildung 2 dargestellt.
Die EJB-Komponenten im Reservierungssystem umfassen hauptsächlich die folgenden Teile:
CabinBean: Entity Bean, der Primärschlüssel ist CabinPK, ein Entity Bean, mit dem die Kabine eines Schiffes in der realen Welt gekapselt wird.
CustomerBean: Entity Bean, der Primärschlüssel ist CustomerPK, ein Entity Bean, mit dem Verbraucher gekapselt werden, die in der realen Welt Kreuzfahrtkabinen buchen müssen.
CruiseBean: Entity Bean, der Primärschlüssel ist CruisePK, eine Entity Bean, die zur Kapselung von Schiffsrouten in der realen Welt verwendet wird. ReservationBean: Entity Bean, der Primärschlüssel ist CruiseID, CabinID. Es stellt einen unveränderten Datensatz in der Datenbank dar, d. h. eine Reservierung. Es wird hauptsächlich verwendet, um Doppelbuchungen zu verhindern. Der Grund für dieses Problem liegt darin, dass zwischen dem Zeitpunkt, zu dem der Kunde die Kabine und die Route auswählt, und dem Zeitpunkt, zu dem die Methode bookPassage() aufgerufen wird, eine Lücke besteht. TravelAgentBean: Stateful Session Bean, eine Session Bean, die für den Workflow der Buchung von Flugkabinen verantwortlich ist. Sie kapselt den Prozess des Abschlusses eines Buchungsvorgangs für eine Route und wird in Kundenanwendungen von Reisebüros auf der ganzen Welt verwendet. TravelAgentBean erfüllt nicht nur die Bedürfnisse der Verbraucher nach der Buchung von Tickets, sondern bietet auch Informationen über die verbleibenden Kabinen während der Reise. Um diese Aufgabe abzuschließen, muss die Bean wissen, aus welcher Route, Kabine und welchem Kunden die Reservierung besteht. Nach dem Sammeln dieser Informationen schließt die Methode bookPassage() den Buchungsprozess ab. Sie ist für die Abrechnung mit dem Kunden verantwortlich Konto Auf der richtigen Route Buchen Sie die ausgewählte Kabine auf dem richtigen Schiff und generieren Sie über die Ticketklasse ein Ticket für den Kunden. Hier müssen wir die Klasse CreditCard verwenden, um relevante Informationen über die Kreditkarte des Kunden zu speichern. Gleichzeitig wird die Methode ListAvailableCabins() verwendet, um die verfügbaren Kabinen anzuzeigen, die nicht gebucht wurden.
ProcessPaymentBean: Stateless Session Bean, bei dem es sich um den Prozess der Belastung von Verbrauchern in einem Transaktionssystem handelt. Es definiert drei Transaktionsmethoden für Scheck-, Bargeld- und Kreditkartenzahlungsmethoden, nämlich ByCheck(), ByCash() und ByCredit().
Beispielprogramm für das Geschäftsreservierungssystem Das gesamte Geschäftsreservierungssystem wurde unter IBM VisualAge für Java entwickelt. In dieser IDE-Entwicklungsumgebung sind Entity-Beans viel einfacher zu entwickeln als Session-Beans, um den Entwicklungsprozess vorzustellen der EJB-Komponenten:
1. TravelAgent-Remote-Schnittstelle Bietet eine Methode zum Festlegen der Route und Kabinen-ID, die der Kunde buchen möchte. Darüber hinaus ist die boolPassage()-Methode so eingerichtet, dass sie dem Kunden seine Reservierung in Rechnung stellt und ein Ticket für den Kunden generiert. Der spezifische Code lautet wie folgt:
Paket com.titan.travelagent;
import java.rmi.RemoteException;
import javax.ejb.FinderException;
import com.titan.cruise.Cruise;
import com.titan.customer.Customer;
import com.titan.process payment.CreditCard;
Die öffentliche Schnittstelle TravelAgent erweitert javax.ejb.EJBObject
{
public void setCruiseID(int cruise) löst RemoteException, FinderException aus;
public int getCruiseID( ) löst RemoteException, IncompleteConversationalState aus;
public void setCabinID(int cab) löst RemoteException, FinderException aus;
public int getCabinID()throws RemoteException, IncompleteConversationalState;
public int getCustomerID()throws RemoteException, IncompleteConversationalState;
public Ticket boolPassage(CreditCard-Karte, doppelter Preis) löst RemoteException, IncompleteConversationalState aus;
}
2. TravelAgent Home-Schnittstelle
Der Schnittstellencode von TravelAgent Home lautet wie folgt:
puckage com.titan.tracelagent;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import com.titan.customer.Customer;
öffentliche Schnittstelle TravelAgentHome erweitert javax.ejb.EJBHome {
public TravelAgent create(Customer cust) throws RemoteException,CreateException;}
3. Die TravelAgent-Bean-Klasse muss alle Verhaltensweisen in der Remote-Schnittstelle und der Home-Schnittstelle implementieren. Aus Platzgründen wird der Implementierungscode in diesem Artikel nicht vorgestellt. Interessierte Leser können ihn selbst vervollständigen.
Durch die oben genannten Schritte haben wir die Entwicklung der EJB-Komponente eines Geschäftsreservierungssystems abgeschlossen.