wayne

EJB3 (7)

有状态会话bean的开发,首先创建远程接口:

@Remote
public interface HelloRemote {

    String sayHi();

    
void init(String name);
    
    
void remove();
    
}

接着开发有状态会话bean:
@Stateful
public class HelloBean implements HelloRemote {
    
private String name;
    
private Logger log = Logger.getLogger(this.getClass().getName());
    
    
public String sayHi() {
        
return "Hi " + name;
    }


    
public void init(String name) {
        
this.name = name;
    }

    
    @PostConstruct
    
public void postConstrut(){
        log.info(
"create " + this);
    }

    
    @PreDestroy
    
public void preDestory(){
        log.info(
"destory " + this);
    }

    
    @PostActivate
    
public void postActivate(){
        log.info(
"activate " + this);
    }

    
    @PrePassivate
    
public void prePassivate(){
        log.info(
"passivate " + this);
    }

    
    @Remove
    
public void remove(){
        log.info(
"remove " + this);
    }

}

@Stateful注释表明这是一个有状态会话bean,其他的注释是管理会话bean的生命周期。@PostConstruct注释表明方法将会在bean实例化并完成依赖注入后由容器调用此方法;@PreDestory注释表示方法会在容器删除bean实例前由容器调用;以上两个注释所有的EJB(包括MDB)都可以用。@PostActivate注释表示容器在激活bean后调用此方法;@PrePassivate注释表示容器在钝化bean前调用此方法;以上两个注释是有状态会话bean所特有。@Remove注释也是有状态会话bean所特有,也是用户唯一可以能控制的生命周期方法,一旦用户在客户端调用此方法,容器将删除bean实例。接着看客户端的测试代码:
<%
           InitialContext ctx 
= new InitialContext();
           HelloRemote helloBean 
= (HelloRemote)ctx.lookup(HelloRemote.class.getName());
           helloBean.init(
"Tom");
           out.println(helloBean.sayHi());
           helloBean.remove();
%>

很简单,只是多调用了一个remove方法。

posted on 2008-09-13 11:14 waynemao 阅读(174) 评论(0)  编辑  收藏 所属分类: Java ee


只有注册用户登录后才能发表评论。


网站导航:
 

My Links

Blog Stats

常用链接

留言簿(1)

随笔分类

随笔档案

default

搜索

最新评论

阅读排行榜

评论排行榜