一、什么是EJB。
EJB是sun的JavaEE服务器端组件模型,设计目标与核心应用是部署分布式应用程序。后面还有一堆下面再仔细分析。我相信在这么写下去,你就要关闭页签了。尼玛...什么意思?
好吧,也许你只是来看看EJB是不是适合你的应用场景。如果看到底才发现适合,浪费时间了。
二、应用场景
比较适合:规模大、扩展性高、伸缩性强、多形态客户端(C/S,或者C/S、B/S混合)的应用。不太适合:纯B/S结构的Web应用;请求、返回、调用能通过自定义协议解决的应用;超大访问并发量的应用。
三、继续什么是EJB。
接“后面还有一堆”。EJB定义。商务软件的核心部分是它的业务逻辑。 业务逻辑抽象了整个商务过程的流程,并使用计算机语言将他们实现。J2EE 对于这个问题的处理方法是将业务逻辑从客户端软件中 抽取出来, 封装在一个组件中。这个组件 运行在一个独立的服务器上,客户端软件 通过网络调用组件提供的服务以实现业务逻辑,而客户端软件的功能单纯到只负责发送调用请求和显示处理结果。在J2EE 中,这个运行在一个独立的服务器上,并封装了业务逻辑的组件就是EJB(Enterprise JavaBean)组件。
下面我们来逐句分析
业务逻辑:所谓业务逻辑,并没有什么高大上,就是你平时写的业务逻辑,完全可以翻译 成执行特定任务的"类"。
抽取、封装、在独立服务器上运行:把原来放到客户端的"类",拿出来不放到客户端了,放到一个组件中,并将这个组件放到一个服务器上去运行。
下面就没有什么好分析的了,把EJB翻译成大白话就是:
把你编写的软件中那些需要执行制定的任务的类,不放到客户端软件上了,而是给他打成包放到一个服务器上了,通过网络访问。
等等等等,听上面的意识,难道EJB 的概念中说的是C/S 软件?
是的,没错,你说的对。
很多人没有看到这一行,直接关闭了页签。
那么EJB和JSP一点关系都没有嘛?
EJB 和JSP 有什么关系?EJB 和JSP 有关系,但是关系还真不怎么大,至多是在JSP 的服务器端调用远端服务上的EJB 类,仅此而已。
以上只是简单解释了EJB是什么,想深入了解,请搜索更深入的文章。
原理?这不就是原理吗。大白话显得不高端么?
好吧,客户端是通过网络对EJB 对象进行调用的,在Java中,能够实现远程对象调用的技术是 RMI,也正是EJB技术的基础。
通过RMI 技术,J2EE将EJB 组件创建为远程对象,客户端就可以通过网络调用EJB 对象了。
四、关于RMI
方法调用从客户对象经占位程序(Stub)、远程引用层(Remote Reference Layer)和传输层(Transport Layer)向下,传递给主机,然后再次经传 输层,向上穿过远程调用层和骨干网(Skeleton),到达服务器对象。 占位程序扮演着远程服务器对象的代理的角色,使该对象可被客户激活。 远程引用层处理语义、管理单一或多重对象的通信,决定调用是应发往一个服务器还是多个。传输层管理实际的连接,并且追追踪可以接受方法调用的远程对象。服务器端的骨干网完成对服务器对象实际的方法调用,并获取返回值。返回值向下经远程引用层、服务器端的传输层传递回客户端,再向上经传输层和远程调用层返回。最后,占位程序获得返回值。这下明白了吧,没明白?至少高端了吧。
说明白一点:RMI使用Java语言接口定义了远程对象,它集合了Java 序列化和Java 远程方法协议( Java Remote Method Protocol)。
还是不明白?下面一点点来分析。
四点一
序列化概念:对象的序列化过程就是将对象状态转换成字节流和从字节流恢复对象。将对象状态转换成字节流之后,可以用java.io 包中的各种字节流类将其保存到文件中,或者通过网络连接将对象数据发送到另一个主机大白话就是: 你自定一个类MyClass,或者任何一个类的对象,将它转换成字节数组,那么你当然就可以随便处置了它了,用得最多的就是把他发送到网络上远程的计算机上了。
四点二
远程方法调用:本地计算机调用远程计算机上的一个函数或者说函数总结:利用对象序列化来实现远程调用。