Presentation laddar. Vänta.

Presentation laddar. Vänta.

Föreläsning 6 Enterprise Java Beans (EJB). Översikt Historik –Hur har det sett ut fram till idag? –Behovet av EJB Introduktion till EJB –Grunderna –Strukturen.

Liknande presentationer


En presentation över ämnet: "Föreläsning 6 Enterprise Java Beans (EJB). Översikt Historik –Hur har det sett ut fram till idag? –Behovet av EJB Introduktion till EJB –Grunderna –Strukturen."— Presentationens avskrift:

1 Föreläsning 6 Enterprise Java Beans (EJB)

2 Översikt Historik –Hur har det sett ut fram till idag? –Behovet av EJB Introduktion till EJB –Grunderna –Strukturen –Ett EJB utvecklingsexempel

3 Historik Fas ett –Stordatorer, ”mainframes” –Dominerade 60-talet till 80-talet Fas två –Klient/Server –80-talet och 90-talet Fas tre –N-tier, komponentbaserat, webb-access, applikationsservrar –2000

4 Fas ett Terminal Mainframe Affärs- logik CICS SNA DBMS Ex. DB2

5 Fas ett Fördelar –Skalar bra –Relativt lätt att underhålla –Det enda alternativet Nackdelar –Dyrt –Teckenbaserade användargränssnitt –Mycket omodernt

6 Fas ett: Dominerande tekniker OS –MVS(OS/390) Access Protokoll –SNA Applikations stöd –CICS, IMS Affärslogik utvecklingsspråk –Cobol Databaser –DB2, IMS... Terminal Mainframe Affärs- logik CICS SNA DBMS Ex. DB2

7 Fas två Fördelar –GUI –Billigare –Mer flexibelt –Tillåter innovation Nackdelar –Skalar sämre Ingen separat applikations stöd –Mindre pålitligt än stordatorsystem –Inte optimalt för webbaccess

8 Fas två: Dominerand tekniker OS –Klient Windows, OS/2 –Server Unix, Windows NT, OS/2 Access protokoll –Olika databasprotokoll Affärslogik utvecklingsspråk –PowerBuilder, Visual Basic Databaser –Oracle, SQL Server, Informix... Affärs- logik Klient Server Affärs- logik DBMS

9 Fas tre Browser- klient Icke browser klient Gammalt system DBMS Webb- server Affärs- logik Objekt protokoll Applikations- server

10 Fas tre Fördelar –Lätt att distribuera –Skalar bra Nackdelar –Komplext –Ont om utvecklare

11 Komponenttekniker Common Object Request Broker Architechture (CORBA) Java-baserade komponenter Microsofts Component Objekt Model (COM)

12 CORBA Fördelar –Många OS –Definierar IIOP, språk neutralt protokoll Nackdelar –Skakig standard –Små företag som är det stora spelarna –Tappar mark till J2EE

13 Javabaserade lösningar Klient JavaBean Java Applikation Maskin X Maskin Y Java Applikation EJB Container EJB JRMP,IIOP

14 Utvärdering av Java Fördelar –Stöd för endast ett språk, gör valet enkelt –Tillgängligt på många operativsystem Nackdelar –Relativt nytt –Kan vara långsammare än ”native” kod –JavaBeans konceptet fick inte riktigt genomslag

15 COM-baserade lösningar Klient ActiveX Windows Applikation Maskin X Maskin Y Remote Server COM+ Container COM DCOM COM DCOM

16 Utvärdering av COM Fördelar –En komplett lösning –Den mest använda komponenttekniken idag –Inte lika komplex som J2EE Nackdelar –Man blir helt beroende av en leverantör

17 Datahantering Datan finns typiskt i något sorts ”database Management system (DBMS) Varje DBMS har sitt eget kommunikation system Widows DNA och J2EE har egna databasoberoende gränssnitt

18 De två alternativen Microsofts Universal Data Access (UDA) –En övergripande maknadsförings uttryck –Inkluderar ODBC, OLE DB, AkiveX Data Objects (ADO) J2EE JDBC –Motsvarar ADO –Kan användas över ODBC

19 Object Transaction Monitors Vanliga problem vid ”middle-tier” affärslogik –Säkerhet –Resurspoolning –Persistens –Trådning –Transaktioner –Skalbarhet

20 Transaction Processing Monitors Så kallade TP monitorer ”Operativsystem” för affärssystem –Transakstions stöd –Resurshantering Tidigare varianter –Mainframe-baserade: IBMs CICS (1968) –Unix-baserade: BEAs Tuxedo Använder ofta Remote Procedure Call (RPC) Inte objektorienterat

21 Nutida TP monitorer Objekt dominerar mjukvaruutvecklingen –Tidigare varianter var inte designade för det Object Transaction Monitors (OTM) eller Component Transaction Monitors(CTM) –Ledande tekniker Microsoft transaction Manager (MTS)/COM+ Enterprise JavaBeans (EJB)

22 MTS/COM+ Kom i slutet av 96 –Byggt på COM –Bara på Microsoft plattformen MTS är en standard-del i Windows NT COM+ är en standard-del i Windows 2000 –COM+ är nästa version av MTS plus lite till

23 Enterprise JavaBeans EJB 1.0 specifikationen släpptes våren -98 –EJB 1.1 i slutet av –99 Skapat av Sun, IBM, Oracle m.f. Stöd av många marknadsaktörer –BEA WebLogic Server –IBM WebSphere Application Server –Oracle Application Server –Sun/Netscape iPlanet Server –SilverStream Application Server –Orion... osv 85% av marknaden

24 Fram till nu Fas ett –IBM stordatormiljö dominerade Fas två –Ingen enskild leverantör stod ut Fas tre –Två möjligheter Windows DNA J2EE

25 Grunderna om EJB En kombination av server-side komponentteknik och distribuerade objekthantering för att förenkla och standardisera utvecklingen av större affärskritiska applikationer EJB Containern tar hand om –Säkerhet –Resurspoolning –Persistens –Trådning –Transaktioner –Skalbarhet

26 EJB är middleware

27 Vad är en Enterprise Java Bean? En återanvändbar server-side komponent som innehåller affärslogik dvs utför beräkningar och tillhandahålla eller manipulerar data. Tillhandahåller tjänster Består av: –En vanlig Java klass med business logik –Två Java interface, mot klienten. Remote Home Precis som en Java klass finns det instanser av en bean.

28 Olika sorters böner Session Beans –objekt som representerar en konversation med en klienten Stateful Stateless Entity Beans –Bean-Managed –Container-Managed Oftast substantiv

29 Entity Beans Persistens –Efter som en entity böna sparas i någon slags datakälla existerar den längre än applikationen –Överlever system kraschar Delad åtkomst Primär nyckel

30 Bean-Managed Persistence Med Bean-Managed Persistence skriver man själv SQL-satserna för bönan ejbCreate metoden kommer exempelvis att utföra en INSERT sats Detta illustreras med ett utvecklingsexempel – myaccount

31 Container-Managed Persistence Automatisk generering av SQL –När klienten skapar en ny entity bean genererar containern en SQL INSERT-sats –Koden Bean-utvecklaren skriver innehåller alltså ingen SQL Som ett resultat av detta är denna sortens böna oberoende av databasen vilket gör att den är helt portabel –Fördelar Mindre kod Mindre beroenden -> mer portabel

32 myaccount-Exempel Myaccount tabellen skapade på följande sätt: CREATE TABLE myaccount (id VARCHAR(3) CONSTRAINT pk_account PRIMARY KEY, firstname VARCHAR(24), lastname VARCHAR(24), balance DECIMAL(10,2)); För att skriva en Entity böna behövs följande: –Entity Bean Klass (AccountEJB) –Home Interface (AccountHome) –Remote Interface (Account)

33 Entity Bean Class AccountEJB AccountEJB uppfyller dessa entity bean krav –Den implementerar EntityBean interface:et –Klassen är public definierad –Klassen får ej vara definierad abstract eller final –Den impementerar en eller fler ejbCreate och ejbPostCreate metoder –Implementerar ”finder” metoder (endast bean- managed persistence) –Den har implementationen av affärslogiken. –Den har en tom konstruktor Entity Bean exemplet

34 EntityBean Interface EntityBean interface:et ärver av EnterpriseBean interface:et, vilket i sin tur ärver av Serializable interface:et. EntityBean interface:et deklarerar ett gäng metoder,så som ejbActivate och ejbLoad, som man måste implementera i sin entity bean klassEntityBean EnterpriseBean Entity Bean exemplet

35 Myaccount exempel (forts.) ejbCreate metoden i AccountEJB stoppar in entity raden i databasen genom den privata insertRow metoden, som exekverar SQL insert satsen Regler om ebjCreate metoden –Access modifieraren måste vara publik –Retur typen skall vara primärnyckeln (bean- managed persistence) –Argumenten måste vara godkännbara för Java RMI. –Metod modifieraren kan inte vara final eller static Entity Bean exemplet

36 Myaccount exempel (forts.) public String ejbCreate(String id, String firstName, String lastName, double balance) throws CreateException { if (balance < 0.00) { throw new CreateException ("A negative initial balance is not allowed."); } try { insertRow(id, firstName, lastName, balance); } catch (Exception ex) { throw new EJBException("ejbCreate: " + ex.getMessage()); } this.id = id; this.firstName = firstName; this.lastName = lastName; this.balance = balance; return id; } Entity Bean exemplet

37 Myaccount exempel (forts.) ejbPostCreate Metoden –För varje ejbCreate behövs en ejbPostCreate (tom) ejbRemove Metoden –För att ta bort en böna –Systemfel: throw javax.ejb.EJBException –Applikationsfel: javax.ejb.RemoveException ejbLoad och ejbStore –Synkroniserar instans variabler –Kallas på av containern –Vid en metod som använder en transaktion kallar containern först på ejbLoad för att uppdatera variablerna, utför logiken och avslutningsvis anropar ejbStore Entity Bean exemplet

38 Myaccount exempel (forts.) public void ejbLoad() { try { loadRow(); } catch (Exception ex) { throw new EJBException("ejbLoad: " + ex.getMessage());} } public void ejbStore() { try { storeRow(); } catch (Exception ex) { throw new EJBException("ejbLoad: " + ex.getMessage());} } Entity Bean exemplet

39 Myaccount exempel (forts.) Finder Metoder –Hittar rätt böna åt klienter Account jones = home.findByPrimaryKey("836");... Collection c = home.findByLastName("Smith");... Collection c = home.findInRange(20.00, 99.00); Returnerar antingen primärnyckeln eller en Collection av primärnycklar Obligatorisk metod Entity Bean exemplet

40 Myaccount exempel (forts.) I vårt exempel ser det ut på följande sätt public String ejbFindByPrimaryKey(String primaryKey) throws FinderException { boolean result; try { result = selectByPrimaryKey(primaryKey); } catch (Exception ex) { throw new EJBException("ejbFindByPrimaryKey: " + ex.getMessage()); } if (result) { return primaryKey; } else { throw new ObjectNotFoundException ("Row for id " + primaryKey + " not found."); } } Entity Bean exemplet

41 Regler för finder metoder The ejbFindByPrimaryKey method must be implemented. A finder method name must start with the prefix ejbFind. The access control modifier must be public. The method modifier cannot be final or static. The arguments and return type must be legal types for Java RMI. The return type must be the primary key or a collection of primary keys. Entity Bean exemplet

42 Affärslogiken De metoder som inte är obligatoriska brukar kallas för affärslogik Dessa metoder brukar vanligtvis inte använda databasen direkt –Tillåter separation mellan affärslogik och databasaccess Entity Bean exemplet

43 Affärslogiken för AccountEJB public void debit(double amount) throws InsufficientBalanceException { if (balance - amount < 0) { throw new InsufficientBalanceException(); } balance -= amount; } public void credit(double amount) { balance += amount; } public String getFirstName() { return firstName; } public String getLastName() { return lastName; } public double getBalance() { return balance; } Entity Bean exemplet

44 Affärslogiken för AccountEJB (forts.) Från AccountClient kan det se ut på detta vis: Account duke = home.create("123", "Duke", "Earl", 0.00); duke.credit(88.50); duke.debit(20.25); double balance = duke.getBalance(); Kraven på affärsmetoderna är samma för både session och entity –Access modifieraren måste vara publik –Argumenten måste vara godkännbara för Java RMI. –Metod modifieraren kan inte vara final eller static Entity Bean exemplet

45 Sammanfattning av AccountEJB Detta är de metoderna som använder databasen Affärsmetoderna gjorde inte det i detta exempel men det är en designfråga Entity Bean exemplet

46 Home Interface Home interface:et definierar de metoder som tillåter en klient att skapa och hitta en entity böna. import java.util.Collection; import java.rmi.RemoteException; import javax.ejb.*; public interface AccountHome extends EJBHome { public Account create(String id, String firstName, String lastName, double balance) throws RemoteException, CreateException; public Account findByPrimaryKey(String id) throws FinderException, RemoteException; public Collection findByLastName(String lastName) throws FinderException, RemoteException; public Collection findInRange(double low, double high) throws FinderException, RemoteException; } Entity Bean exemplet

47 Home Interface (forts.) Varje create metod i home interface:et måste formas efter följande krav: –Den har samma antal och typ av argument som dess matchande ejbCreate metod i enterprise beans klassen. –Den returnerar remote interface:et av enterprise bönan. –throws satsen har samma exceptions som throws satsen i motsvarande ejbCreate och ejbPostCreate metoder. –throws satsen inneåller java.rmi.RemoteException och javax.ejb.CreateException Entity Bean exemplet

48 Home Interface (forts.) Varje finder metod i home interface:et måste formas efter följande krav: –Den har samma antal och typ av argument som dess matchande metod i enterprise beans klassen. –Den returnerar remote interface:et av enterprise bönan eller en Collection av dylika. –throws satsen har samma exceptions som throws satsen i motsvarande medod i bönan. –throws satsen inneåller java.rmi. FinderException och javax.ejb. RemoteException Entity Bean exemplet

49 Remote Interface Remote interface:et ärver av javax.ejb.EJBObject och definierar affärsmetoderna. import javax.ejb.EJBObject; import java.rmi.RemoteException; public interface Account extends EJBObject { public void debit(double amount) throws InsufficientBalanceException, RemoteException; public void credit(double amount) throws RemoteException; public String getFirstName() throws RemoteException; public String getLastName() throws RemoteException; public double getBalance() throws RemoteException; } Entity Bean exemplet

50 Remote Interface (forts.) Kraven för metoderna i remote interface är samma för både session och entity bönor: –Varje metod i remote interface:et måste matcha en metod i enterprise bean klassen. –Argumenten måste vara godkännbara för Java RMI. –throws satsen måste innehålla java.rmi.RemoteException. Entity Bean exemplet

51 Session Beans En sessionböna representerar en enskild klient på J2EE servern. Klient anropar remote tjänster genom att kalla på metoder i sessionsbönan. Sessions bönan döljer komplext förfarand från klienten. Som indikeras av namnet så liknar sessionsbönan ett klient session. En sessionsböna delas inte av fler användare. Den är inte heller persistent. Session Beans beskriver ofta processer eller tjänster som använder sig av noll eller flera anrop till Entiy beans

52 Session Beans (forts.) Stateful Session Beans –Håller reda på information mellan förfrågningar –Kan ha create metoder som tar argument Stateless Session Beans –Skalar bättre –home interface:et måste ha en create metod utan argument

53 Session Beans (forts.) Du bör välja en stateful böna om något av föjande är sant: –Bönans tillstånd måste bli initialiserat när den skapas –Bönan ska hålla information om klienten mellan anrop –Klienten är en interaktiv tillämpning Eftersom det primära syftet för en sessionsböna är att representera en klient i en J2EE server, kommer de flesta bönerna vara stateful

54 En Sessionsbönas livscykel Stateful Stateless

55 Java Naming And Directory Interface (JNDI) Alla distribuerade objekt använder någon sorts namntjänst En namntjänst är något som erbjuder en mekanism för att klienter skall kunna lokalisera objekt –Object binding –Lookup API

56 JNDI (forts.) javax.naming.Context ctx = new javax.naming.InitialContext(properties); Object home = ctx.lookup(JNDI_NAME); TraderHome traderHome = (TraderHome) narrow(home, TraderHome.class); } catch (NamingException ne) { …

57 Deployment descriptor ejb-jar.xml – –- - – images/green-cube.gif –- - –- - – images/orange-cube.gif – statelessSession – examples.ejb.basic.statelessSession.TraderHome – examples.ejb.basic.statelessSession.Trader – examples.ejb.basic.statelessSession.TraderBean – Stateless – Container – –- - –- - –- - – statelessSession – Remote – * – – Required –

58 Deployment descriptor(forts.) weblogic-ejb-jar.xml - statelessSession statelessSession.TraderHome

59 Transaction Scope Om metod A misslyckas efter den har kallat B och B har lyckats ska då B rullas upp eller inte???

60 Transaction Scope Required- B rullas upp om A kördes i en Transaktion RequiresNew- B rullas inte upp Mandatory - A måste köras i en Transaktion NotSupported - Inget som händer i B påverkar A Never - A får inte köras i en Transaktion

61 Bygga och Installera en Bean Kompilera källkoden –Skapa en Deployment descriptor m.h.a. en wizard eller kopiera Packa filerna i en ejb.jar fil Lägga in ejb.jar i en applikation Ladda upp applikationen på servern WeatherReporterHome.class WeatherReporter.class WeatherReporterBean.class ejb-jar.xml manifest.mf ejb.jar

62 Dessutom Labb3 –Lydelsen –Testomgång: Prova att göra exempel innan ni startar!! Labb 4 –Designfas Vad är det som skall göras och hur –Implementationsfas –Systembeskrivning Betygspåverkande –Muntligt (redovisning) –Skriftligt (inlämning vid redovisningstillfället) Obligatorisk gästföreläsning nästa gång!


Ladda ner ppt "Föreläsning 6 Enterprise Java Beans (EJB). Översikt Historik –Hur har det sett ut fram till idag? –Behovet av EJB Introduktion till EJB –Grunderna –Strukturen."

Liknande presentationer


Google-annonser