我们目前正在为大学开发一个网络应用程序,我们希望得到更有经验的开发人员的一些建议。
我们有一个使用 Hibernate 对 MySQL 数据库进行操作的后端。另一个项目是使用后端提供的 API 的 Web UI(注册用户、获取与某些配置文件关联的数据等)。我们为 UI 使用 JSF 框架 (RichFaces)。一切都是使用 Maven 构建的。
我们无法决定的技术是用于 UI 和逻辑模块之间的通信。第一个选项是使用 ApacheCXF 提供 UI 可以作为客户端的 SOAP Web 服务。第二个选项是使用 EJB 从 UI 模块调用后端方法。
哪种方法使用更广泛?就我们在 Web 上阅读的内容而言,使用 EJB 比使用 SOAP Web 服务要快。另一方面,我们对使用 Tomcat 的 EJB 没有任何经验(我们更喜欢使用 Tomcat,因为它似乎是一个更便宜的选择,但是我们不知道要在 Tomcat 中使用 EJB 需要做什么)。此外,从一开始就使用 Web 服务将使我们能够添加对不同平台(例如,Android)的支持。
我们正在讨论的另一个方面是应该如何部署应用程序。我们现在考虑的替代方案是:
- 将其部署为单个 WAR 项目(这将解决我们在将 UI 与应用程序后端通信时遇到的问题)。
- 使用 Web 服务在同一服务器上部署两个 WAR 项目,以便在项目之间进行通信。(我们有一个使用这种方法的原型部署在 Tomcat 服务器上)
- 部署 WAR 项目和 EJB 项目。
- 部署一个包含对 WAR 和 EJB 项目的引用的 EAR 项目。(我们有一个使用这种方法的原型部署在 Glassfish 服务器上)
该项目现在正在启动,所以我们现在只会处理几百个用户。但是,如果项目成功,我们将需要处理数百万用户。
任何意见,将不胜感激。谢谢。
编辑:那么关于如何部署项目的任何建议?有必要使用EAR吗?如果我们将项目部署为 EAR 模块有什么好处吗?
编辑 2:我们在这个线程上找到了我们需要的建议:部署 java 应用程序 (Tomcat/Glassfish)