Enterprise Java Beans z Was sind Enterprise Java
Enterprise Java Beans z Was sind Enterprise Java. Beans? z Historie z Motivation z Architektur z Konstruktion eines Enterprise Java. Beans z Zusammenspiel mit anderen Architekturen 28. 06. 1999 EJB, Norbert Schuler 1
Was sind Enterprise Java. Beans? z Industriell unterstützte serverseitige Komponentenarchitektur für die Java-Plattform y über 40 Softwareentwickler haben Ihre Unterstützung für EJB Technolgie in Ihren Produkten zugesagt z EJB ist kein Produkt, sondern eine Spezifikation, die Architektur der EJB-Komponenten und Schnittstellen zwischen EJB-Server und EJB-Komponenten definiert z die Spezifikation wird von SUN entwickelt - dies soll aber in Kooperation mit dem Feedback der industriellen Partner und der Öffentlichkeit geschehen 28. 06. 1999 EJB, Norbert Schuler 2
Historie z Erste Spezifikation 1. 0 herausgegeben von SUN am 24. März 1998 z erste Produkte im frühen Sommer 1998 herausgebracht z erste größere Produkte (EJB-Server) jetzt verfügbar z EJB-Deployathon Event auf der Java. One‘ 99 Konferenz (15 -18 Juni) å anhand einer Beispielanwendung (Car Shipping) wird bei fertigen EJBServer-Implementation demonstriert, ob und wie gut sie die EJBSpezifikation (nur 1. 0 erforderlich) erfüllen http: //java. sun. com/features/1999/06/ejbdeploy. html z EJB Spezifikation 1. 1 Public Draft 2 am 24. Juni herausgegeben 28. 06. 1999 EJB, Norbert Schuler 3
Motivation z Client/Server Modelle: „two-tier“ entwickelten sich zu „three-tier“ (oder „multi-tier“) Modellen å Konzentration der fachlichen Anwendungslogik („business logic“) in „middle-tier“ mit unterliegenden Diensten für die Infrastruktur und client-seitigen Applikationen für die Benutzerschnittstelle z aus Zusammenschluß von drei Entwicklungskonzepten bildete SUN den EJB Standard y serverseitige Anwendungen in Java (wie mit Servlets eingeleitet) y Konnektoren zu bestehenden Enterprise Systemen (wie z. B. mit JDBC für Datenbanken) y modulare, einfach zu verwendene Komponenten (wie bei Java. Beans) å Skalierbarkeit, einfache Entwicklung, Verwendung, Pflege und WORA (write once, run anywhere) für die Anwendungslogik 28. 06. 1999 EJB, Norbert Schuler 4
Architektur z EJB- Architektur: Standardarchitektur für Entwicklung von fachlicher Anwendungslogik in „multi-tier“ Anwendungen als wiederverwendbare Komponenten z Teile der Architektur und deren Aufgaben y EJB Server x kapselt die vorhandenen Systeme und Resourcen, um fundamentale Dienste in einer standardisierten Schnittstelle für die Beans anzubieten y EJB home interface x ermöglicht Zugriff auf Dienste zum Lebenszyklus eines Beans x nur für entity-beans: gibt Methoden zum Auffinden von Exemplaren an y EJB remote interface x deklariert Methoden für fachlichen Zugriff auf das Beans 28. 06. 1999 EJB, Norbert Schuler 5
Architektur y EJB Komponenten (die eigentlichen Beans) x Implementation von Methoden korrespondierend zum home interface x Implementation von einfachen Callback-Interfaces zur Unterstützung der von Container zur Verfügung gestellten Dienste x Implementation fachliche Anwendungslogik nach remote interface x Session-Beans • existieren nur für die Dauer einer Sitzung zwischen Client und Server • eingesetzt für Berechnungen oder Zugriffe auf Datenbanken x Entity-Beans • bilden Objektrepräsentationen von persistenten Daten • jedes Exemplar mit Primärschlüssel gekennzeichnet • können Ihre Persistenz selbst verwalten oder Container überlassen y Deployment Descriptor x enthält Einstellungen für Lebenszyklus, Transaktionsverhalten, Sicherheit und Persistenz des Beans 28. 06. 1999 EJB, Norbert Schuler 6
Architektur y EJB Container x implementiert home und remote interfaces des Beans bei Installation des Beans im Server und veröffentlicht es unter Verwendung von JNDI x hängt sich über Interfaces des Beans zwischen alle Methodenaufrufe des Clients an ein Bean - dies geschieht transparent für den Client x verwaltet Lebenszyklus der Komponenten, Transaktionen und Sicherheit und bei Bedarf auch Persistenz nach Angaben im deployment descriptor x verdeckt für den Client die mögliche Trennung von Bean und Client in verschiedene Umgebungen auf verschiedenen Systemen im Netzwerk å der Container ist damit nicht unbedingt eine physikalische Einheit y EJB-Client x findet Beans per JNDI x verwendet Beans über home und remote interfaces 28. 06. 1999 EJB, Norbert Schuler 7
Konstruktion z Konstruktion eines „session beans“ y remote interface y home interface y bean class y deployment descriptor y client z Bean ist in jedem EJB-Container/-Server lauffähig, wobei nur deployment descriptor und vielleicht der Client-Code angepasst werden müssen 28. 06. 1999 EJB, Norbert Schuler 8
Konstruktion: remote interface z gibt die anwendungsfachliche Schnittstelle des Beans zum Client an z Implementation des Interface geschieht durch den Container bei der Installation des Beans im Server, damit sich der Container bei allen Client-Methodenaufrufen einklinken kann z der Entwickler muß entsprechende Methoden auch am Bean implementieren package ejb. demo; import java. rmi. Remote. Exception; import java. rmi. Remote; import javax. ejb. *; public interface Demo extends EJBObject, Remote { public String demo. Select() throws Remote. Exception; } 28. 06. 1999 EJB, Norbert Schuler 9
Konstruktion: home interface z anhand des home interface kann der Container ein neues Bean auf Geheiß des Clients erzeugen z Implementation des Interface geschieht ebenfalls durch den Container bei der Installation des Beans im Server, so daß sich der Container bei allen Client-Methodenaufrufen einklinken kann package ejb. demo; import javax. ejb. *; java. rmi. Remote. Exception; java. util. *; public interface Demo. Home extends EJBHome { public Demo create() throws Create. Exception, Remote. Exception; } 28. 06. 1999 EJB, Norbert Schuler 10
Konstruktion: bean class package ejb. demo; import javax. ejb. *; java. io. Serializable; java. util. *; java. rmi. *; public class Demo. Bean implements Session. Bean { z Implementation der durch die EJB-Spezifikation vorgegebenen Schnittstellen für ein Bean // Implement the methods in the Session. Bean interface public void ejb. Activate() {. . . } public void ejb. Remove() {. . . } public void ejb. Passivate() {. . . } // Sets the session context. @param Session. Context public void set. Session. Context(Session. Context ctx) {. . . } 28. 06. 1999 EJB, Norbert Schuler 11
Konstruktion: bean class z wenn die Methode create() im home interface aufgerufen wird, erzeugt der Cointainer ein Bean und ruft daran die folgende Methode auf public void ejb. Create () {. . . } z die eigentliche Implementation der Anwendungslogik („business logic“) wie auch schon im remote interface angegeben public String demo. Select() throws Remote. Exception { return("hello world"); } } 28. 06. 1999 EJB, Norbert Schuler 12
Konstruktion: deployment descriptor z Zur Erinnerung der Begriffsbildung: y deployment: Installation eines Enterprise Java. Beans in einen Enterprise Java. Beans Container, dabei werden u. a. die Klassen zur Implemention des home und remote interfaces erzeugt y deployment descriptor: enthält Einstellungen für Lebenszyklus, Transaktionsverhalten, Sicherheit und Persistenz des Beans, nach denen der Container das Bean verwaltet z Es gibt keinen vorgeschriebenen Weg, den deployment descriptor zu erzeugen, dies geschieht nach der jeweiligen Implemention des EJB Servers/Containers å Anpassungen notwendig bei Wechsel des EJB-Servers 28. 06. 1999 EJB, Norbert Schuler 13
Konstruktion: client package ejb. demo; import javax. ejb. *; javax. naming. *; java. rmi. *; java. util. Properties; public class Demo. Client { public static void main() { try { z Erzeugung eines Kontext für JNDI Properties p = new Properties(); p. put(Context. INITIAL_CONTEXT_FACTORY, " weblogic. jndi. T 3 Initial. Context. Factory"); p. put(Context. PROVIDER_URL, "t 3: //localhost: 7001"); Context ctx = new Initial. Context(p); z hier ist der Client-Code abhängig vom verwendeten EJB-Server und muß bei einem Wechsel angepaßt werden 28. 06. 1999 EJB, Norbert Schuler 14
Konstruktion: client z Lookup des home interface per JNDI Demo. Home dhome = (Demo. Home) ctx. lookup("demo. Demo. Home"); z Erzeugung eines Exemplars des Java. Beans durch den Container anhand der create()-Methode des home interface Demo demo = dhome. create(); z Aufruf der Anwendungslogik im Java. Beans durch den Container anhand der Schnittstelle im remote interface System. out. println("The result is " + demo. Select()); } catch (Exception e) { System. out. println(" => Error <="); e. print. Stack. Trace(); } } } 28. 06. 1999 EJB, Norbert Schuler 15
Zusammenspiel mit anderen Architekturen z EJB und Corba y EJB soll Corba jetzt und in Zukunft unterstützen y Beans remote und home interfaces basieren auf RMI und können daher mit CORBA Objekten über RMI/IIOP (RMI Adaption von SUN/IBM, die das IIOP Protokoll erfüllt) zusammenarbeiten y Für die EJB API hat SUN eine standardisierte Abbildung auf CORBA IDL geschaffen y JTA (für Transaktionsverwaltung) kann leicht als Schicht über OMG OTS gelegt werden z Transaktionen können vom Container, aber auch vom Client oder Beans selbst verwaltet werden, die dann JTA verwenden können z Persistenz kann vom Container oder Beans selbst verwaltet werden, welches dann JDBC/JSQL verwenden kann 28. 06. 1999 EJB, Norbert Schuler 16
- Slides: 16