由于安全原因,我们的遗留应用程序被拆分为 2 个 Web 应用程序,一个应用程序用于前端,另一个应用程序用于业务逻辑和数据库交互,即中间层。我现在正在使用带有 JSTL 的 Spring MVC 重新设计这个应用程序。教程示例适用于 1 个应用程序。
我应该怎么做才能配置这个在单独的战争中使用 JSP 的 Spring 应用程序?
由于安全原因,我们的遗留应用程序被拆分为 2 个 Web 应用程序,一个应用程序用于前端,另一个应用程序用于业务逻辑和数据库交互,即中间层。我现在正在使用带有 JSTL 的 Spring MVC 重新设计这个应用程序。教程示例适用于 1 个应用程序。
我应该怎么做才能配置这个在单独的战争中使用 JSP 的 Spring 应用程序?
两个主要选项:
我不清楚为什么业务逻辑和数据库交互需要是一个单独的Web应用程序,而不是库。如果它们被部署在同一台服务器上,那就更不清楚了。
如果它们被部署在不同的服务器上,那么您基本上是从“前端”应用程序向“API”应用程序进行服务调用。有很多方法可以做到这一点,甚至可能是 EJB-ish,尽管如果您使用 Spring,我怀疑您正试图避免这种情况(尽管使用 JEE6,这样做的理由要少得多)。
Dave 建议的第一个选项也是我们通常这样做的方式:创建一个Maven 多模块项目,其中将业务服务构建为 Web 层所依赖的简单 jar 文件。通过这种方式,您可以在两个层之间进行清晰的分离,并可能使用不同的“顶部”重用业务逻辑,例如,使用 Swing 客户端而不是 Web 应用程序。
当然,这在不使用 Maven 时也是可能的——您可以将源文件保存在单独的文件夹中,并让 Ant(或任何您喜欢的工具)构建可交付成果。
我会这样走:
使用该架构,您的第一个 WAR 通过 AJAX 调用访问第二个 WAR 服务。这意味着大量使用 JavaScript:也许您可以使用 JQuery 来帮助您。
此外,这种方法允许您在不同的容器中部署 WAR。甚至第一个 WAR 根本不可能是 WAR,它甚至可能是部署在 Apache 中的 PHP 应用程序或纯 HTML/JS 网页。