Você está na página 1de 79

Jboss seam 3

Author:Jeffrey Jia QQ 741187973 Email:741187973@qq.com

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

http://www.seamframework.org Jboss seam 3 maven(maven)

Jboss seam 2 and seam 3

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

Author:Jeffrey Jia QQ 741187973 Email:741187973@qq.com

Weld
JSR-299


Openwebbeans(apache ) Candi(resion, http://www.caucho.com/resin/resion )

(Weblogic, websphere)

Weld

Jboss AS 6 ,Jboss AS 7.x Jdk 1.5 + Tomcat 6 + GlassFishV3 Jetty 6.1+


Eclipse 3.7(indigo) +m2e maven Jboss tools 3.3 Maven 3 Jdk 1.6 + Tomcat 7(Servlet 3.0) JSF 2


Jdk 6 (www.oracle.com)

Eclipse 3.7 (http://www.eclipse.org)


Maven 3 (apache.org) Eclipse maven m2e
http://download.eclipse.org/technology/m2e/releases

Jboss tools (http://www.jboss.org/tools) Tomcat 7 (http://tomcat.apache.org)

CDI
@Inject @Qualifier

@Default @Any

CDI 4 scopes @RequestScoped @ConversationScoped

@SessionScoped
@ApplicationScoped @Dependent() @New @Produces @Disposes() @Decorator()

@Named @Model @Alternative @Observes()

CDI

WEB-INF/beans.xml
weld- servlet.jar WEB-INF/web.xml listener

<listener> <listener-class>org.jboss.weld.environment.servlet.Listener</listener-class> </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 !

Author:Jeffrey Jia QQ 741187973 Email:741187973@qq.com

Weld
Bean

Author:Jeffrey Jia QQ 741187973 Email:741187973@qq.com

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

public class User0 { }


bean1 bean2 Session context

proxy

bean3

Conversation context

proxy

bean4

Conversation context


Dependent Scope

bean5

bean6

bean4 bean3

Conversation context

Thank you !

Author:Jeffrey Jia QQ 741187973 Email:741187973@qq.com

Weld
Conversation

Author:Jeffrey Jia QQ 741187973 Email:741187973@qq.com

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 !

Author:Jeffrey Jia QQ 741187973 Email:741187973@qq.com

Weld

Author:Jeffrey Jia QQ 741187973 Email:741187973@qq.com

@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

@Inject @Asynchronous PaymentProcessor app;

@Qualifier
@Qualifier

@Qualifier @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER}) public @interface Synchronous {}

@Inject @Synchronous PaymentProcessor spp;

@Qualifier

@Qualifier @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER}) public @interface PayBy { String value(); }

@Inject @PayBy("SYNC") PaymentProcessor spp;

@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 !

Author:Jeffrey Jia QQ 741187973 Email:741187973@qq.com

Weld
@Alternative

Author:Jeffrey Jia QQ 741187973 Email:741187973@qq.com

@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 !

Author:Jeffrey Jia QQ 741187973 Email:741187973@qq.com

Weld @New

Author:Jeffrey Jia QQ 741187973 Email:741187973@qq.com

@New bean
@New @Default @Any

weldbean bean(scope) (scope)

@Inject @New User newUser;

Thank you !

Author:Jeffrey Jia QQ 741187973 Email:741187973@qq.com

Weld @Produces

Author:Jeffrey Jia QQ 741187973 Email:741187973@qq.com

@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 !

Author:Jeffrey Jia QQ 741187973 Email:741187973@qq.com

Weld

Author:Jeffrey Jia QQ 741187973 Email:741187973@qq.com

@Interceptor


@InterceptorBindingInterceptor binding

@Interceptor
Bean.xml

@Interceptor
Interceptor binding

@InterceptorBinding @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE, ElementType.METHOD}) public @interface Transactional { }

@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 { }

@Transactional public void action() { System.out.println(user.getName()); }

Thank you !

Author:Jeffrey Jia QQ 741187973 Email:741187973@qq.com

Weld @Decorator

Author:Jeffrey Jia QQ 741187973 Email:741187973@qq.com

@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 { }

@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 !

Author:Jeffrey Jia QQ 741187973 Email:741187973@qq.com

Weld @Observes

Author:Jeffrey Jia QQ 741187973 Email:741187973@qq.com

weld
Weld

@Inject Event<User> userEventSrc; public void action() { System.out.println("--------- before fire ----------"); userEventSrc.fire(user); System.out.println("--------- after fire ----------"); }

weld

public void userOb(@Observes User user) { System.out.println("--------------- userOb "+user.getName()); }

Thank you !

Author:Jeffrey Jia QQ 741187973 Email:741187973@qq.com

Você também pode gostar