1 / 24

Implementering av caching ved hjelp av Spring

Implementering av caching ved hjelp av Spring. Christian Vestøl 27.04.06. Agenda. Kort introduksjon til Spring Caching med Spring Praktiske eksempler Forskjellige rammeverk for caching. Kort om Spring. Inversion of Control (IoC) Opprette og konfigurere objekter

Download Presentation

Implementering av caching ved hjelp av Spring

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Agenda • Kort introduksjon til Spring • Caching med Spring • Praktiske eksempler • Forskjellige rammeverk for caching Caching med Spring, Christian Vestøl

  3. 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 Caching med Spring, Christian Vestøl

  4. 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> . . Caching med Spring, Christian Vestøl

  5. 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> . . Caching med Spring, Christian Vestøl

  6. Agenda • Kort introduksjon til Spring • Caching med Spring • Praktiske eksempler • Forskjellige rammeverk for caching Caching med Spring, Christian Vestøl

  7. 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” Caching med Spring, Christian Vestøl

  8. Spring og Caching • Spring benyttes for å opprette og konfigurere objekter • Cache benyttes for å forbedre ytelsen • Hvordan benytter man Spring for å implementere caching? • Aspekt Orientert Programmering (AOP) Caching med Spring, Christian Vestøl

  9. 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.”); Caching med Spring, Christian Vestøl

  10. Hva om vi i stedet benytter oss av Spring AOP? Vi konfigurerer klassen i Spring <bean id=”myService" class="com.capgemini.MyService"/> Caching med Spring, Christian Vestøl

  11. 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”); Caching med Spring, Christian Vestøl

  12. 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; } } Caching med Spring, Christian Vestøl

  13. 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> Caching med Spring, Christian Vestøl

  14. 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 Caching med Spring, Christian Vestøl

  15. JCS –Java Caching 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 Caching med Spring, Christian Vestøl

  16. 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 Caching med Spring, Christian Vestøl

  17. 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); Caching med Spring, Christian Vestøl

  18. 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 Caching med Spring, Christian Vestøl

  19. 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> Caching med Spring, Christian Vestøl

  20. Agenda • Kort introduksjon til Spring • Caching med Spring • Praktiske eksempler • Forskjellige rammeverk for caching Caching med Spring, Christian Vestøl

  21. 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. Caching med Spring, Christian Vestøl

  22. Agenda • Kort introduksjon til Spring • Caching med Spring • Praktiske eksempler • Forskjellige rammeverk for caching Caching med Spring, Christian Vestøl

  23. 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 Caching med Spring, Christian Vestøl

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

More Related