Ejb3.0-2
Ejb3.0--2
今天继续昨天的学习,session bean 的生命周期和拦截器(interceptor)
今天继续昨天的学习,session bean 的生命周期和拦截器(interceptor)
package com.chenzhq.ejb; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import javax.ejb.Init; import javax.ejb.Local; import javax.ejb.PostActivate; import javax.ejb.PrePassivate; import javax.ejb.Remote; import javax.ejb.Remove; import javax.ejb.Stateful; import javax.interceptor.AroundInvoke; import javax.interceptor.InvocationContext; @Stateful @Remote ({HelloWorldRemote.class}) @Local ({HelloWorldLocal.class}) //@Interceptors ({HelloWorldInterceptor.class}) public class HelloWorld implements HelloWorldLocal, HelloWorldRemote { @Init public void init(){ System.out.println("init 方法是最早调用的方法!"); } @PostConstruct public void construct(){ System.out.println("PostConstruct 方法是在init方法调用之后调用的方法!"); } @PrePassivate public void passivate(){ System.out.println("PrePassivate 方法是专门对于stateful session bean 的方法,他将在钝化bean之前调用!"); } @PostActivate public void activate(){ System.out.println("activate 方法是专门对于stateful session bean 的方法,他将在钝化bean之后,然后访问钝化的bean,容器将重新实例化bean之后调用。"); } @PreDestroy public void destroy(){ System.out.println("PreDestroy 方法是在session bean 被对象池销毁前调用的。"); } @Remove public void remove(){ System.out.println("Remove 方法是通过存根对象调用的,这样容器就知道什么时候将对象从对象池中移走这个对象了。"); } @AroundInvoke public Object log(InvocationContext ic) throws Exception{ if(ic.getMethod().getName().equals("say")) System.out.println("say method is implemented!!!"); return ic.proceed(); } public String say(String name){ return name; } }
1 楼
zzx0421
2008-10-16
请问下AroundInvoke注解的方法什么时候调用?
2 楼
xiaocong1001
2008-10-17
@AroundInvoke所注释的方法是在@Init,@PostConstruct之后say方法之后调用的;
13:19:44,866 INFO [STDOUT] init 方法是最早调用的方法!
13:19:44,866 INFO [STDOUT] PostConstruct 方法是在init方法调用之后调用的方法!
13:19:44,866 INFO [STDOUT] say
13:19:44,866 INFO [STDOUT] say method is implemented!!!
13:28:18,763 INFO [STDOUT] PrePassivate 方法是专门对于stateful session bean 的方法,他将在钝化bean之前调用!
13:19:44,866 INFO [STDOUT] init 方法是最早调用的方法!
13:19:44,866 INFO [STDOUT] PostConstruct 方法是在init方法调用之后调用的方法!
13:19:44,866 INFO [STDOUT] say
13:19:44,866 INFO [STDOUT] say method is implemented!!!
13:28:18,763 INFO [STDOUT] PrePassivate 方法是专门对于stateful session bean 的方法,他将在钝化bean之前调用!