javax.ejb.SessionBean

简介: import javax.ejb.SessionBean;import javax.ejb.SessionContext;import javax.ejb.CreateException; //有状态会话bean//多个客户端调用服务器的ejb时,实际上,服务器端只生成一个ejb对 象为其服...

 

import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.ejb.CreateException;

//有状态会话bean
//多个客户端调用服务器的ejb时,实际上,服务器端只生成一个ejb对 象为其服务,
//顺序是:构造函数-》setSessionContext-》ejbCreate(),目的是节省内存
//客户端可以命令服务端ejb消亡, 

 remote.remove();

 

//在有状态Bean下,可以消亡其ejb
//客户端在调用create()方法时就生成ejb对象,没有延迟加载
//特点:你可以用成员变量来定义一些状态信息,你可以用额外的ejbCreate()来初始化这些状态信息
//状态会话Bean其实也可以定义成员变量,但是这些成员变量必须是所有客户共享的如数据库连接,有状态会话Bean可以定义自己的变量
//缺点:消耗资源
//解决办法:服务器:1钝化机制,长期不用的EJB对象,被暂时保存在缓存中,腾出内存,自动调用ejbPassivate(),如果长期不用,服务器自动调用remove()
//2:客户端在使用时要将对应的ejb对象消亡,一般情况下是将远程接口保存在session中,在退出系统时,调用其remove()方法
//尽量不使用有状态的会话Bean,因为可以用Web中有session一来保存状态
public class RnbEjbBean implements SessionBean {

 

    SessionContext sessionContext;

 

    public RnbEjbBean() { //ejb创建时,自动调用
        System.out.println("RnbEjbBean");
    }

 

    public void ejbCreate() throws CreateException { //ejb创建时,自动调用
        System.out.println("ejbCreate");
    }

 

    public void setSessionContext(SessionContext sessionContext) { //ejb创建时,自动调用,初始化的工作可以写在这儿
        this.sessionContext = sessionContext;
        System.out.println("setSessionContext");
    }

 

    public void ejbRemove() { //从接口重写,当ejb消亡时调用,释放资源的代码可以写在这儿
        System.out.println("ejbRemove");
    }

 

    public void ejbActivate() {//从接口重写,在无状态会话 bean中无用,钝化状态到活动状态时调用,
        System.out.println("RnbEjbBean");
    }

 

    public void ejbPassivate() { //从接口重写,会话 bean中用,钝化时用
        System.out.println("ejbPassivate");
    }

 


    public double getRmb(double usd) { //业务逻辑的实现,不能曝露给客户端,和远程接口中的getRmb方法对应
        System.out.println("getRmb");
    }

 

http://blog.sina.com.cn/s/blog_48cbe4d90100bdhl.html

 

相关文章
|
3月前
spring3 springfox报错Type javax.servlet.http.HttpServletRequest not present
spring3 springfox报错Type javax.servlet.http.HttpServletRequest not present
57 0
|
Java 关系型数据库 MySQL
Eclipse中出现javax.servlet.ServletException: javax.servlet.jsp.JspTagException: ...500问题
Eclipse中出现javax.servlet.ServletException: javax.servlet.jsp.JspTagException: ...500问题
523 0
Eclipse中出现javax.servlet.ServletException: javax.servlet.jsp.JspTagException: ...500问题
|
11月前
|
Java 应用服务中间件
java: 程序包javax.servlet不存在、 java: 程序包javax.servlet.http不存在 java: 程序包javax.servlet.annotation不存在
java: 程序包javax.servlet不存在、 java: 程序包javax.servlet.http不存在 java: 程序包javax.servlet.annotation不存在
621 0
|
Java 应用服务中间件 Android开发
javax.servlet包报错和javax.servlet.jsp.JspException
以前用myeclipse 最近用eclipse myeclipse项目正常 eclipse不正常
511 0
|
Java
配置jndi服务,javax.naming.NamingException的四种情况
1.当jndi服务没有启动,或者jndi服务的属性没有设置正确,抛出如下异常: javax.naming.CommunicationException: Can't find SerialContextProvider.
2657 0
|
API 应用服务中间件
Jersey 2.x Glassfish 中基于 Servlet 的应用
如果你使用的是 Glassfish 作为你应用服务器,你不需要在你的引用中包含引用任何东西,所有你需要的都已经包含进去了。 你只需要定义 JAX-RS API 以便于你能够对你的应用进行编辑,使用 (provided)依赖。
5574 0
|
应用服务中间件 API 容器
|
XML 关系型数据库 Java
|
Java 数据库连接 应用服务中间件