ejbentitybean:对EJB中Session Bean的见解

  .Enterprise Beans

  在EJB(Enterprise Java Beans)中定义了两种区别类别Enterprise Bean :

  *会话 Bean (Session Bean)

  *实体Bean (Entity Bean)

  1. 会话 Bean (Session Bean)

  会话 Bean 是客户端代码要完成工作当客户端和服务器建立联系那么个会话 Bean 就建立起来了根据会话 Bean 状态区别有分为:

  A. 状态会话 Bean (Stateful Session Bean)

  B. 无状态会话 Bean (Stateless Session Bean)

  1.1 状态会话 Bean (Stateful Session Bean)

  当客户机和服务器建立连接的后状态会话 Bean (Stateful Session Bean) 将直在客户机和服务器的间保持着用户某个状态例如:用户使用银行ATM时经过验证的后用户可以连续执行多次操作在这个过程当中用户合法状态将直被保留直到她将信用卡取出结束这次操作这时状态会话 Bean (Stateful Session Bean) 也就被销毁

  1.2无状态会话 Bean (Stateless Session Bean)

  当客户机和服务器建立连接的后无状态会话 Bean (Stateless Session Bean)处理单用户请求或商务过程无状态会话 Bean (Stateless Session Bean)不需要从以前请求中提取任何状态例如用户用户密码确认用户输入密码后发送请求组件返回真或假来确认用户旦过程完成无状态会话 Bean (Stateless Session Bean) 也宣告结束

  2. 实体Bean (Entity Bean)

  实体Bean (Entity Bean)只是数据模型它不包括商务逻辑实体Bean (Entity Bean)可以将关系/对象数据库数据映射到内存中供其它组件使用实体Bean (Entity Bean)是直存在而且具有很高容错性能实体Bean (Entity Bean)能供允许多用户同时访问

   2. 会话 Bean (Session Bean)

  Ejb执行过程是被放在个EJB容器中进行所以客户端不会直接我们写好Enterprise Bean 而是EJB容器生成个EJBObject (EJB对象)来实现那么我们在编写服务器端Enterprise Bean 时就要考虑这点既然客户端不能直接访问就由EJBObject来代劳所以在编写服务器端时就要编写服务器端个接口(Remote)用来和客户机联系实力化EJBObject要生成EJBObject 就要调有Home 接口来建立这个实力

  以下是会话 Bean 代码分析:

  A.Enterprise Bean 类:sailorsy.

  1.SessionContext(SessionContext ctx)思路方法

  它是EJB容器和Enterprise Bean互相作用关口

import java.rmi.*;
import javax.ejb.*;
public sailorsy implements SessionBean{
private SessionContext ctx=null;
public voic SessionContext(SessionContext ctx){
this.ctx=ctx;
}//SessionContext
}// sailorsy
2.ejbCreate(…)思路方法

  它可以化Enterprise Bean ,可以定义区别ejbCreate(…)思路方法每个思路方法所带参数区别但是必许要存在至少

import java.rmi.*;
import javax.ejb.*;
public sailorsy implements SessionBean{
private SessionContext ctx=null;
public voic SessionContext(SessionContext ctx){
this.ctx=ctx;
}//SessionContext
public void ejbCreate {
}//ejbCreate
}// sailorsy
3.ejbPassivate思路方法

  如果Enterprise Bean 过多EJB容器将其中些挂起(passivate),释放他们所占用空间

import java.rmi.*;
import javax.ejb.*;
public sailorsy implements SessionBean{
private SessionContext ctx=null;
public voic SessionContext(SessionContext ctx){
this.ctx=ctx;
}//SessionContext
public void ejbCreate {
}//ejbCreate
public void ejbPassivate {
}//ejbPassivate
}// sailorsy
4.ejbActivate思路方法

  和ejbPassivate正好相反它将被挂起Bean从新调回

import java.rmi.*;
import javax.ejb.*;
public sailorsy implements SessionBean{
private SessionContext ctx=null;
public voic SessionContext(SessionContext ctx){
this.ctx=ctx;
}//SessionContext
public void ejbCreate {
}//ejbCreate
public void ejbPassivate {
}//ejbPassivate
public void ejbActivate {
}//ejbActivate
}// sailorsy


  5.ejbRemove思路方法

  它可以清除EJB容器中Bean

import java.rmi.*;
import javax.ejb.*;
public sailorsy implements SessionBean{
private SessionContext ctx=null;
public voic SessionContext(SessionContext ctx){
this.ctx=ctx;
}//SessionContext
public void ejbCreate {
}//ejbCreate
public void ejbPassivate {
}//ejbPassivate
public void ejbActivate {
}//ejbActivate
public void ejbRemove {
}//ejbRemove
public String showname{
"Hello,my name is sailorsy";
}//自己商务思路方法
}// sailorsy


  以上这些是EJB必需回调思路方法我们可以在里面加入自己思路方法加入自己商务逻辑

B.Home 接口: sailorsyHome
import java.rmi.*;
import javax.ejb.*;
public erface sailorsyHome extends EJBHome {
public sailorsyRemote create throws RemoteException, CreateException;
}
C. Remote接口:sailorsyRemote
import java.rmi.*;
import javax.ejb.*;
public erface sailorsyRemote extends EJBObject {
public java.lang.String showname throws RemoteException;
}


   3.会话 Bean:sailorsyTestClient1

import javax.naming.*;
import javax.ejb.*;
import javax.rmi.PortableRemoteObject;
import java.rmi.*;
public sailorsyTestClient1 {
private sailorsyHome sailorsyHomeObject = null;
//Construct the EJB test client
public sailorsyTestClient1 {
try {
//


  以下是客户端使用JNDI定位Home对象

Context ctx = InitialContext;
//look up jndi name
Object ref = ctx.lookup("sailorsy");
//cast to Home erface
sailorsyHomeObject = (sailorsyHome) PortableRemoteObject.narrow(ref, sailorsyHome.);
}
catch(Exception e) {
e.prStackTrace;
}
}
//----------------------------------------------------------------------------
// Utility Methods
//----------------------------------------------------------------------------
public sailorsyHome getHome {
sailorsyHomeObject;
}
//Main method
public void (String args) throws Exception{
sailorsyTestClient1 client = sailorsyTestClient1;
sailorsyRemote sr=client.getHome .create ;
String s=sr.showname ;
.out.pr(s);
// Use the getHome method of the client object to call Home erface
// methods that will a Remote erface reference. Then
// use that Remote erface reference to access the EJB.
}
}
以上EJB在win2000+jbuilder5/jbuilder6+BAS4.5经过测试

Tags:  sessionbean ejb3entitybean ejbentitybean

延伸阅读

最新评论

发表评论