Download - Weld lightningtalk - Know IT Iceland 2010
Weld
Ken Gullaksen & Jon Vassbø
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
Producers
Producers
Producers
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()
Qualifiers
• Løser Ambigous Depepency• Tilgang til InjectionPoint Metadata
Qualifers
Qualifers
Interceptors
• Basert på Java Interceptor spec• Mer sofistikert, semantisk, annotasjonsbasert tilnærming• Business method interception• Lifecycle callback interception• Timeout method interception (EJB)
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
Events
• Event observe pattern• Typesafe
Events
• Kan brukes med Qualifers
Stereotypes
• Kan lage egne stereotype annotasjoner, for å forenkle annotasjon på beans
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.
Java EE
Java EE