目录

ejb和spring的区别

ejb和spring的区别是:1.spring可以作为中间层使用,就像ejb的sessionBean,但是spring的依赖注入很强大,而ejb只支持jndi方式的注入;2. ejb有持久层,比如jpa;spring可以无缝结合很多持久化框架,比如hibernate、jpa、ibatis,jdbc。

一、ejb和spring的区别

具体区别

1.spring可以作为中间层使用,就像ejb的sessionBean,但是spring的依赖注入很强大,而ejb只支持jndi方式的注入。

2.ejb有持久层,比如jpa;spring可以无缝结合很多持久化框架,比如hibernate、jpa、ibatis,jdbc。

3.ejb支持分布式(最大特点),spring可以继承webservice来实现,也可以结合一些分布式的框架实现,但是ejb的分布式比较成熟(虽然也有一些事务相关的,无法解释的问题)。

4.spring有spring mvc提供web层,而ejb需要结合jsf或者自己去组装struts等框架实现。

总结

首先,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中只有流程指向和对应用层的调用。

延伸阅读:

二、EJB组件的工作流程

EJB Component在部署到应用服务器上之后, 客户端就可以调用它来完成各种功能。工作过程如下:

1) 客户端首先通过JNDI服务检索Home对象。在EJB应用部署到应用服务器上之后, 容器会自动获得Home对象的信息并将其加入到JNDI中。

2) JNDI服务返回所查找的Home对象的引用。

3) Home对象的创建或者查找EJB对象。

4) Home对象将获得的EJB对象返回给客户端。

5) 客户端利用获得的EJB对象引用, 调用业务方法。

6) EJB对象获得对应bean的一个实例并将相应的业务方法调用传递给该实例。

7) Bean实例通过其实现代码, 完成相应的业务逻辑并将结果返回给EJB对象。

8) EJB对象将方法的结果返回给客户端

以上就是关于ejb和spring的区别的内容希望对大家有帮助。