EJB开发过程(原创)

原创 2004年10月10日 21:47:00
EJB开发过程

一般一个完整的基于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子句也必须对立。

EJB开发过程

  • GOALSTAR
  • GOALSTAR
  • 2005年01月23日 23:17
  • 1318

EJB会话Bean的开发过程

无状态bean(stateless)使用实例池技术管理bean,在实例池里的bean会被多个用户共用有状态bean(stateful)使用激活(activation)管理bean,为每个用户创建一个b...
  • huanran_li
  • huanran_li
  • 2010年07月24日 19:26
  • 488

【原创】EJB开发基础——EJB规范

1、EJB 容器          Enterprise Bean 是在称作 EJB 容器的特殊环境中运行的软件组件。容器容纳和管理 Enterprise Bean 的方式与 Java Web 服务器...
  • Kipen
  • Kipen
  • 2006年11月21日 19:01
  • 1917

EJB 雨夜原创视频教程

本人基于网络原创此教学.这套教程我会陆续完善.同时增加其他的技术教程.本套教程是分别基于Eclipse和JBuilder开发的.配合了文本说明以及流程录像.文本内容包括:原理介绍,程序逐层的分析.录像...
  • rainnightone
  • rainnightone
  • 2006年01月28日 19:17
  • 1431

【原创】EJB体系...

各角色的分析1)EJB 组件开发者(Enterprise Bean Provider)          EJB组件开发者负责开发执行商业逻辑规则的EJB组件,开发出的EJB 组件打包成ejb-jar...
  • Kipen
  • Kipen
  • 2006年11月18日 16:40
  • 629

[原创]EJB学习

EJB学习 EJB四个关键字:  Local:     该方法可以被同处于EJB容器内其他应用访问到,EJB容器之外不能访问。 Local 接口允许bean之间直接通过内存交互,没有分布式...
  • lihui6636
  • lihui6636
  • 2014年05月28日 08:42
  • 291

【伪原创工具】最好的伪原创工具

【伪原创工具】最好的伪原创工具,原创,这个对个人站长来说,几乎不可能,因为没有那么多时间和精力去搞,一般是大站招聘编辑来做这个工作。 靠采集更新网站,早年在火车头采集出现之前还有用,因为在火车头出来...
  • i_like_cpp
  • i_like_cpp
  • 2011年10月10日 18:54
  • 5626

EJB的优势和使用场景

EJB的优势和使用场景 即使在EJB 2.0备受诟病的时期,笔者也从不掩饰自己对EJB的喜爱,因为它确实体现了一种非常优秀的设计思想和理念。即使在EJB饱受争议的时期,笔者也一直希望大家用更理智的眼...
  • li_xiao_ming
  • li_xiao_ming
  • 2016年10月12日 08:32
  • 8974

【EJB基础】开发一个简单的EJB应用程序

为了能开发一个简单的EJB应用程序,配置Jboss就快配置了一星期,都快哭了。终于成功了。接下来总结一下开发EJB应用程序的步骤。 第一步,在myEclipse中配置JBoss。 我刚开始下了个J...
  • u010539352
  • u010539352
  • 2016年03月11日 20:15
  • 1969

javabean与EJB的使用方法

javabean访问EJB的方法: 1.定位本地接口:为定位特定的本地对象,客户需要使用JNDI ①Context ic = new InitialContext(); InitialConte...
  • zlb824
  • zlb824
  • 2011年12月09日 16:33
  • 1025
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:EJB开发过程(原创)
举报原因:
原因补充:

(最多只允许输入30个字)