Implementering av caching ved hjelp av Spring. Christian Vestøl 27.04.06



Like dokumenter
Eksamen i Internetteknologi Fagkode: ITE1526

Effektiv Systemadministrasjon

Java RMI (Remote Method Invocation) Gruppe 9: Ivar Steien Rasmussen Tom Anders Dalseng Andreas Petlund

OOT Seminar H-97 CORBA. Praktisk del

Kapittel 13 Advanced Hypertext Implementation. Martin Lie Ole Kristian Heggøy

Distributed Component Object Model. Utvikling av distribuerte applikasjoner. Utvidelse av COM for støtte av distribuerte objekter

Java RMI. Introduksjon. Markus Foss Hans-Gunnar Vold

Presentasjon av gruppe 7: Erik Østensen, Henning Østensen og Kenneth Ådalen

J2EE. CMP Entity Beans, Transaksjoner, JSP

Læringsmål for forelesningen

GraphQL. Hva, hvorfor, hvordan

HØGSKOLEN I SØR-TRØNDELAG

Message Oriented Middleware (MOM) Thomas Filip Andresen Arild Berggren Eivind Bøhn

Eksamen Objektorientert Programmering 2013

Å lese tall fra en fil, klassen Scanner

Kapittel 9. Distribusjon. Fjernbruker. Tjenermaskin LAN WAN. Nærbruker. Figur 9-1: En enkel klient/tjener distribusjon

CORBA Component Model (CCM)

UNIVERSITETET I OSLO

Eksamen Objektorientert Programmering 2012

J2EE. Katalogtjenester, JNDI og Enterprise Beans

CORBA & Java RMI & J2EE & CORBA CCM OMG & CORBA

INF Notater. Veronika Heimsbakk 10. juni 2012

Eksamen i Internetteknologi Fagkode: IVA1379

1 Forord. Kravspesifikasjon

Læringsmål for forelesningen

Java WebStart er et verktøy for å distribuere Java-applikasjoner av ulik type. Forfatter: Else Lervik Dato:

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

1 Kodegenerering fra Tau Suiten

Fakultet for informasjonsteknologi, Løsning på kontinuasjonseksamen i TDT4190 / SIF8042 Distribuerte systemer August 2005,

Hittil har programmene kommunisert med omverden via tastatur og skjerm Ønskelig at data kan leve fra en kjøring til neste

1 JSP. 1.1 Innledning. 1.2 JSP og web-tjener. Innhold

Sikkerhet og tilgangskontroll i RDBMS-er

Videregående programmering 6

Kapittel 8: Programutvikling

/** * A cache of words and their stems */ static private Map<String, String> cache = new WeakHashMap<String, String>();

LocalBank Prosjektbeskrivelse

Introduksjon til programmering og programmeringsspråk. Henrik Lieng Høgskolen i Oslo og Akershus

Oppsummering. Thomas Lohne Aanes Thomas Amble

Enkel app-programmering med JavaFX og FXML

HiOA TDK. Ingeniørfag data. DATS1600 Programutvikling. Eva Hadler Vihovde. Prosjektoppgaven Prosessdokumentasjon - Alternativ 1

Oppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; }

Løsningsforslag for Obligatorisk Oppgave 3. Algoritmer og Datastrukturer ITF20006

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus

EKSAMEN Webpublisering

Rekursiv programmering

S y s t e m d o k u m e n t a s j o n

Å bruke Java API-et til å sortere tabeller/arraylister der elementene er (referanser til) objekter

J2EE og distribuerte systemer Leksjon 11: Entity Beans (CMP)

Gruppe 11. Frank Petter Larsen Vegard Dehlen

Sortering med Comparable og Comparator

- analyse og implementasjon

CORBA Objektmodell (Java RMI)

OpenCOM. Del av et forskningsprosjekt ved Lancaster University, UK

Objektorientert Programmering Ekstraordinær eksamen 2014

XML og JDOM. Helge Furuseth

Gemini SOSI Ledning GML dataflyt. Asle Kvam & Kjetil Gjesdal - Powel

TDT4100 Objektorientert programmering

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring -

IN1010 våren Repetisjon av tråder. 15. mai 2018

Factory Patterns Interface Deklarerer at klassen skal bruke et interface (implements i Java) Definerer implementasjoner for alle metodene i interfacet

Emnenavn: Objektorientert programmering. Faglærer: Lars Emil Knudsen

INF1010 LISTER. Listeelementer og listeoperasjoner. Foran. Bak

Det finnes ingenting. som kan gjøres med interface. men som ikke kan gjøres uten

Med Svarforslag UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet. 3 sider (side 6, 7 og 8, rives ut, fylles ut og leveres)

Tilkobling og Triggere

IN1010 våren januar. Objektorientering i Java

NB!!! Veldig korte svar er gitt her. Disse burde det vært skrevet mer på ved en eksamen..

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

Giftwrapping. New project; start at end

1. NetBeans IDE: Lage en enkel mobilapplikasjon

(MVC - Model, View, Control)

Tilstandsmaskiner med UML og Java

Publisering av statiske og dynamiske websider til klasserom.net fra Dreamweaver og MySQL

Diverse eksamensgaver

Monitoring Framework - Kravspesifikasjon

Databaser kort intro. Tom Heine Nätt

Object interaction. Innhold. Abstraksjon Grunnleggende programmering i Java Monica Strand 3. september 2007.

Antall oppgaver: 6. Alle trykte og skrevne hjelpemidler

Kalkulator-leksjonen (nesten ferdig)

2. Beskrivelse av mulige prosjektoppgaver

Hentet fra Suns Totorial:

public interface Collec>on<V> { public void add(v value); public default V remove(v value) { return null;

Qt Jambi E t R ammeverks His torie

DCOM. 21. oktober Mai et al. Hva er egentlig en komponent?

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

Genova810DokDomenemodell

Objekt med Java. Harald Yndestad Høgskolen i Ålesund

INF våren 2017

HØGSKOLEN I SØR-TRØNDELAG

Mål med kurset. Java i INF Dagens tema. GUI med Swing. Dokumentasjon

Oblig 5 Webutvikling. Av Thomas Gitlevaag

INF1010, 21. februar Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

INF 329: Web-Teknologier. Dataimplementasjon. Fra Kapittel 11 i «Designing Data-Intensive Web Applications» Presentasjonsdato: 17/10/2004

Introduksjon til programmering og programmeringsspråk

Fakultet for informasjonsteknologi, Løsning på eksamen i TDT4190 Distribuerte systemer Torsdag 9. juni 2005,

Utfordringer til mellomvare: Multimedia

NPK - Teknisk dokumentsjon

Transkript:

Implementering av caching ved hjelp av Spring Christian Vestøl 27.04.06

Agenda Kort introduksjon til Spring med Spring Praktiske eksempler Forskjellige rammeverk for caching April 2006 2

Kort om Spring Inversion of Control (IoC) Opprette og konfigurere objekter Holder javakoden fri for klassespesifik konfigurasjon Dependency Injection Knytter sammen objekter Støtter Aspekt Orientert Programmering Gjør det mulig å legge til logikk før/etter ordinære metodekall April 2006 3

Hva betyr egentlig dette? Konfigurasjon av objekter <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id= myservice" class= com.capgemini.myservice"> <property name= mode ><value>demo</value></property> </bean>.. April 2006 4

Hva betyr egentlig dette? Kobling av objekter <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id= myservice" class= com.capgemini.myservice"> <property name="datasource"><ref bean="datasource"/></property> <property name= mode ><value>demo</value></property> </bean>.. <bean id="datasource class="com.oracle.datasource"> <property name="user"><value>scott</value></property> April 2006 5

Agenda Kort introduksjon til Spring med Spring Praktiske eksempler Forskjellige rammeverk for caching April 2006 6

Hvorfor cache? Ytelse, ytelse, ytelse! Man har ofte en god del statiske data Mange databasekall tar kun 10-50ms Mange bekker små gjør en stor å Skalering Memory er gratis April 2006 7

Spring og Spring benyttes for å opprette og konfigurere objekter Cache benyttes for å forbedre ytelsen Hvordan benytter man Spring for å implementere caching? Aspekt Orientert Programmering (AOP) April 2006 8

Hva er egentlig Aspekt Orientert Programmering? Ser dette kjent ut? long start = System.currentTimeMillis(); List l = myservice.getdatafromdatabase(); log.debug( getdatafromdatabase() used +(System.currentTimeMillis()-start)+ ms. ); April 2006 9

Hva om vi i stedet benytter oss av Spring AOP? Vi konfigurerer klassen i Spring <bean id= myservice" class="com.capgemini.myservice"/> April 2006 10

Hva om vi i stedet benytter oss av Spring AOP? Vi instansierer et BeanFactory i vår kode ApplicationContext context; context = new ClassPathXmlApplicationContext("spring_configuration.xml"); MyService myservice = (MyService)context.getBean( myservice ); April 2006 11

Hva om vi i stedet benytter oss av Spring AOP? Vi oppretter en klasse som tar seg av loggingen package com.capgemini; import org.aopalliance.intercept.*; public class LogResponseTime implements MethodInterceptor { public Object invoke(methodinvocation mi) throws Throwable { long start = System.currentTimeMillis(); Object result = mi.proceed(); log.debug(mi.getmethod()+ used +(System.currentTimeMillis()- start)+ ms. ); } } return result; April 2006 12

Hva om vi i stedet benytter oss av Spring AOP? Og konfigurerer denne i Spring <bean id= logger" class= com.capgemini.logresponsetime /> <bean id= myserviceproxycreator" class="org.springframework.aop.framework.autoproxy. BeanNameAutoProxyCreator"> <property name="beannames"><value>myservice</value></property> <property name="interceptornames"> <list> <value>logger</value> </list> </property> </bean> April 2006 13

Hva om i stedet benytter oss av Spring AOP? Vi konfigurerer klassen som inneholder databasekallet i xml Vi instansierer et BeanFactory i vår kode Vi lager en klasse som tar seg av loggingen (interceptor) Vi kobler denne på rundt det ordinære kallet i Spring April 2006 14

JCS Java System Apache prosjekt Enkelt å konfigurere (enkelt å komme i gang) Memory cache (flere varianter) Disk cache / Database cache (JDBC) Distribuert caching (kan brukes i cluster) TCP Lateral cache (distribuerte noder) RMI Remote cache server (distribuerte noder med masterserver) Egen webside for administrasjon av cachen April 2006 15

JCS konfigurasjon # Default cache region jcs.default= jcs.default.cacheattributes=org.apache.jcs.engine.compositecacheattributes jcs.default.cacheattributes.maxobjects=10000 jcs.default.cacheattributes.memorycachename= org.apache.jcs.engine.memory.lru.lrumemorycache # Memory shrinking attributes jcs.default.cacheattributes.usememoryshrinker=true jcs.default.cacheattributes.maxmemoryidletimeseconds=36000 jcs.default.cacheattributes.shrinkerintervalseconds=300 jcs.default.cacheattributes.maxspoolperrun=500 jcs.default.elementattributes=org.apache.jcs.engine.elementattributes jcs.default.elementattributes.iseternal=false April 2006 16

JCS implementasjon i javakoden import org.apache.jcs.jcs; import org.apache.jcs.access.exception.cacheexception; JCS jcs = JCS.getInstance( regionname ); //get object from cache Serializable ret = (Serializable)jcs.get( key ); //put object in cache jcs.put( key, object); April 2006 17

JCS implementert med Spring Definerer beans i XML (Springkonfigurasjonen) Lager en Interceptorklasse som håndterer caching Koble Beans sammen i XML Instansiere et BeanFactory som oppretter klassene for oss April 2006 18

JCS implementert med Spring Hva om man ikke ønsker å cache alle metodekall på en klasse? Spring støtter det ved at man legger til en advisor i konfigurasjonen. Dette kan typisk være en RegexpMethodPointcutAdvisor. Denne kan konfigureres slik at den kun slår til ved enkelte metodekall: <property name="patterns"> <list> <value>.*get.*</value> <value>.*lookup.*</value> </list> </property> April 2006 19

Agenda Kort introduksjon til Spring med Spring Praktiske eksempler Forskjellige rammeverk for caching April 2006 20

Eksempler Dropdown med postnr. og poststed Dropdown med land/landkoder Lookup metoder for validering av input I applikasjoner hvor man har regelmessig dataoverføring fra andre datakilder. April 2006 21

Agenda Kort introduksjon til Spring med Spring Praktiske eksempler Forskjellige rammeverk for caching April 2006 22

Rammeverk for caching JCS - http://jakarta.apache.org/jcs/index.html EHCache - http://ehcache.sourceforge.net/ Ny versjon denne uka OSCache - http://www.opensymphony.com/oscache/ Inkluderer tag library JBossCache - http://www.jboss.org/products/jbosscache Håndterer transaksjoner April 2006 23

The end Spørsmål? Contact: Christian Vestøl, christian.vestol@capgemini.com no.capgemini.com