Weld lightningtalk - Know IT Iceland 2010

17
Weld Ken Gullaksen & Jon Vassbø

description

Slides for lightning talk to be held at Know IT annual conference, Iceland 2010

Transcript of Weld lightningtalk - Know IT Iceland 2010

Page 1: Weld lightningtalk - Know IT Iceland 2010

Weld

Ken Gullaksen & Jon Vassbø

Page 2: Weld lightningtalk - Know IT Iceland 2010

Producers

• Producer methods– Kilde for objekt som skal injectes (må ikke være fra bean)– Objekttypen kan variere runtime– Objekt trenger spesiell initialisering som ikke bean constructor

tar seg av

• Gir mulighet til– Tilgjengeliggjøre JPA entitet som bean– Tilgjengeliggjøre hvilken som helst JDK klasse som bean– Definere flere beansmed forskjellig scope eller initialisering for

samme implementasjonsklasse– Variere implementasjon av bean runtime

Page 3: Weld lightningtalk - Know IT Iceland 2010

Producers

Page 4: Weld lightningtalk - Know IT Iceland 2010

Producers

Page 5: Weld lightningtalk - Know IT Iceland 2010

Producers

Page 6: Weld lightningtalk - Know IT Iceland 2010

Feil man vil støte på

• Unsatisfied Dependency: har ikke tilgjengeliggjort det du prøver å injisereInjection point has unstatisfied dependencies. Injection point: field

no.knowit.welders.spotiweld.SpotifyWeb.user; Qualifiers: []

• Ambigous Dependency: har for mange bønner tilgjengeliggjortInjection point has ambiguous dependencies. Injection point: field

no.knowit.welders.spotiweld.SpotifyWeb.user; Qualifiers: []; Possible dependencies: org.jboss.weld.bean-flat-ProducerMethod-no.knowit.welders.spotiweld.producers.FacesContextProducer.getUser2(), org.jboss.weld.bean-flat-ProducerMethod-no.knowit.welders.spotiweld.producers.FacesContextProducer.getUser1()

Page 7: Weld lightningtalk - Know IT Iceland 2010

Qualifiers

• Løser Ambigous Depepency• Tilgang til InjectionPoint Metadata

Page 8: Weld lightningtalk - Know IT Iceland 2010

Qualifers

Page 9: Weld lightningtalk - Know IT Iceland 2010

Qualifers

Page 10: Weld lightningtalk - Know IT Iceland 2010

Interceptors

• Basert på Java Interceptor spec• Mer sofistikert, semantisk, annotasjonsbasert tilnærming• Business method interception• Lifecycle callback interception• Timeout method interception (EJB)

Page 11: Weld lightningtalk - Know IT Iceland 2010

Decorators

• Fungerer som en Interceptor, men snapper kun opp invokeringer fra ett bestemt interface

• Er en bean (kan være abstract) som implementerer metodene fra interfacet den skal snappe opp kall fra

Page 12: Weld lightningtalk - Know IT Iceland 2010

Events

• Event observe pattern• Typesafe

Page 13: Weld lightningtalk - Know IT Iceland 2010

Events

• Kan brukes med Qualifers

Page 14: Weld lightningtalk - Know IT Iceland 2010

Stereotypes

• Kan lage egne stereotype annotasjoner, for å forenkle annotasjon på beans

Page 15: Weld lightningtalk - Know IT Iceland 2010

Java EE• Hvordan passer Weld sammen med andre Java EE 6

teknologier• Weld sammen med Servlet 3

From Real Wordl Java EE Patterns– Servlets are stateless, pooled components, so the Dependency

Injection here is only limited to the stateless session beans. The injection of a stateful session bean into a Servlet would make it sharable across different browers. Even worse, the stateful session bean would be accessed concurrently, which is not allowed and would result in the exception javax.ejb.ConcurrentAccessException

• Weld to the rescue! (Weld reference)– Since instances of servlets are shared across all incoming

threads, the bean client proxy takes care of routing method invocations from the servlet to the correct instances of Credentials and Login for the current request and HTTP session.

Page 16: Weld lightningtalk - Know IT Iceland 2010

Java EE

Page 17: Weld lightningtalk - Know IT Iceland 2010

Java EE