javabean:Enterprise bean的开发

   现在从如下几个方面来介绍Enterprise bean开发:

  、开发EJB主要关键步骤

   2、如何使用使用Jbuilder

   3、使用Jbuilder的外其它开发工具

   4、如何开发Eneterprise Beans详细细节

  、开发EJB主要步骤:

  般来说整个开发步骤(开发配置组装)包括如下几个方面:

  开发:首先要定义 3个类:Bean类本身Bean本地(Home)和远程(Remote)接口类

  配置:配置包括产生配置描述器--这是个XML文件、声明了Enterprise Bean属性、绑定了bean文件(包括stub文件和skeleton文件)最后将这些配置都放到个jar文件中还需要在配置器中定义环境属性

  组装应用:包括将Enterprise beans安装到Server服务器中测试各层连接情况组装器将若干个Enterprise Beans和其它组件(Servlet,Applet,Script等等)结合起来组合成个完整应用或者将若干个Enterprise beans组合成个复杂Enterprise Bean

  管理Enterprise Bean

   2、使用Jbuilder:

  Jbuilder和EJB Container能够进行无缝连接Jbuilder和Inprise应用服务器包括了所有开发和配置Enterprise Beans工具以及所需要库:

  运行和管理Enterprise Bean容器

  命名服务

  事务服务

  Java数据库

  开发Enterprise Beans所需要API

  个增强java-to-iiop编译器支持值类型和RMI信号

  Jbuilder还提供了个快速开发应用Enterprise Beans工具和向导通过简单而且直观步骤向导帮助你建立个Enterprise Bean自己设定某些缺省值产生了bean模板在上面我们可以增加我们自己应用逻辑

  Jbuilder也提供了个EJB接口生成向导向导在Enterprise Bean公共思路方法基础上生成了Remote接口和Home接口Jbuilder还提供个配置器向导帮助我们逐步建立XML描述器文件并将生成Stubs集中到个jar文件中

   3、使用Jbuilder的外集成环境:

  如果你使用其它除了别集成环境(IDE)要确定使用了集成环境IDE所带容器工具也要验证IDE是否支持EJB规范标准相应版本还要确定它是否正确支持EJBAPI

  要确定JD到所支持EJB容器版本可以通过检查Inprise安装介绍说明来确定EJB容器所支持支持JDK版本

  在配置Enterprise Bean时候你必须使用Inprise应用服务器所提供工具这些工具能够编辑和修改第 3方代理商提供Inprise配置描述器还能够验证配置描述器能够验证bean源代码

   4、Enterprise Beans开发:

  这节我们主要讨论Enterprise bean提供者要开发enterprise bean必须完成任务上面这些任务包括:

  定义和编写Enterprise bean类:这是Enterprise bean内部应用逻辑实现

  编写Enterprise bean远程remote接口类

  编写Enterprise bean本地home 接口类

  介绍说明主键类主键类只是对于Entity bean才需要在Enterprise bean配置描述器中指定主键名字

  Enterprise beans提供者定义了远程(Remote)接口和本地(home)接口实现了Enterprise bean类本身Remote接口中提供了客户Enterprise bean实现应用逻辑接口而home接口提供了产生和定位remote接口例子思路方法

  在Enterprise bean本身类实现本地home接口远程remote接口的间并没有正式联系(例如继承关系)但是在 3个类里面声明思路方法却必须遵守EJB里面定义规范标准例如: 你在Enterprise bean里面声明了个应用思路方法或者说应用逻辑也在beansremote接口中声明了这个思路方法那么这两个地方必须要同样名字Bean实现里面必须至少有个Create思路方法:ejbCreate但是可以有多个带有区别参数create思路方法在home接口中也必须有相同思路方法定义(参数个数相同)EjbCreate思路方法返回个容器管理持久对象它们都返回个容器管理持久性主键值但是在home相应Create思路方法中返回值类型是remote接口

  注意:实体bean实现ejbCreate()思路方法有点区别实体bean可以不定义ejbCreate思路方法如果实体只是通过应用或通过数据库管理途径被加到数据库中实体bean就省略了ejbCreate()思路方法ejbCreate()返回值是主键类型如果ejbCreate()思路方法是容器管理持久性实体bean思路方法返回值就是NULL类型如果实体bean实现了Bean管理持久性ejbCreate()思路方法就返回值类型就是主键类型在以后我们会详细讨论它们区别

  Entereprise Bean提供者定义了Enterprise bean语义容器任务是把home接口remote接口和Enterprise bean实现类结合起来保证在编译时和运行时remote接口和bean实现类是相对应

  Enterprise bean继承关系:

  Enterprise bean实现类remote接口home接口都要从区别基类中继承下来Home接口是从javax.ejb.EJBHome中继承过来Remote接口从javax.ejb.EJBObject中继承而来Remote和home接口基类都是javax.rmi.Remote

  个会话bean必须实现基类javax.ejb.SessionBean而实体bean必须实现基类javax.ejb.EntiyBean这些EJB基类都是从javax.ejb.EnterpriseBean继承而来而javax.ejb.EnterpriseBean又是从java.io.Serializable继承而来

  Remote 接口:

  每个Enterprise Bean都必须有个remote接口Remote接口定义了应用规定客户可以逻辑操作这些是些可以由客户公共思路方法通常由Enterprise beans类来实现注意Enterprise bean客户并不直接访问Bean而是通过remote接口来访问

  EJBObject基类:

  Enterprise bean类remote接口扩展了javax.ejb.EJBObject类公共java接口而Javax.ejb.EJBObject是所有remote接口基类其代码如下:

   package javax.ejb;
    public erface EJBObject extends java.rmi.Remote{
     public EJBHome getEJBHome throws java.rmi.RemoteException;
     public Object getPrimaryKey throws java.rmi.RemoteException;
     public void Remove throws java.rmi.RemtoeException, java.rmi.RemoveException
     public Handle getHandle throws java.rmi.RemoteException;
     boolean isIdentical (EJBObject p0) throws java.rmi.RemoteException;
    }
   getEJBHome思路方法允许你取得个相关Home接口对于 实体Bean用getPrimaryKey()思路方法获得实体Bean主键值Remove()可以删除个Enterprise bean具体语义在各种区别类型enterprise beans生命周期中由上下文中解释思路方法getHandle()返回了个Enterprise bean例子持久句柄IsIndentical思路方法允许你去比较Enterprise beans是否相同

  思路方法要求:

  所有remote接口中思路方法必须声明为公共(public)并必须抛出java.rmi.RemotException异常另外所有remote接口中思路方法定义参数和都必须是在RMI-IIOP中有效对每个在remote接口中定义思路方法在Enterprise bean 类里面都要有相应思路方法相应思路方法必须要有同样名字同样类型和数量参数同样返回值而且还要抛出同样例外

  如下代码显示了个ATM例子会话beanremote接口Atm里面声明了个应用思路方法transfer()黑体部分表示EJB规范标准中必须要有内容Remote接口必须扩展javax.ejb.EJBObject类从客户端Enterprise bean个思路方法都必须在remote接口中声明Transfer()思路方法抛出了两个意外其中InSufficientFundsException例外是应用定义意外

  Public erface Atm extends javax.ejb.EJBObject{
    Public void transfer(String Source, String Target, float amount)
    Throws java.rmi.RemoteException, InSufficientFundsException;
   }
   对于remote接口定义规则会话bean和实体bean是

  Home接口:

  Enterprise beanHome接口控制着bean生命周期提供了Enterprise bean对象(也就是对Enterprise bean例子)Create()find()remove()操作会话bean和实体bean有区别生命周期所以它们home接口必须定义区别思路方法

  Enterprise bean提供者必须定义home接口而由EJB容器来实现home接口

  和Remote接口相似Home接口中思路方法中参数返回值也必须是RMI-IIOP有效所有思路方法必须抛出java.rmi.RemoteException例外

  Home接口必须定义个或多个Create思路方法个这样Create思路方法都必须命名为Create并且参数不管是类型还是数量都必须和bean类里面ejbCreate思路方法对应注意home接口中Create思路方法和bean类中ejbCreate思路方法返回值类型是区别

  实体beanhome接口还包含find()思路方法

  EJBHome基类:

  每个Home接口都扩展了javax.ejb.EJBHome接口如下代码显示了javax.ejb.EJBHome接口定义:

  package javax.ejb;
   public erface EJBHome extends java.rmi.Remote {
    void remove(Handle handle) throws java.rmi.RemoteException,RemoveException;
    void remove(Object primarykey) throws java.rmi.RemoteException,RemoveException;
    EJBMetaData getEJBMetaData throws RemoteException;
    Homehandle getHomeHandle throws RemoteException;
   }
   这里提供了两个remove()思路方法来删除Enterprise bean例子个remove思路方法是通过句柄来删除个Enterprise bean例子第 2个remove思路方法通过主键来删除个Enterprise bean例子

  在众多Enterprise bean例子中句柄唯标识个例子个句柄和它引用Enterprise bean有相同生命期考虑个实体对象客户可以通过个句柄来重新获得相应Enterprise bean例子个句柄能够对应个Enterprise bean对象多个例子例如即使当Enterprise bean对象所在主机崩溃了或者Enterprise bean对象在区别机器的间移动句柄仍是有效这里句柄是Serialized句柄和CORBA中串化CORBA对象引用是相似概念

  在EJBHome接口中第 2个remove操作通过其主键来决定要删除Enterprise bean主键可以是扩展了Java Object类任何类型但是必须要实现JavaSerializable接口主键是标识实体bean主要思路方法通常主键是数据库中个关键字定义了由实体bean代表数据

  思路方法getEJBMetaData()返回了Enterprise bean对象metadata接口这个接口允许客户获得Enterprise beanmetadata信息当开发工具来编译链接应用时候或者配置工具来配置时候可能会用到metadata信息Javax.ejb.EJBMetadata接口提供了获得javax.ejb.EJBHome接口home类remote接口还有获得主键思路方法也提供了个isSesson思路方法来确定在放这个home接口对象是会话bean还是实体beanIsStatelessSession思路方法指示这个会话bean是有状态还是无状态如下代码显示了javax.ejb.EJBMetadata接口定义部分代码

  Public javax.ejb;
   Public erface EJBMetaData{
    EJBHome getEJBHome;
    Class getHomeInterfaceClass;
    Class getRemoteInterfaceClasss;
    Class getPrimaryKeyClass;
    Boolean isSession;
    Boolean isStatelesssSession;
   }
   会话beanhome接口:

  在前面我们说过个会话bean只有个客户这就是说个客户创建个会话bean时候这个会话bean例子只是为了这个创建它客户而存在(这里我们指是有状态会话bean无状态会话bean并不保持会话状态所以可以多个客户)

  home 接口包括了个或多个Create思路方法定义成为会话bean工厂对每个Create()思路方法EJB规范标准定义了如下命名约定:

  它返回值是会话beanremote接口类型

  思路方法名字只能是Create

  对会话bean类中个ejbCreate思路方法都必须有个Create和的对应

  对于每个Create思路方法参数类型和数量都必须和会话bean类中ejbCreate思路方法相对应

  思路方法必须抛出java.rmi.RemoteException例外

  思路方法必须抛出javax.rmi.CreateExeption例外

  Create()思路方法参数是用来化新会话bean对象

  如下代码显示了个会话bean对象区别Create思路方法其中必须部分用粗体显示:

public erface AtmHome extends javax.ejb.EJBHome{
Atm create throws java.rmi.RemoteException,javax.ejb.CreateException;
Atm create(Profile preferredProfile)
Throws java.rmi.RemoteExeption,javax.ehrows java.rmi.RemoteException,RemoveException;
EJBMetaData getEJBMetaData throws RemoteException;
Homehandle getHomeHandle throws RemoteException;
}
   这里提供了两个remove()思路方法来删除Enterprise bean例子个remove思路方法是通过句柄来删除个Enterprise bean例子第 2个remove思路方法通过主键来删除个Enterprise bean例子

  在众多Enterprise bean例子中句柄唯标识个例子个句柄和它引用Enterprise bean有相同生命期考虑个实体对象客户可以通过个句柄来重新获得相应Enterprise bean例子个句柄能够对应个Enterprise bean对象多个例子例如即使当Enterprise bean对象所在主机崩溃了或者Enterprise bean对象在区别机器的间移动句柄仍是有效这里句柄是Serialized句柄和CORBA中串化CORBA对象引用是相似概念

  在EJBHome接口中第 2个remove操作通过其主键来决定要删除Enterprise bean主键可以是扩展了Java Object类任何类型但是必须要实现JavaSerializable接口主键是标识实体bean主要思路方法通常主键是数据库中个关键字定义了由实体bean代表数据

  思路方法getEJBMetaData()返回了Enterprise bean对象metadata接口这个接口允许客户获得Enterprise beanmetadata信息当开发工具来编译链接应用时候或者配置工具来配置时候可能会用到metadata信息Javax.ejb.EJBMetadata接口提供了获得javax.ejb.EJBHome接口home类remote接口还有获得主键思路方法也提供了个isSesson思路方法来确定在放这个home接口对象是会话bean还是实体beanIsStatelessSession思路方法指示这个会话bean是有状态还是无状态如下代码显示了javax.ejb.EJBMetadata接口定义部分代码

  Public javax.ejb;
   Public erface EJBMetaData{
    EJBHome getEJBHome;
    Class getHomeInterfaceClass;
    Class getRemoteInterfaceClasss;
    Class getPrimaryKeyClass;
    Boolean isSession;
    Boolean isStatelesssSession;
   }
   会话beanhome接口:

  在前面我们说过个会话bean只有个客户这就是说个客户创建个会话bean时候这个会话bean例子只是为了这个创建它客户而存在(这里我们指是有状态会话bean无状态会话bean并不保持会话状态所以可以多个客户)

  home 接口包括了个或多个Create思路方法定义成为会话bean工厂对每个Create()思路方法EJB规范标准定义了如下命名约定:

  它返回值是会话beanremote接口类型

  思路方法名字只能是Create

  对会话bean类中个ejbCreate思路方法都必须有个Create和的对应

  对于每个Create思路方法参数类型和数量都必须和会话bean类中ejbCreate思路方法相对应

  思路方法必须抛出java.rmi.RemoteException例外

  思路方法必须抛出javax.rmi.CreateExeption例外

  Create()思路方法参数是用来化新会话bean对象

  如下代码显示了个会话bean对象区别Create思路方法其中必须部分用粗体显示:

   public erface AtmHome extends javax.ejb.EJBHome{
     Atm create throws java.rmi.RemoteException,javax.ejb.CreateException;
     Atm create(Profile preferredProfile)
     Throws java.rmi.RemoteExeption,javax.ehrows java.rmi.RemoteException,RemoveException;
     EJBMetaData getEJBMetaData throws RemoteException;
     Homehandle getHomeHandle throws RemoteException;
    }
   这里提供了两个remove()思路方法来删除Enterprise bean例子个remove思路方法是通过句柄来删除个Enterprise bean例子第 2个remove思路方法通过主键来删除个Enterprise bean例子

  在众多Enterprise bean例子中句柄唯标识个例子个句柄和它引用Enterprise bean有相同生命期考虑个实体对象客户可以通过个句柄来重新获得相应Enterprise bean例子个句柄能够对应个Enterprise bean对象多个例子例如即使当Enterprise bean对象所在主机崩溃了或者Enterprise bean对象在区别机器的间移动句柄仍是有效这里句柄是Serialized句柄和CORBA中串化CORBA对象引用是相似概念

  在EJBHome接口中第 2个remove操作通过其主键来决定要删除Enterprise bean主键可以是扩展了Java Object类任何类型但是必须要实现JavaSerializable接口主键是标识实体bean主要思路方法通常主键是数据库中个关键字定义了由实体bean代表数据

  思路方法getEJBMetaData()返回了Enterprise bean对象metadata接口这个接口允许客户获得Enterprise beanmetadata信息当开发工具来编译链接应用时候或者配置工具来配置时候可能会用到metadata信息Javax.ejb.EJBMetadata接口提供了获得javax.ejb.EJBHome接口home类remote接口还有获得主键思路方法也提供了个isSesson思路方法来确定在放这个home接口对象是会话bean还是实体beanIsStatelessSession思路方法指示这个会话bean是有状态还是无状态如下代码显示了javax.ejb.EJBMetadata接口定义部分代码

  Public javax.ejb;
   Public erface EJBMetaData{
    EJBHome getEJBHome;
    Class getHomeInterfaceClass;
    Class getRemoteInterfaceClasss;
    Class getPrimaryKeyClass;
    Boolean isSession;
    Boolean isStatelesssSession;
   }
   会话beanhome接口:

Tags:  coffeebean mrbean beanpole javabean

延伸阅读

最新评论

发表评论