【问题标题】:Using multiple .war in one Web application在一个 Web 应用程序中使用多个 .war
【发布时间】:2012-05-31 18:20:06
【问题描述】:

我的公司正在创建多个 Web 应用程序,这些应用程序在功能上会有一些重叠。我想将通用功能开发为一个单独的项目,并且由于它将由网页和托管 bean 组成,因此我假设该项目需要位于其自己的 .war 文件中。然后我可能会在 .ear 文件中部署两个(或更多)Web 应用程序。在网上做一些初步研究让我不确定 Web 应用程序如何协同工作。我是否能够在托管 bean 之间共享数据并将用户从一个 Web 应用程序内的页面引导到另一个?是使我的应用程序可维护的正确方法还是有更好的方法来分解项目?

【问题讨论】:

  • 我认为所有的演示都希望发生在一个单一的战争中,但是使用框架你可以在你的主要战争文件中渲染另一个战争的内容。诀窍是使用可持久化的业务对象,通过某种服务总线在两个应用程序之间传递数据。
  • 是面向 web 的常用功能,或者它们可以在 jar 中开发并用作依赖项,然后在不同的 webapps 之间共享。
  • @aglassman 常用功能包括面向 Web、跨应用程序捕获和显示用户数据。我想我会使用 facelets 模板将公共内容包含在应用程序特定内容中。
  • @MikeMcMahon 这是否意味着我需要持久化所有数据,然后在一个 Web 应用程序的页面之间切换到另一个页面时从数据库中读取它?
  • 是 - 是的,也不是,使用 javascript 和 iframe(位于同一个域名内),您可以使用一些漂亮的 JScript 技术在它们之间传递数据。但是,服务总线旨在允许多个应用程序通过单个入口点相互连接。它们都依赖于相同的数据库和数据集;但是,它们使用持久层和服务定位器来确保所有应用程序之间的数据保持不变。

标签: java jsf jakarta-ee


【解决方案1】:

这是一种矫枉过正,但是:
您可以将应用程序的功能拆分为数据库、业务逻辑和表示 /web/ 层; “重叠”功能可以用于业务和数据库层。
Web 前端必须通过 corba、REST/LESS、soap 或替代方案与业务层对话,具体取决于您在第 2 层 /business/ 中具有哪些连接器;

this diagram
或谷歌 3 层架构了解更多信息


几年前我的公司遇到了同样的问题,他们最终部署了多个应用程序/一些业务逻辑重复是不可避免的/

现在我们重新发明了轮子,创建了一个通用的、开放的、业务层服务层,该服务层可以通过 Web 服务调用,并且可供部门内任何地方的其他应用程序/脚本访问;

【讨论】:

  • 这种方法的唯一问题是我想在我的应用程序中重用 Web 层代码。会有通用的数据输入/演示屏幕,带有通用的 ManagedBeans 和 EJB
  • 您或许可以使用 Vaadin 来实现常见的“网络层”代码。这样,它将在服务器上/在您的业务层/中呈现并发送回客户端。或者只是将通用功能移动到新的 web 应用程序中,如果需要,您可以稍后通过 web 服务等公开它:-)
【解决方案2】:

将所有 WAR 文件包装到 EAR 文件中。并将库文件放入EAR中,以便所有WAR文件都可以共享。

【讨论】:

  • 这怎么可能?
猜你喜欢
  • 2022-01-08
  • 1970-01-01
  • 2015-04-03
  • 2013-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多