De ska vara möjligt att separera kod med olika utvecklingsbehov. Det ska vara enkelt att gå från en web-centrerad design till en komponentbaserad

Relevanta dokument
Komponenter. Föreläsning 4 EJB. En EJB består av. Session Beans. Olika sorters böner. Enterprise Java Beans (EJB)

Enterprise Java Beans Assignment 1

Björn Persson. Komponenter med J2EE. Del 2

Innehåll. Föreläsning 3. javax.naming.context. javax.sql.datasource. Vad är JDBC? Java Naming and Directory Interface(JNDI) Viktigaste metoder:

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

DI-institutionen Sid 1 av 5 Hans-Edy Mårtensson Sten Sundin Micael Karlsson

Föreläsning 3. Stack

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

Tentamen ITK:P2. Inga hjälpmedel tillåtna förutom penna och papper. Skriv tydligt och texta gärna. 14 st frågor, 70 poäng.

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Föreläsning 3. Stack

INTERSTAGE V4. Application Server. Integration Server. Portal Server. Network Access Server 1 INTERSTAGE V4. INTERSTAGE Application Server

a. Vilka av följande påståenden är riktiga? Observera att felaktigt valda påståenden ger poängavdrag. (4p)

2I1070 Lektion 2 Servlets och databaskopplingar Internetprogrammering 2I1049 Treskiktsarkitektur Klient-server med servlets

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Tung bakgrundsaktivitet t.ex. Aktiva objekt t.ex. Animering, simulering. DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013

Upplägg. Introduktion. Examination. Mål. Konsekvenser. Java. Kursen heter konstruktion, ej design eller formgivning.

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Properties. Användbara metoder som kan anropas i propertychanged:

Exempel. Lektion 4. Innehåll. Fördefinierade variabler. PageContext. Java Server Pages (JSP) DD2483 Enterprise Java 6 hp

Xpmetodik inom Enterpriseutveckling

Kopiering av objekt i Java

F8 Webbteknologier 1. Dynamiska webbsidor

Distribuerade system. CORBA eller RMI

Internationalisering/lokalisering på webben

JAR som tar eller zip. Java. Exekvering

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

ENTERPRISE - UR ETT SYSTEMUTVECKLINGSPERSPEKTIV -

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Objektorienterad Programmering (TDDC77)

Klientprogrammering mot databaser

DB, DATA, LOGIC, EXPOSURE (WEB)

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).

Laboration 24 Databasen MySQL och java

Denna vecka. Idag. Grafiskt användarsnitt. Vi kommer att se

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin Micael Karlsson

Konstruktion av klasser med klasser

Tentamensskrivning Nätverksprogrammering (EDA095) , kl 8-13

Lite mer om CGI-programmering

Middleware vad, hur, varför när?

Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

Generiska konstruktioner. Kursbokens kapitel 13

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

Lösningar för tenta 2 DAT043,

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Föreläsnings 9 - Exceptions, I/O

DAT043 Objektorienterad Programmering

Web Services. Cognitude 1

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

Javas Exceptions. DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/ Kort om Javas Exceptions Trådar i Java

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

F4. programmeringsteknik och Matlab

Datalagringsmetodik i J2EE. Björn Brenander

Högskolan Dalarna sid 1 av 5 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Tentamen Nätverksprogrammering Lösningsförslag

LÖSNINGSFÖRSLAG

Distribuerade System, HT03

Att skriva till och läsa från terminalfönstret

Björn Persson. Komponenter med J2EE. Del 1

TENTAMEN I DATAVETENSKAP

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Föreläsning 4. Innehåll. Java EE 7 subapi. Java EE. Java EE. DD2390 Internetprogrammering 6 hp

Tentamen. Programmeringsmetodik, KV: Java och OOP. 17 januari 2002

Tentamen Nätverksprogrammering Lösningsförslag

Distribuerade affärssystem

Servlets y JSP Fernando Berzal,

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Tentamen LÖSNINGSFÖRSLAG. c) Tilldelningen C x = new D() ger kompileringsfel eftersom klassen D är abstrakt.

Föreläsning 3 Innehåll. Generiska klasser. Icke-generisk lista ArrayList, skiss av implementering. Icke-generisk lista Risk för fel

12 Metaprogrammering i Java

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Klasshierarkier. Klasser kan byggas på redan definierade klasser

Klassen javax.swing.timer

UML 2.0 och dess roll för modellbaserad utveckling

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

FactoryCast HMI. Premium & Quantum PLC. Applets

/* * * Lösningsförslag tentamen DIT950 * Datum * */ /* * -1 - */ För samtliga gäller,se föreläsningsanteckningar.

Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2

public interface Skrivbar { void skriv(); } public class Punkt implements Skrivbar { public double x; public double y;

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista

Arv. Objektorienterad och komponentbaserad programmering

Fakulteten för ekonomi, kommunikation och IT. Corba. Datum: Mathias Andersson

Tentamen Nätverksprogrammering Lösningsförslag

Fördjupad Java. Undantagshantering. Fel

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

l uppgiftsformulering l algoritmkonstruktion l verifikation l kodning l testning och avlusning l validering l dokumentering l underhœll Kapitel 2

Karlstads Universitet, Datavetenskap 1

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

F9 Webbteknologier 1. EDA095 Nätverksprogrammering. Roger Henriksson Datavetenskap Lunds universitet

Omentamen FYTA11 Javaprogrammering

Tentamen Programmering fortsättningskurs DIT950

Datalagringsmetodik och arkitektur i Java. Projektdefinition. Projektdefinition. Björn Brenander. 7 maj 2001

2I1049 Föreläsning 9. Iterativ programutveckling. Iterativ programutveckling. Modularisering, återanvändning och JavaBeans

Transkript:

Design av distribuerade system, några generella mål Lätt att underhålla och modifiera Utvecklare med olika färdigheter ska kunna arbeta oberoende av varandra Systemet ska gå att skala upp, flytta och ha en hög tillgängligt Kod ska vara återanvändbar Systemet ska kunna samarbeta med andra system Utvecklare ska kunna fokusera på utveckling av affärslogik inte systemmekanismer De ska vara möjligt att separera kod med olika utvecklingsbehov Det ska vara enkelt att gå från en web-centrerad design till en komponentbaserad 1 Java 2 Platform Enterprise Edition, J2EE J2EE innehåller stöd för utveckling av system bestående av flera lager Varje lager tjänar sitt speciella syfte 2

J2EE, Components Containers, Connectors Components, de delar i systemet som beskriver applikationerna Containers, den miljö i vilken komponenterna förekommer. Connectors, fungerar som anslutningar mot olika leverantörers programvaror 3 J2EE och några av dess services JNDI, Java Naming and Directory Interface En enkel mekanism för att hitta och ansluta andra objekt JDBC, Java DataBase Connectivity Databasstöd JavaMail Möjlighet att ta i mot och sända mail CORBA Ger möjligheter att ansluta till andra icke Java-system Java Transaction Stöd för transaktioner av operationer XML Stöd för enhetlig dokumenthantering JMS, Java Message Service En teknik för att sända meddelanden mellan olika komponenter i ett distribuerat system 4

Enterpise Java Beans, EJB EJB är komponenter som erbjuder olika tjänster över nätet EJB exekverar alltid på en applikationsserver En applikationsserver är försedd med en EJBcontainer och en Web-container Några exempel på olika applikationservrar är, j2ee, java.sun.com Tomcat, jakarta.apache.org JBoss-Jetty, www.jboss.org Orion, www.orionserver.com WebSphere, www.ibm.com WebLogic, www.beasys.com Jrun, www.jrun.com iplanet, www.iplanet.com Oracle 9i AS, www.oracle.com 5 Typer av EJB Det finns tre olika typer av EJB Session beans Utför någon typ av uppdrag åt klienten Stateless session beans Är ej knuten till någon unik klients session Stateful session beans Knyts till en specifik klients session, dvs är unik för den anropande klienten Entity beans Är persistenta, dvs deras tillstånd sparas permanent. Detta görs med hjälp av en databas Message-Driven Beans Fungerar som lyssnare för JMS-meddelanden 6

Exempel, valuta växling, del 1 Applikationsserver EJB-container Enterprise Java Bean ConverterBean Home-interface ConverterHome Remote-interface Converter Web-container index.jsp 7 Några regler för namngivning Typ Syntax Exempel EJB namn <namn>ejb ConverterEJB EJB JAR namn <namn>jar ConverterJAR EJB class <namn>bean ConverterBean home interface <namn>home ConverterHome remote interface <name> Converter 8

Exemplet, valuta växling, del 2 remote interface import javax.ejb.ejbobject; import java.rmi.remoteexception; import java.math.*; public interface Converter extends EJBObject public BigDecimal dollartoyen(bigdecimal dollars) throws RemoteException; public BigDecimal yentoeuro(bigdecimal yen) throws RemoteException; 9 Exemplet, valuta växling, del 3 home interface import java.io.serializable; import java.rmi.remoteexception; import javax.ejb.createexception; import javax.ejb.ejbhome; public interface ConverterHome extends EJBHome Converter create() throws RemoteException, CreateException; 10

Exemplet, valuta växling, del 4 enterprise bean class import java.rmi.remoteexception; import javax.ejb.sessionbean; import javax.ejb.sessioncontext; import java.math.*; public class ConverterBean implements SessionBean BigDecimal yenrate = new BigDecimal("121.6000"); BigDecimal eurorate = new BigDecimal("0.0077"); public BigDecimal dollartoyen(bigdecimal dollars) BigDecimal result = dollars.multiply(yenrate); return result.setscale(2,bigdecimal.round_up); public BigDecimal yentoeuro(bigdecimal yen) BigDecimal result = yen.multiply(eurorate); return result.setscale(2,bigdecimal.round_up); public ConverterBean() public void ejbcreate() public void ejbremove() public void ejbactivate() public void ejbpassivate() public void setsessioncontext(sessioncontext sc) 11 Exemplet, valuta växling, del 5 JSP-sidan <%@ page import="converter,converterhome,javax.ejb.*, java.math.*, javax.naming.*, javax.rmi.portableremoteobject, java.rmi.remoteexception" %> <%! private Converter converter = null; public void jspinit() try InitialContext ic = new InitialContext(); Object objref = ic.lookup("java:comp/env/ejb/theconverter"); ConverterHome home = (ConverterHome) PortableRemoteObject.narrow(objRef, ConverterHome.class); converter = home.create(); catch (RemoteException ex) System.out.println("Couldn't create converter bean."+ ex.getmessage()); catch (CreateException ex) System.out.println("Couldn't create converter bean."+ ex.getmessage()); catch (NamingException ex) System.out.println("Unable to lookup home: "+ "TheConverter "+ ex.getmessage()); public void jspdestroy()converter = null; %> 12

Exemplet, valuta växling, del 6 JSP-sidan Exemplet, valuta växling, del 7 En deployment descriptor <html> <head> <title>converter</title> </head> <body bgcolor="white"> <h1><b><center>converter</center></b></h1> <hr> <p>enter an amount to convert:</p> <form method="get"> <input type="text" name="amount" size="25"> <br> <p> <input type="submit" value="submit"> <input type="reset" value="reset"> </form> <% String amount = request.getparameter("amount"); if ( amount!= null && amount.length() > 0 ) BigDecimal d = new BigDecimal (amount); %> <p> <%= amount %> dollars are <%= converter.dollartoyen(d) %> Yen. <p> <%= amount %> Yen are <%= converter.yentoeuro(d) %> Euro. <% %> <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN' 'http://java.sun.com/dtd/ejb-jar_2_0.dtd'> <ejb-jar> <display-name>converterjar</display-name> <enterprise-beans> <session> <display-name>converterbean</display-name> <ejb-name>converterbean</ejb-name> <home>converterhome</home> <remote>converter</remote> <ejb-class>converterbean</ejb-class> <session-type>stateless</session-type> <transaction-type>bean</transaction-type> <security-identity> <description></description> <use-caller-identity></use-caller-identity> </security-identity> </session> </enterprise-beans> </ejb-jar> </body> </html> 13 14