EJB开发过程

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

一般一个完整的基于EJB的分布式计算结构由6个角色组成
1.EJB组件提供者(Enterprise JavaBean Provider)
 提供负责定义EJB的remote and home接口,编写执行商务逻辑的EJB CLASS,提供EJB的部署文体
 
2.应用程序组合者(Application Assembler)
  比如JSP,SERVLET 
  
3.部署者(Deployer)

4.EJB服务器提供者(EJB Server Provider)

5.EJB容器提供者

6.系统管理员(System Administrator)

定义和编写EnterPrise JavaBean类:这是Enterprise JavaBean内部应用逻辑的实现
编写Enterprise JavaBean的远程remote接口
编写Enterprise JavaBean的本地home接口
说明主键类(只是对于Entity Java Bean才需要的)。在Enterprise JavaBean的配置描述器中需要指定主键的名称。
一.
Enterprise JavaBean 提供了定义远程(Remote)接口和本地(home)接口,实现了Enterprise JavaBean类本身,
Remote接口定义了客户调用EnterPrise JavaBean实现的应用逻辑函数的接口。
Bean的实现里面必须至少有一个create()方法,-ejbcreate()但是可以带有多个不同参数的create()方法
在home接口中也必须有相同的方法定义(参数的个数相同),ejbcreate()方法返回一个容器管理的持久对象
都返回一个容器管理持久性的主键值。但是在home的相应create()方法中返回的类型是remote接口

  home->javax.ejb.EJBHome
remote->javax.rmi.remote

SessionBean必须实现javax.ejb.SessionBean

二.
defined remote class
每一个Enterprise JavaBean多必须有一个remote接口,remote接口定义了应用程序规定客户可以调用的逻辑操作。
这是一些由客户调用的公共方法,通常由JavaBean来实现。

Enteprise JavaBean的客户并不是直接访问Bean,而是通过remote接口来访问。

public interface EJBObject extends ajva.rmi.Remote
{
  //允许你获得一个相关的home接口。
  public EJBHome getEJBHome() throws java.rmi.RemoteException;
  //对于实体Bean,用getPrimaryKey();方法获得Bean的主键值
  public Object getPrimaryKey() throws java.rmi.RemoteException;
  //remove()可以删除一个Enterpise JavaBean
  public void Remove() throws java.rmi.RemoteException,java.rmi.RemoveException
  //返回一个Enterprise JavaBean实例的持久句柄
  public Handle getHandle() throws java.rmi.RemoteException;
  //允许你去比较Enterprise JavaBean是否相同
  boolean isIdentical(EJBObejct p) throws java.rmi.RemoteException;
}


remote 方法必须为public的,且抛出java.rim.remoteException 

三.定义home接口
 
 Enterprise JavaBean接口掌管着Bean的生命周期。提供了Enterprise JavaBean对象 (也是对Enterprise JavaBean的实例)
 的create(),fin(), remove()方法
 home接口必须定义一个或多个create()方法。每一个这样的方法都必须命名为create,他的参数,
 不管是类型还是数量都必须与Bean类里面的ejbcreate()方法对应。
 
 如果是实体Bean的home接口还包含了find()方法
 每一个home接口都扩展了javax.ejb.EJBhome接口,如下代码展示了javax.ejb.EJBHome接口的定义。
 
 public interface EJBHome extends java.ami.Remote()
 {
  //这个是通过一个句柄来删除Enterprise JavaBean 的实例
  void remove(Handle handle) throws java.rmi.RemoteException , RemoveException;
  //第二个是通过删除主键来删除一个Enterprise JavaBean的实例
  void remove(Object primaryker) throws java.rmi.RemoteException,RemoveException;   
  //返回了Enterprise JavaBeand对象的metadata接口,这个接口允许客户获得Enterprise JavaBean的metadata信息
  EJBMetaDate getEJBMetaData() throws RemoteException;
  //提供了获得javax.ejb.EJBHome接口,home类,remote接口,还有主键的方法。
  HOmehandle getHomeHandle() throws RemoteException;
 }
 
因为home接口包括了一个或多个的create()方法的定义。成为会话Bean的工厂,对每一个create()方法,EJB都定义了如下的命名规定
1 他的返回值是会话 Bean 的 remote 接口类型
2 方法的名字只能是create()
3 会话Bean类中的每一个ejbcreate()方法都必须有一个create()与之相对应,而且参数的类型和数量也必须一致
4 必须抛出java.rmi.remoteException 和 javax.rmi.createException异常
5 create()方法的参数是用来初始化新的会话Bean对象的 

以下是一个会话Bean对象的不同create()方法
public interface AddHome extends javax.ejb.EJBHome{

 add create() throws java.rmi.RemoteException,javax.ejb.CreateException;
 add create(Profile preferredProfile)
 Throws java.rmi.RemoteException , javax.ehrows java.rmi.RemoteException , RemoveException;
 EJBMetaData getEJBMetaData() throws RemoteException
 Homehandle getHomeHandle() throws RemoteException;
}

会话Bean的home接口
在前面我们说过,一个会话Bean只有一个客户,这就是说当一个客户创建一个会话,这个会话Bean就是为这个创建的客户而
存在的。
会话Bean的home接口的create()方法,EJB规范定义了一个或多个create()方法的定义
1 他的返回值是会话 Bean 的 remote 接口类型
2 方法的名字只能是create()
3 会话Bean类中的每一个ejbcreate()方法都必须有一个create()与之相对应,而且参数的类型和数量也必须一致
4 必须抛出java.rmi.remoteException 和 javax.rmi.createException异常
5 create()方法的参数是用来初始化新的会话Bean对象的 

============================================================================================================

会话Bean的home接口并没有定义finder方法来定位对象,因为有状态的会话Bean只能给创建他的客户使用,如果不是客户
自己创建的会话Bean 没有必要也不允许这样去定位一个会话Bean

=============================================================================================================

实体Bean的home接口
 实体Bean 跟会哈Beande home接口是一样的,只不过多了一个finder()方法,
 这样客户就能够定位和使用实体Bean的对象,finder的操作是必须的,因为实体Bean是长时间存在的,可以被
 多个客户使用,对于大多数的应用程序而言,实体Bean的实例是存在的,客户只需要找到一个用来使用就可以了
 

定义主键:
 一个Entity Bean的home接口必须提供一个默认的finder方法:finderByPrimaryKey,这个方法允许客户通过主键
 来定位Entity Bean方法只有一个唯一的参数:那就是“主键”, 方法的返回值类型是实体Beanz的remote接口类型
 主键的类型扩展了Java Object类型的任何Java类型,在配置描述器中,你必须告诉容器主键的类型
 
*==============================================================================================================
 
 根据定义,findByPrimaryKey()方法总是返回一个单个的Entity对象,而其他的finder()方法可以返回Entity对象的
 集合
 
*==============================================================================================================

下面是一个findByPrimary()方法
findByPrimary(key)
    throws  java.rmi.RemoteException.FinderException;
    
home接口里面还可以定义别的finder()方法,每一个finder()方法都必须在Enterprise JavaBean类里面有一个对应的实现。
每一个finder方法都必须符合如下约定

1 返回类型是remote接口类型
2 必须以前缀是find开头,在实体Bean类里面以前缀ejbFind开头
3 必须抛出java.rmi.remoteException  and javax.ejb.FinderException
4 在home接口中的throws 子句与实体Bean类的ejbcreate()方法的throws子句也必须对立。



活在理想中,心在自由飞

 

<script type=text/javascript> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type=text/javascript> </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值