Enterprise Java Beans (EJB)

Slides:



Advertisements
Liknande presentationer
Föreläsning 9 Programmeringsteknik och Matlab 2D1312/2D1305
Advertisements

Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Avlusning Debugger (”avlusare”) Breakpoints Watch.
Klasser och objekt.
”Ett sätt att distribuera Business Objects via webben”
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Fortsättningskurs i Programmering lektion 6
Klassarv och inkapsling
OOP Objekt-orienterad programmering
Metoder i java Det finns två typer av metoder i java
Arv.
Inkapsling.
Objektorienterad tänkande
Polymorfism.
Programmeringsteknik K och Media
Programmeringsteknik för K och Media
1 ITK:P1 Föreläsning 4 Grafiska gränssnitt och händelsehantering DSV Peter Mozelius.
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Next previous Innehåll Inledning Några enkla exempel Pekare till och kort beskrivning av större exempel Speciella referenser (som används i marginalen)
Distribuerade filsystem
Next previous Introduktion till Java Av Björn Eiderbäck Adress: Rum 1641, 6tr NADA Osquars Backe 2 Tel: OOMPAE 2000.
Alice in Action with Java
i olika programmeringsspråk
Föreläsning 13 Polymorfism, Paket och JAR-filer. Polymorfism Ordet härstammar från grekiskan Poly – många Morf – form Polymorf – många former Någonting.
Objektorienterad programmering i Java
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Programmering i C# 3. Klasser.
Föreläsning 2, Kapitel 2 Att förstå klassdefinitioner Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael.
PROCESSPROGRAMMERING
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 4 ( )‏ Innehåll:Trådsäkerhet - Intrinsic locks och synkronisering - Synchronized statements.
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Vektorer (klassen Vector) Sortering
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
UTVECKLING MED RAMVERKET.NET Marcus Medina. Dagens visdomsord ” Ingen vet vad han klarar innan han har försökt. ” - Publilius Syrus (85 f.Kr.-43 f.Kr.).
Arv.
Programmeringsteknik för Media1 & K1
1. En infrastruktur för programutveckling
PROCESSPROGRAMMERING Föreläsning ‏ Innehåll: Högnivå objekt för trådprogrammering: - Trådgrupper (”Thread pools”)‏ - Exekverare (Executor.
Mitt första Java program Mahmud Al Hakim Copyright, Mahmud Al Hakim, 1.
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 9 Gränssnitt. Super Super kan användas till anrop av en omdefinierad metod Super kan användas till anrop av konstruktorer i superklassen Super.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( )‏ Innehåll:  Introduktion till Java EE (Enterprise Edition)  Enterprise Java Beans.
Föreläsning 4 Klasser Och Objekt.
1. Ett problem/uppgift.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
Föreläsning 1 Om kursen Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
PROCESSPROGRAMMERING Föreläsning 1 ( )‏ Innehåll: Introduktion till paralellprogrammering (“concurrent programming”)‏ Introduktion till parallellprogrammering.
Föreläsning 13 Appletprogram/fristående grafiska program Arv Rita linjer, rektanglar mm Skriva text, byta färg Appletprogram & HTML Grafiska användargränssnitt.
Föreläsning 9 Arv kap 8.1 Interface kap 9.2 Grafiska användargränssnitt (GUI) kap 10.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 2 ( )‏ Innehåll:Trådar: - Avbrott (”interrupts”)‏ - Metoden join()‏ Högnivå objekt för.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
Programmeringsteknik för K och Media
OOP - teori1 OOP del II– Föreläsning 5 vecka 6. OOP - teori2 Klasser Substantiv i singularis stavat med stor bokstav till exempel Human Dog Account Circle.
OOP&M - teori1 OOP del II– Föreläsning 2 vecka 46 Konstruktorer Instansmetoder Kapitel 14 i kursboken.
OOP&M - teori1 OOPM del II– Föreläsning vecka Mer om ärvning.. Abstrakta klasser/metoder Gränssnitt/Interface klasser.
OOP&M - teori1 OOPM del II – Föreläsning vecka Abstrakta klasser/metoder igen Gränssnitt/Interface klasser igen tillämpat.
 Object-Relational mapping  (aka O/RM, ORM, and O/R mapping)  Mappning av objekt och dess relationer till/från en relationsdatabas.
1 Mer om metoder, variabler, klasser och objekt. Kursboken: - Kapitel 6 - Kapitel 8.
RMI Av: Josefina & Sarah DS04.
Föreläsning 8: Exempel och problemlösning
Presentationens avskrift:

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

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

Historik Fas ett Fas två Fas tre 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

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

Fas ett Fördelar Nackdelar Skalar bra Relativt lätt att underhålla Det enda alternativet Nackdelar Dyrt Teckenbaserade användargränssnitt Mycket omodernt Försök och hitta några som vill jobba med detta!

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

Fas två Fördelar Nackdelar 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

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 Affärs- logik DBMS Server

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

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

Komponenttekniker Common Object Request Broker Architechture (CORBA) Java-baserade komponenter Microsofts Component Objekt Model (COM)                                                                                                                       Objekt Orientering har nästan blivit en självklarthet idag

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

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

Utvärdering av Java Fördelar Nackdelar 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

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

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

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

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

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

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

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)

MTS/COM+ Kom i slutet av 96 MTS är en standard-del i Windows NT 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

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 Write once, Run Anywhere

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

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                                                                                                              Skriva en Trådad concurrent applikation vanligtvis ganska klurigt. Skriva en Distribuerad applikation också klurigt. Skriva en Trådad och Distribuerad applikation kan vara riktigt svårt.

EJB är middleware BrokerBean ber man om att göra en affär medan Den andra för att checka kreditvärdighet.

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.

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

Entity Beans Persistens Delad åtkomst Primär nyckel 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

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                                                                                                                       http://java.sun.com/j2ee/tutorial/doc/Entity3.html

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

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)

Entity Bean Class AccountEJB exemplet 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

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 klass Entity Bean exemplet

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

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; } Möjligt med flera olika create metoder Entity Bean exemplet

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

Myaccount exempel (forts.) public void ejbLoad() { try { loadRow(); } catch (Exception ex) { throw new EJBException("ejbLoad: " + ex.getMessage());} public void ejbStore() { storeRow(); javax.ejb.NoSuchEntityException. This exception is a subclass of EJBException. Because EJBException is a subclass of RuntimeException, you do not have to include it in the throws clause. When NoSuchEntityException is thrown, the EJB container wraps it in a RemoteException before returning it to the client. Entity Bean exemplet

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

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."); } } The ejbFindByPrimaryKey method may look strange to you, because it uses a primaryKey for both the method argument and return value. However, remember that the client does not call ejbFindByPrimaryKey directly. It is the EJB container that calls the ejbFindByPrimaryKey method. The client invokes the findByPrimaryKey method, which is defined in the home interface Entity Bean exemplet

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. The throws clause may include the javax.ejb.FinderException, and other exceptions that are specific to your application. If a finder method returns a single primary key, it should throw the javax.ejb.ObjectNotFoundException if the requested entity does not exist. The ObjectNotFoundException is a subclass of FinderException. If a finder method returns a collection of primary keys and it does not find any objects, it should return null. Entity Bean exemplet

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

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

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 The method name must not conflict with a method name defined by the EJB architecture. For example, you cannot call a business method ejbCreate or ejbActivate. Entity Bean exemplet

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

Home Interface Entity Bean exemplet 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) public Collection findInRange(double low, double high) }

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

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

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() public String getLastName() public double getBalance() } Entity Bean exemplet

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

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 När klienten avslutar slutas bönan associeras med klienten

Session Beans(forts.) Stateful Session Beans Stateless 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 Stateless Böner erbjuder dessutom bättre prestanda eftersom servern inte sparar informationen Stateful kan ligga på sekundärt minne tillfälligt

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 The bean performs a task that is not tailored to the needs of a particular client. For example, you might use a stateless session bean to fetch from a database a commonly used set of data. The bean doesn't need to hold information about the client across method invocations.

En Sessionsbönas livscykel Stateful Stateless

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

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) { …

Deployment descriptor ejb-jar.xml <?xml version="1.0" ?>   <!DOCTYPE ejb-jar (View Source for full doctype...)> - <ejb-jar>   <small-icon>images/green-cube.gif</small-icon> - <enterprise-beans> - <session>   <small-icon>images/orange-cube.gif</small-icon>   <ejb-name>statelessSession</ejb-name>  <home>examples.ejb.basic.statelessSession.TraderHome</home> <remote>examples.ejb.basic.statelessSession.Trader</remote>   <ejb-class>examples.ejb.basic.statelessSession.TraderBean</ejb-class>   <session-type>Stateless</session-type>   <transaction-type>Container</transaction-type>   </session>   </enterprise-beans> - <assembly-descriptor> - <container-transaction> - <method>   <method-intf>Remote</method-intf>   <method-name>*</method-name>   </method>   <trans-attribute>Required</trans-attribute>   </container-transaction>   </assembly-descriptor>   </ejb-jar>

Deployment descriptor(forts.) weblogic-ejb-jar.xml    <?xml version="1.0" ?>   <!DOCTYPE weblogic-ejb-jar (View Source for full doctype...)> - <weblogic-ejb-jar> - <weblogic-enterprise-bean>   <ejb-name>statelessSession</ejb-name> - <caching-descriptor>   <max-beans-in-free-pool>100</max-beans-in-free-pool>   </caching-descriptor>   <jndi-name>statelessSession.TraderHome</jndi-name>   </weblogic-enterprise-bean>   </weblogic-ejb-jar>

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

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

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

Dessutom Labb3 Labb 4 Obligatorisk gästföreläsning nästa gång! 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!