没有EJB3,java web项目架构如何?

时间:2009-09-28 13:03:14

标签: java architecture web-applications java-ee ejb-3.0

我和朋友正在构建一个基于java的相当复杂的网站。 (PHP本来会更明显,但我们选择了java,因为这个项目的教育方面对我们很重要)

我们已经决定将JSF(包含richfaces)用于前端,使用JPA用于后端,到目前为止,我们已决定不将EJB3用于业务层。

我们决定不使用EJB3的原因是 - 如果我错了请纠正我 - 如果我们使用EJB3,我们只能在像jboss这样的完整的java应用服务器上运行它如果我们不使用EJB3,我们仍然可以在像tomcat这样的轻量级服务器上运行它。我们希望记住未来Web服务器的速度和成本。

到目前为止,我已经完成了两个Java EE项目,并且都使用了完整的堆栈

  • 网络
  • 业务逻辑
  • 工厂/持久性服务
  • 实体

每个图层都是一个单独的模块。

现在这是我的问题,如果你不在业务逻辑层使用EJB3。这层是什么样的?请问在没有ejb3的情况下开发java web项目时常见的做法是什么?您是否认为业务逻辑层可以完全抛出并在后台bean中具有业务逻辑?如果保留图层,是否所有业务方法都是静态的?或者,您是否根据需要在每个会话中根据需要初始化每个业务类?

3 个答案:

答案 0 :(得分:2)

EJB3分为两层:

  • persistance(JPA,旧实体bean)
  • 业务逻辑(旧会话bean)

您可以使用相同的体系结构,而无需使用明确的EJB3。

持久性

JPA非常接近Hibernate。我们使用,并且更喜欢JPA。

  

注释来自JPA,但不需要容器,它不是真正的EJB。

商业

Spring也非常接近EJB3的Business层。拥有更多功能...


有些人甚至说他们比EJB3更好!! ;-)他们说EJB3是从这两个解决方案创建的(但仍然必须在很多方面达到他们的水平!)。

答案 1 :(得分:1)

EJB在过去5年中得到了很多改进。特别是对于版本3,它们变得更轻量级。

Java EE 6有一个Web配置文件,甚至可以在tomcat服务器上运行Java EE堆栈。 http://www.oracle.com/technetwork/java/javaee/resources-jsp-139799.html

此外,可以在tomcat上安装所有必需的组件: http://tomee.apache.org/apache-tomee.html

我有一个示例项目,包括github上的EJB,它们展示了如何使用它们:

https://github.com/ManuelB/facebook-recommender-demo

此外,我会推荐Adam Bien的截屏视频: http://www.adam-bien.com/roller/abien/

如果重新部署时间是您不使用EJB的原因,那么您应该查看: http://zeroturnaround.com/software/jrebel/

要仍然回答您的问题,您应该将以下Java Web框架作为EJB替代方案进行研究:

答案 2 :(得分:0)

不使用EJB的人通常使用Spring或其他依赖注入框架。 JSF允许您创建bean并将它们连接在一起,但是最好只将它用于UI并将Spring用于业务层。有很多信息可用于将JSF与Spring集成。