Web- og serverprogrammering

Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html

EJB - dag 9

EJB (Enterprise Java Beans)

Entitetsbønner til databasekommunikation

Evt.: EJBQL (EJB Query Language)

Evt.: EJB: Transaktioner og sikkerhed

Læsning: WJSP kapitel 12

Næste gang: Fremlæggelse/status på projekter

Henrik: Fotoklub

Kim D: Netbanken

Anne

Lis: Fraværsregistrering

Bjarne H + Christian: Dueslag

Bjarne J: Produktionsstoptidsregistrering (periode, årsag, rapporter)

Kim J

Ole Hedevang: Webbutik

Tommy: Kajakklub

Jesper: Online pizzeria

Sven-Erik og Morten: E-handel (nok tøjbutik)

Preben: Konfigurator (en slags e-handel)

Svend

Klaus Elmquist: Procedurale mønstre

Per: Gruppekalender

Stefan: Bowlingklub

Ratha: Internet-butik om blomster

Eksamensprojektet

Java 2 Enterprise Edition (J2EE)
- til store servere

J2EE-platformens dele

Webserver

EJB (Enterprise JavaBeans)

CORBA - fjernkald af objekter (ikke kun Java, sværere end RMI)

JTS (Java Transaction Service) - transaktioner (commit, rollback)

JMS (Java Message Service) - til MQ-systemer.

tjeneste til at sende og modtage synkrone eller asynkrone meddelelser mellem programmer

JavaMail, XML-behandling, ...

Sun varetager 'kun' J2EE-specifikationen

Mange uafhængige udbydere af J2EE-platforme

Borland AppServer

Oracle

IBM WebSphere

JBoss (med åben kildekode)

Sun (referenceimplementation)

... (>10 andre)

J2EE != udviklingsplatform

Mange udbydere har også egen, 'strømlinet' webudviklingsmodel

Enterprise JavaBeans (EJB)
- objekter i serveren

J2EE-container varetager EJB-objekter

Persistens, transaktioner, sikkerhed

Kald kan ske lokalt eller over netværket

F.eks. fra JSP-sider!

EJB koncentrerer sig om programlogik

Serveren sørger for al 'benarbejdet'

Sessionsbønner repræsenterer et forløb

Entitetsbønner repræsenterer data fra en tabel

Containerstyret persistens (CMP)

Al databasekode bliver genereret af containeren (!)

Bønnestyret persistens (BMP)

Programmøren skriver selv databasekoden

Meddelelses-drevne bønner

Princippet i kald af metoder i
objekter over netværket

En EJB-bønne kører en en J2EE-applikationsserver - muligvis adskilt fra klienten

Hver EJB-bønne udgøres af tre stykker kildetekst (to interfaces og en klasse):

1)Et fjerninterface (eng.: remote interface), der specificerer hvordan bønnen kan bruges af klienten.

2)Et hjemmeinterface (eng.: home interface), der specificerer, hvordan bønnen kan fremfindes, oprettes og nedlægges af klienten.

3)En implementationsklasse af bønnen, med den programkode, der beskriver, hvad der skal ske, når de forskellige metoder i fjerninterfacet kaldes.

Kildekoden i en EJB

... plus noget information til EJB-containeren (XML)

Bruge en EJB

Typer af EJB

Sessionsbønner

repræsenterer et eller andet forløb og indeholder de data der knytter sig til dette forløb

Tilstandsløse (eksempel: Veksler-bønnen)

Flere klienter kan dele samme instans

Tilstandsfulde

Hver klient får sin egen instans

Entitetsbønner

repræsenterer data fra en tabel. De er persistente
(dvs. deres data 'bakkes op' af en database).

Containerstyret persistens (CMP)

Al databasekode bliver genereret af containeren (!)

Bønnestyret persistens (BMP)

Programmøren skriver selv databasekoden

Meddelelses-drevne bønner

Entitetsbønner med CMP

EJB Query Language

EJB Query Language

EJB: Transaktioner

Programmatisk ('i hånden'-) transaktionsstyring

Deklarativ transaktionsstyring

Metoder markeres med en transaktions-attribut

Det er containerens opgave at sørge for at oprette, nedlægge, fuldføre og evt. annullere transaktioner i henhold til disse

Required - metoden er med i den aktuelle transaktion.

Der oprettes en ny transaktion af containeren, hvis der ikke er nogen i gang.

Supports - metoden er med i den aktuelle transaktion.

Der oprettes ikke en ny transaktion af containeren, hvis der ikke er nogen i gang.

Mandatory - metoden skal være med en transaktion.

Er der ikke er nogen i gang, kastes undtagelsen TransactionRequiredException.

Never - metoden må aldrig være med en transaktion.

Er der en transaktion i gang, kastes undtagelsen RemoteException af containeren.

RequiresNew - der oprettes en ny transaktion.

Hvis der er en transaktion i gang, suspenderes denne indtil metoden har afsluttet.

NotSupported - kan ikke være med en transaktion.

Hvis der er en transaktion i gang, suspenderes indtil metoden har afsluttet.

Microsoft .NET

Here's one cut at an itemized list of the technical components making up the .NET platform:

·C#, a "new" language for writing classes and components, that integrates elements of C, C++, and Java.

·A "common language runtime", which runs bytecodes in an Internal Language (IL) format. Code and objects written in one language can, ostensibly, be compiled into the IL runtime, once an IL compiler is developed for the language.

·A set of base components, accessible from the common language runtime, that provide various functions (networking, containers, etc.).

·ASP+, a new version of ASP that supports compilation of ASPs into the common language runtime (and therefore writing ASP scripts using any language with an IL binding).

·Win Forms and Web Forms, new UI component frameworks accessible from Visual Studio.

·ADO+, a new generation of ADO data access components that use XML and SOAP for data interchange.

Denne side er ikke under Åben Dokumentlicens

J2EE og .NET

J2EE

En standard

Flere udbydere (>15)

Flere platforme

Ét firma styrer (Sun)

Ét sprog (Java)

Åben kildekode

JDBC RowSet

EJB CMP

.NET

En samling Windows-produkter

Én udbyder

Én platform

Flere sprog

Lukket

DataSet

(mangler)

Denne side er ikke under Åben Dokumentlicens

Åben Dokumentlicens

Dette foredragsmateriale er under Åben Dokumentlicens (ÅDL)

Du har derfor lov til frit at kopiere dette værk

Bruger du dele af værket i et nyt værk, skal de dele, der stammer fra dette værk, igen frigives under ÅDL

Den fulde licens kan ses på
http://www.sslug.dk/linuxbog/licens.html

2.8.1 Læse filer fra harddisken 37

2.8.2 Erklæring af metoder og blivende variabler 38

2.8.3 Trådsikkerhed i JSP-sider 39

2.8.4 Producere grafik fra JSP 40

2.8.5 Eksempel: JSP-side der danner et JPG-billede 40

2.8.6 Indlejre og nedskalere billeder fra harddisken 43

2.8.7 Opload af filer til server 44

3.6 Avanceret 58

3.6.1 Indkode data i en URL (URL-indkodning) 58

3.6.2 Skjulte felter i formularer 59

3.6.3 Bruge skjulte felter til at etablere et forløb 60

3.6.4 Skjule parametrene (POST-metoden) 60

3.6.5 Cookier 61

3.6.6 Sætte cookier 62

3.6.7 Aflæse cookier 62

3.7 Avanceret: HTTP-protokollen 64

3.7.1 Eksempel på kommunikation 64

3.7.2 Formulardata med GET-metoden 65

3.7.3 Formulardata med POST-metoden 66

3.7.4 Cookier 66

3.7.5 Øvelse 66

4.3 Omdirigering 73

4.3.1 Klient-omdirigering (response.sendRedirect()) 73

4.3.2 Server-omdirigering (<jsp:forward />) 74

4.4 Appendiks: Almindelige JSP-koder 75

4.5 Appendiks: Implicit definerede objekter 76

4.5.1 request - anmodningen fra klienten 76

4.5.2 response - svaret til klienten 77

4.5.3 out - skrive tekst til klienten 77

4.5.4 session - objekt der følger den enkelte bruger 78

4.5.5 application - fælles for hele webapplikationen 79

4.5.6 config - den enkelte websides konfiguration 80

4.5.7 page - selve JSP-siden 81

4.5.8 exception - undtagelse opstået under kørsel 81

4.5.9 pageContext - alle objekterne samlet i ét 81

4.6 Opgaver 82

7.1 Servletter 130

7.1.1 Anmodningsmetoder 131

7.1.2 Hvornår bruge JSP og hvornår bruge servletter 131

7.3 Avanceret: JSP-siders interne virkemåde 133

7.3.1 Kigge i de genererede servletter 133

7.3.2 Eksempel 133

7.3.3 JSP-siders livscyklus 135

Web- og serverprogrammering

Forelæsningsnoter til lærebogen http://javabog.dk/JSP/

Værket er omfattet af Åben dokumentlicens (ÅDL).
Licensens ordlyd kan findes herunder eller på http://www.sslug.dk/linuxbog/licens.html
Åben dokumentlicens (ÅDL) version 1.0 (25. januar 2002)
1. Kopiering og distribution af værket i uændret form
Du må frit kopiere dette værk uændret og distribuere det på ethvert medium, forudsat at du sammen med hver kopi bibeholder denne licens og en henvisning til værkets kilde.
Du kan vælge at kræve penge for kopiering og distribution af indholdet, for undervisning i indholdet, for brugerstøtte og garantier i forbindelse med indholdet. Hvis du videregiver værket til andre, har du pligt til at se til, at du selv eller andre giver modtageren gratis adgang i minimum 3 år til en elektronisk udgave af indholdet - i et åbent redigérbart format - for eksempel via internettet, og at der i hvert eksemplar tydeligt angives, hvordan man kan få den elektroniske udgave.
2. Ændring af indholdet
Du må gerne ændre i dette værk eller dele af det (og dermed lave et nyt værk baseret på dette værk) og distribuere det som nævnt ovenfor, forudsat at du opfylder alle følgende krav:
* a) Du skal sørge for at det nye værk indeholder en tydelig anmærkning om at du ændrede det, hvad du ændrede og datoen for ændringerne.
* b) Det skal være omfattet af samme rettigheder og betingelser ("licens"), som det oprindelige værk.
Alternativt kan det nye værk bære en anden licens eller almindelig ophavsretlig beskyttelse, forudsat at samtlige dele, der oprindeligt stammer fra dette værk, tydeligt er markeret (f.eks i sidefoden på hver side) som værende under denne licens, og at licensen følges for disse dele af værket, herunder at der gives gratis elektronisk adgang som nævnt under afsnittet om kopiering og distribution.
3. Pligter
Enhver anvendelse, kopiering eller distribuering betragtes som en accept af denne licens og dens betingelser. Ved overtrædelse af licensbetingelserne, vil almindelig ophavsretlig beskyttelse være gældende for hele værket og vil dermed gøre person eller personer erstatningspligtige for enhver uautoriseret anvendelse.
4. Garanti
Indholdet leveres "som det er", uden nogen form for garanti for købs-, brugs- eller nytteværdi, medmindre der er givet en særskilt skriftlig garanti herom.

2004-08-30T12:23:21