【问题标题】:How does a java web project architecture look like without EJB3?没有 EJB3 的 java web 项目架构是什么样子的?
【发布时间】:2010-12-01 23:53:28
【问题描述】:

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

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

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

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

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

每一层都有一个单独的模块。

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

【问题讨论】:

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


【解决方案1】:

在过去的 5 年中,EJB 增强了很多。特别是在第 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 替代方案:

【讨论】:

  • 我宁愿在这个答案中添加 Spring
【解决方案2】:

EJB3 分为两层:

  • 持久性(JPA,旧实体 bean)
  • 业务逻辑(旧会话 bean)

您可以拥有相同的架构,而无需明确使用 EJB3。

持久性

JPA 非常接近 Hibernate。我们使用并更喜欢它而不是 JPA。

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

商业

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


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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-01
      • 2013-06-20
      • 1970-01-01
      • 2016-05-08
      • 1970-01-01
      • 1970-01-01
      • 2020-12-30
      • 2011-05-25
      相关资源
      最近更新 更多