0

我们目前正在为大学开发一个网络应用程序,我们希望得到更有经验的开发人员的一些建议。

我们有一个使用 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)的支持。

我们正在讨论的另一个方面是应该如何部署应用程序。我们现在考虑的替代方案是:

  1. 将其部署为单个 WAR 项目(这将解决我们在将 UI 与应用程序后端通信时遇到的问题)。
  2. 使用 Web 服务在同一服务器上部署两个 WAR 项目,以便在项目之间进行通信。(我们有一个使用这种方法的原型部署在 Tomcat 服务器上)
  3. 部署 WAR 项目和 EJB 项目。
  4. 部署一个包含对 WAR 和 EJB 项目的引用的 EAR 项目。(我们有一个使用这种方法的原型部署在 Glassfish 服务器上)

该项目现在正在启动,所以我们现在只会处理几百个用户。但是,如果项目成功,我们将需要处理数百万用户。

任何意见,将不胜感激。谢谢。

编辑:那么关于如何部署项目的任何建议?有必要使用EAR吗?如果我们将项目部署为 EAR 模块有什么好处吗?

编辑 2:我们在这个线程上找到了我们需要的建议:部署 java 应用程序 (Tomcat/Glassfish)

4

3 回答 3

0

我们在工作中使用 ApacheCXF,它有 SOAP 和 Restful。可靠且相对容易设置。我不确定你为什么要使用 glassfish,也许它是首选,但你也可以在 eclipse 中实现你的项目。这真的取决于您和您的团队以及您的团队可能必须构建和支持的要求和技能集,带有两个war文件的CXF webservice + apache + eclipse将是一个很好的路径。

于 2013-02-23T18:49:25.020 回答
0

第一件事。如果不需要,我会避免使用 Web 服务。如果你觉得你可能需要从外部程序和平台调用这个系统,那就去吧。即使这样,我也只会使用 Web 服务接口进行外部集成,并且仍然有一个内部 EJB 实现。

EJB 非常适合企业应用程序。我强烈建议你调查一下。它们为 EJB 池、事务、面向方面的编程、安全性、有状态会话、Java 消息传递、JNDI 等提供支持。您可以将它们直接注入到托管 Bean (JSF) 中。您说您最终将处理数百万用户,因此我假设您希望您的应用程序尽可能快地运行,我认为 SOAP Web 服务不适合。请记住,SOAP Web 服务将消息编码为文本,因此如果您的应用程序将发送二进制文件等,那么您将遇到严重的性能问题。

就部署而言,我会使用 EAR,或者为 JSF 和 EAR 后端使用 WAR。您可以使用 Injection 从多个 Web 应用程序和其他 EAR 应用程序中提取您需要的类,甚至可以远程提取。

我不确定你为什么说 Tomcat更便宜。Glassfish 开源版是一个功能齐全的 JavaEE6 服务器并且它是免费的。JBoss 也符合 JavaEE 并且是免费的。它们都用于许多生产环境。我发现 glassfish 对用户更加友好,并且会推荐给 EJB 菜鸟 :)

我也开始使用Tomcat,但现在我根本不使用它。当你可以拥有整个沙邦时,为什么只使用 servlet 容器?希望这可以帮助。

于 2013-02-23T22:45:11.157 回答
0

在这种情况下,我不会使用 Web 服务。您可以使用托管 bean 作为控制器。将逻辑放入 EJB,将视图放入丰富的面孔中,并使用托管 bean 控制流程。

如果您使用 maven,您可以生成具有 EAR 结构的项目(web 模块的 war 和 ejbs 的 jar)。我不记得原型的名称,但您可以轻松找到它。

于 2013-02-24T20:20:30.027 回答