Escolar Documentos
Profissional Documentos
Cultura Documentos
Jboss seam 3
Jboss seam
Jboss seam 3
Jboss seam
Jboss seam
(seam vs spring)
(Conversation)
JavaEE(ejb3,jsf,jpa,session Bean,mdb,wicket)
Conversation
Conversation
Application context
Session context Conversation context Conversation context Request Request Request Request Request
Jboss seam 3
Jboss seam
Jboss seam 3
jboss seam 2 javaEE JSR-299
JSR-299:Weld
jboss seam 2
seam-solder
seam-config-xml
seam-servlet seam-faces
seam-persistence
seam-security seam-catch
Jboss seam 3
seam-validation
seam-remoting
seam-international seam-wicket
seam-conversation-weld
Seam-mail Seam-cron ..
weld
JavaEE 6 JSR-299(CDI)
weld
Weld
JSR-299
Openwebbeans(apache ) Candi(resion, http://www.caucho.com/resin/resion )
(Weblogic, websphere)
Weld
Jdk 6 (www.oracle.com)
CDI
@Inject @Qualifier
@Default @Any
@SessionScoped
@ApplicationScoped @Dependent() @New @Produces @Disposes() @Decorator()
CDI
WEB-INF/beans.xml
weld- servlet.jar WEB-INF/web.xml listener
@Inject
bean
public class UserAction { @Inject private User user; public void save() { System.out.println(user.getUsername()); System.out.println(user.getPassword()); } }
Weld
Thank you !
Weld
Bean
Bean
CDI 4 :
@RequestScoped
@ConversationScoped
@ApplicationScoped @Dependent
@SessionScoped
Dependentbean ELDependent bean ELDependent bean Dependentbean(proxy Object), Dependentbean
Conversation
Conversation
Application context
Session context Conversation context Conversation context Request Request Request Request Request
bean
@ApplicationScoped
BeanwebJVM beanbean
@Named @ApplicationScoped public class User4 { }
bean
@SessionScoped
BeanHttpSession Serializable
@Named @SessionScoped public class User3 implements Serializable{ private static final long serialVersionUID = 1L; }
bean
@ConversationScoped
Serializable
@Named @ConversationScoped public class User2 implements Serializable{ private static final long serialVersionUID = 1L; }
bean
@RequestScoped
HttpRequest Serializable
@Named @RequestScoped public class User1 { }
bean
@Dependent
Dependentbean ELDependent bean ELDependent bean Dependentbean(proxy Object), Dependentbean
bean1 bean2 Session context
proxy
bean3
Conversation context
proxy
bean4
Conversation context
Dependent Scope
bean5
bean6
bean4 bean3
Conversation context
Thank you !
Weld
Conversation
Conversation
Application context
Session context Conversation context Conversation context Request Request Request Request Request
Conversation(transient )
Conversation request
Conversation context
Request
Conversation(long-running)
Conversation
transient conversation
Long running conversation
@Inject Conversation conversation; public void start() { conversation.begin(); conversation.setTimeout(300000);//510 }
Conversation(long-running)
bean1 bean2 bean3 Conversation context
bean4
bean5
Conversation context
Thank you !
Weld
@Inject
(Injection points)
2.
1.
Bean
3.
@Inject
@Named public class PaymentAction { @Inject public PaymentAction(PaymentProcessor pp) { pp.process(); System.out.println("-------constructor------"); } }
@Inject
@Inject // public void anyAction(@Any Instance<PaymentProcessor> ins ) { for (PaymentProcessor paymentProcessor : ins) { paymentProcessor.process(); } System.out.println("------------ init method------"); }
@Inject
@Qualifier
@Qualifier
@Qualifier
@Qualifier @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER}) public @interface PayBy { String value(); }
@Default @Any ()
@Default
@Default
@Any bean@Any
@Inject @Default // @Default PaymentProcessor pp; @Inject public void anyAction(@Any Instance<PaymentProcessor> ins ) { for (PaymentProcessor paymentProcessor : ins) { paymentProcessor.process(); } }
Thank you !
Weld
@Alternative
@Alternative()
@Alternative @Synchronous @Asynchronous @Default public class MockPaymentProcessor implements PaymentProcessor { @Override public void process() { System.out.println("This is "+this.getClass().getName()); } }
@Alternative
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:s="urn:java:ee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd"> <alternatives> <class>org.jeffrey.MockPaymentProcessor</class> </alternatives> </beans>
Thank you !
Weld @New
@New bean
@New @Default @Any
Thank you !
Weld @Produces
@Produces
@Produces
@Produces @ProUser @SessionScoped public User prod() { User user = new User(); user.setName("pro"); System.out.println("--------prod called -------"); return user; }
@Disposes
@Produces @ProUser @SessionScoped public User prod() { User user = new User(); user.setName("pro"); System.out.println("--------prod called -------"); return user; } public void cole(@Disposes @ProUser User user) { System.out.println(user.getName()+"---------disposes called---- "); }
Thank you !
Weld
@Interceptor
@InterceptorBindingInterceptor binding
@Interceptor
Bean.xml
@Interceptor
Interceptor binding
@Interceptor
@Interceptor @Transactional public class TransactionInterceptor { @AroundInvoke public Object manageTransaction(InvocationContext ctx) throws Exception { } }
@Interceptor
Bean.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:s="urn:java:ee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd"> <interceptors> <class>org.jeffrey.TransactionInterceptor</class> </interceptors> </beans>
@Interceptor
@Named @Transactional public class UserAction { }
Thank you !
Weld @Decorator
@Decorator
@Override public void deposit(int amount) { System.out.println("------------decorator deposit method start-------"); account.deposit(amount); System.out.println("------------decorator deposit method end-------"); }
Bean.xml
@Decorator public abstract class AccountDecorator implements Account { @Inject @Delegate @Any Account account; }
Bean.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:s="urn:java:ee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd"> <decorators> <class>org.jeffrey.AccountDecorator</class> </decorators> </beans>
Thank you !
Weld @Observes
weld
Weld
@Inject Event<User> userEventSrc; public void action() { System.out.println("--------- before fire ----------"); userEventSrc.fire(user); System.out.println("--------- after fire ----------"); }
weld
Thank you !