【问题标题】:EAR with multiple wars or wars with remote EJBEAR 与远程 EJB 发生多次战争或战争
【发布时间】:2012-03-09 08:25:09
【问题描述】:

我一直在努力解决这个问题,并决定征求您的意见。

我正在构建几个共享一组通用数据和操作的应用程序。每个应用程序都有要添加的特定数据,但需要对特定应用程序以“基本”或“固定”网络应用程序形式提供的共享数据进行“鸟瞰”。特定申请的数量(可能)超过 20 个,其中一些只是临时的(比如 4-6 个月)。

当我刚开始使用这个项目(在 Java EE 中)时,我创建了一个 EAR,将共享的 JPA 实体和 EJB 放在一个 EJB 项目中,并在我进行过程中添加了 WAR。我使用继承来为每个应用程序添加特定数据。我很快就遇到了麻烦,因为我无法继承实体来处理不同的 EJB 项目,所以我最终得到了一个包含所有实体的大型 EJB 项目和一个数据库,其表名前缀为一个标识应用程序的字符串:我不喜欢的情况。此外,项目越大,开发过程中的错误消息就越奇怪,必须删除所有构建和分发目录并从头开始重新构建所有内容变得令人厌烦(NetBeans 7)。

因此,随着时间的推移,我决定放弃 EAR 和继承,转而使用单独的 WAR,并使用远程 EJB 来管理共享数据。耦合 web-app -> 鸟瞰图是通过本地 EJB 调用远程 EJB 并将共享数据添加到本地定义的实体来实现的,因此对于所有意图和目的,共享数据看起来像是本地实体的一部分。我对此不太满意,因为出于某种原因,它的定义似乎过于松散,并且存在对性能的额外惩罚(目前还不算太糟糕,但可能是及时的)。

我可以将两者结合起来(返回 EAR 并将远程 EJB 切换到本地 EJB,但放弃继承),但随后又回到了不稳定的开发环境。此外,其中一个应用程序中的一点点变化就意味着必须部署一切。不知何故,我认为这有一天会导致麻烦(例如,当时破坏的不是 1 个而是 20 多个应用程序..)

你会怎么做,为什么?是否有人对类似规模的项目有任何经验,以及在开发过程中是如何进行的(即随着项目的发展遇到任何问题)?

谢谢!

【问题讨论】:

  • 您应该能够获得实体的继承以处理不同的实体 EJB 项目。不明白你遇到了什么麻烦?
  • 我遇到了和this post一样的问题

标签: architecture ejb war ear


【解决方案1】:

大声思考..

不要放弃继承。使用它,但不是实体 EJB POJO 打包在一个单独的 jar 文件中。拥有所有的 EJB 部署在一个单独的(大型)EJB 项目中。
让这些 EJB 公开 RESTFul WS。

Web 应用程序对 EJB 项目进行 REST 调用。 EJB 实体提取数据,填充 POJO 并将其转换为 JSON(或 XML) 并将其发送到 WebApp。

WebApp 使用 序列化 JSON 对象并在 WebApp 中使用它。这些 POJO 很善良 数据传输对象..

【讨论】:

  • 感谢您的回答。我一直在考虑使用 WS 或 RS,但决定不考虑使用远程 EJB 以更少的开销和更“自然”的编程方案完成基本相同的操作。您的意思是在同一个 EJB 项目中定义应用程序特定实体(使用继承)吗?
猜你喜欢
  • 2017-04-13
  • 2014-12-16
  • 1970-01-01
  • 2014-04-02
  • 1970-01-01
  • 2011-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多