javabean和ejb之间的区别

来源:百度知道 编辑:UC知道 时间:2024/05/15 16:49:02
首先,我要说的是,请回答者看清楚我的问题再做有针对性的回答,还有一堆复制却没有任何主见总结那些的答案,也请慎重写上.

我开发的是J2EE的轻量级开发,所谓轻量级我理解的就是,利用开源项目的框架去将MVC详细的分层,和业务上的逻辑处理,并且回避EJB的使用.J2EE的标准版中EJB应该属于核心内容,但是轻量级的开发已经回避了此问题.不知理解对否..

那么,ejb其实也叫enterprice java bean,企业级的javabean..此企业级javabean和普通javabean有何区别呢?搜索来的资料说,企业级的javabean是运行在WEB容器中(weblogic肯定是支持ejb,我一般开发时候用的是tomcat,是不是tomcat本身就不支持ejb连接池等技术?这个回答下),ejb将会在WEB容器中进行逻辑方面的业务处理,而javabean是运行在客户端属于用户可以看见的对象.这种描述是否准确?不过还是对此概念有些混淆.到底javabean中,java为一词,那bean到底又该如何准确理解呢?一种WEB系统中可操作的事物(对象)?
例子为网络购物,虚拟购物车属于javabean,而定单处理属于ejb. 这里,虽然购物车的属性是用户可以看见的,但是实际上更新购物车的属性,比如有什么商品在其中,目前总价格统计,还是要放到服务器那处理的吧...EJB的标准开发我是学过的,但是根本没去听,而我现在做的都是轻量级开发(而且数据对象都是持久化的,好象还没做过临时对象那样的代码),如果是轻量级开发,struts或spring等,那么我可能就直接将购物车写成一个JAVA对象,放在一个beans的包内,然后在action层中将购物车的bean信息给直接更新掉再发送回去.那么按此做法,实际上此javabean的处理依然还是在服务器上进行运算再过来的啊,用户不过是看的到此对象的一些显性结果而已.当然,我推想效率更高的方法,或许是直接利用JS,将要改变的对象从服务器查询过来返回,再通过JS方法进行此对象的改变??那么,在实际开发中,分别在EJB和STRUTS开发中,都是如何来实现购物车这样虚拟临时对象的呢?(简单的把使用技术和思想方法说出来就OK了)其实是我很难理解,javabean如何单独运行在用户机器上,虽然我知道这样有好处

首先,EJB是指运行在EJB容器中的JavaBean。Tomcat是Web容器的参考实现。一个完整的JavaEE服务器应该包括Web容器和EJB容器。
其次,Web容器中无法运行EJB,同时所有的JavaBean都是在服务器端运行的。如果有在客户端的话,就变成C/S结构了。
目前来说除非需要分布式处理,不然基本上不需要考虑EJB。Spring能帮你处理好除分布计算之外的一切。
用JavaScript来进行服务器调用的话,属于Ajax的范围了。
至于购物车。一般来说有几种方法,一种是EJB中的有状态SessionBean。一种是使用HttpSession保存。还有就是自己建设一个对象池来处理。

JavaBean是领域模型的具体化类,保存了信息和业务。只有set、get方法的JavaBean是失血模型。现在来说一般多少不太欢迎这种东西。把本属于领域对象的业务逻辑都丢掉了。
实际上现在的JavaEE系统分这么几个层。
表现层(Struts、JSF等)+应用层(处理业务,可以是JavaBean也可以是EJB)+持久层(JDBC、Hibernate)。
不要在Struts的Action类中写业务代码,那是反模式。不然日后需要修改的时候很麻烦的。Action中只有流程指向和对应用层的调用。

领域模型分实体、值对象和服务三部分。一般实体里写业务代码、值对象显示、服务提供相对独立的业务。失血模型指一个对象中除了get和set方法外没有任何方法的类。现在不太推荐。addobject(objece **),delete(object **)...之类的方法就是业务。这些业务封进去后,失血模型就变成了缺血模型。充血模型把持久化服务等也包了,所以也不是很号。缺血比较推荐。
登录等流程其实是服务。推荐你去看看DDD设计的书也就是《领域驱动设计》。

您很快就会和作为浏览器可视部分的 JavaBean 交互,然后,那些 JavaBean 将与服务器上的 EJB 接口。这种能力也可以扩展到因特网和内部网。

JavaBean 和 Server Bean(通常称为 Enterprise JavaBean (EJB))有一些基本相同之处。它