天天看点

EJB详解前言What EJBWhy EJBHow EJB总结

前言

从最开始学习javaEE的时候,Ejb的传说就开始漫天飞,而且特别懵根本不知道Ejb是容器还是组件!为什么他就是核心了呢?为什么他就可以分布在不同的服务器上呢?还可以远程调用,还有就是什么是javabean啊,简直就是一肚子问题?憋了好几天一直都不懂!还好现在有一点的了解分享给大家

What EJB

Ejb是sun公司javaEE服务器端组件模型,设计的目标和核心是为了应用部署分布式应用程序,简单说就是把编写好的程序放到服务器上去执行,所以java具有跨平台的优势,而且他的分布式系统不限于定义的平台,他的全称是enterprise java bean,bean的意思为豆子,用户存放东西,也可以传输

Why EJB

Ejb是java的一种规范,而且他可以用于分部署,和跨平台的开发,而且对于设计到很多资源和很多事物,用户量很多,安全性,这些问题Ejb容器都会帮助我们解决,而我们只需要开发我们企业bean就可以,也就是说只需要自己写业务逻辑代码就可以,其他的事情都不需要关心,例如安全,和事物,多线程,这些都不用我们管,我们只负责我们javabean中的方法,而容器会把这些事情都帮助我们干了,当我们发送到Ejb的时候,EJb容器会首先进行处理,他会选择让我们去找那个方法,然后为我们提供服务,事物,安全措施,这样就可以让程序员从负责的关系中脱身,可以专心的开发自己的业务

Ejb不好的一面

由于EJB帮助我们干了很多活,但是有的应用是不没有这些复杂性的,所以也用不上EJB进行解决,举个简单的例子,如果Ejb是大货车,而web服务是小轿车,如果你现在想跟着你对象去郊外浪漫,Ejb和web服务都可以载你们,别告诉你还使用EJb大货车载着你对象去浪漫

3.ejb的性能问题:ejb的调用涉及太多类的序列化和反序列化,本来通过网络传输已经很慢了,还要传递对象,数据量又更大了,还要涉及了对象的序列化和反序列化,这中间有太多的开销了。

How EJB

首先说一下企业bean是实现企业javaBean技术的javaEE组件,并且它运行在Ejb容器中,塔里面封装了应用业务逻辑的服务器端组件,就是我们的用于实现功能的类。

既然说到了企业bean那么我们来说说企业bean的类型吧

EJB详解前言What EJBWhy EJBHow EJB总结

java企业bean分为消息bean和会话bean,实体bean

1.会话bean:SessionBean 他负责的是业务逻辑,分为有状态和无状态,每当客户端请求的时候,容器会选择一个SessionBean来为客户端服务,Session Bean可以直接访问数据库,

2. Entity bean(实体bean)用于实现(O/R映射)负责将数据库表的记录映射到entity对象,Entity bean对象会随着数据库的改变而去改变

3. MessageDriven Bean是Ejb引入的新bean,它是基于Jms的,当客户端发送一个Jms消息时,MDB就会进行处理,MDB实际上是一个异步的无状态SessionBean ,当客户端调用MDB(消息bean)的时候客户无需等待,会立刻的返回,MDB就是用于异步处理客户的请求,

在最开始的时候我们一直都在Ejb是可以远程调用实现分布式的开发,那么它是如何实现分布式开发的呢?

实现分布式

RMI技术(远程调用),Ejb的基础是RMI,通过Rmi javaEE将EJB组件为远程对象,EJB虽然用到了RMi把Ejb打包发送到服务器上,客户端通过RMI技术到服务器上进行调用,这样就实现了分布式调用

服务器集群:就是通过RMI的通信,连接不同功能模块的服务器,以实现一个完整的功能。

实现技术

EJB是运行在服务器上的组件,客户端是通过网络对Ejb对象进行调用,在java中能够实现远程调用的也就是RMI,而EJB技术正是基础RMI的,所以通过RMI技术我们可以把EJB进行远程调用,

RMI技术

对象序列化:就是把对象转换为字节流形式,为什么要转换为字节流形式,因为我们要实现JavaIO接口,然后可以把字节流就行传输到另一个服务器中

假如你有一个A类的对象,当你要把他放到其他机器上的时候,我们需要将他变成字节流然后放到数组中,这个时候你就可以传输数组了

RPC技术,他的全称为Remote Method call,它是的意思为远程过程调用,这个技术出现要比ejb早,所以我们通过远程过程调用,我们可以实现一个机器调用另一台机器

RMI,全称为Remote Method Invocation 远程方法调用,它是利用了序列化和RPc技术实现的远程调用方法,这个时候过程中我们不需要进行序列化,直接调用就可以了,远程代用方法就是两台计算机相互调用对方函数,刚才说到EJB是具有RMi,所以我们在实现远程调用的时候,只需要使用它的接口就可以,而不需去具体的实现,非常方便

EJB中服务集群

在最开始的时候我解释过集群的问题,对于相同的不同的方法我们叫做集群,对于相同的方法我们叫做分布式,所以对应我们Ejb来说其实我们就是使用的是集群,根据服务器上不同的方法我们去调用,所以实现了集群的概念

a.EJB实现原理: 就是把原来放到客户端实现的代码放到服务器端,并依靠RMI进行通信。

b.RMI实现原理 :就是通过Java对象可序列化机制实现分布计算和RPC远程过程函数调用实现。

c.服务器集群: 就是通过RMI的通信,连接不同功能模块的服务器,以实现一个完整的功能。

总结

原理知识一大堆,但是梳理起来想想也就是一个意思,如何方便如何高效就怎么来,感觉还是得看实践是怎么样的!

继续阅读