我们应该使用ApacheCXF或EJB来传递逻辑和Web模块吗?

时间:2013-02-22 20:51:43

标签: java java-ee tomcat glassfish ejb

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

我们有一个后端使用Hibernate来操作MySQL数据库。另一个项目是使用后端提供的API的Web UI(注册用户,获取与某些配置文件相关联的数据等)。我们使用JSF框架(RichFaces)作为UI。一切都是使用Maven构建的。

我们无法决定的技术是UI和逻辑模块之间的通信。第一种选择是使用ApacheCXF来提供UI可以作为客户端的SOAP Web服务。第二个选项是使用EJB从UI模块调用后端方法。

哪种方法更广泛使用?就我们在​​Web上阅读而言,使用EJB比SOAP Web服务更快。另一方面,我们对使用Tomcat的EJB没有任何经验(我们更喜欢使用Tomcat,因为它似乎是一个更便宜的选项,但是我们不知道为了在Tomcat中使用EJB我们必须做什么)。此外,从一开始就使用webservices将允许我们添加对不同平台(例如,Android)的支持。

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

  1. 将其部署为单个WAR项目(这将解决我们在将UI与应用程序的后端进行通信时遇到的问题。)
  2. 使用webservices在同一服务器中部署两个WAR项目,以便在项目之间进行通信。 (我们在Tomcat服务器上部署了使用此方法的原型)
  3. 部署WAR项目和EJB项目。
  4. 部署一个EAR项目,该项目将包含对WAR和EJB项目的引用。 (我们在Glassfish服务器上部署了使用此方法的原型)
  5. 现在该项目正在启动,因此我们现在只处理几百个用户。但是,如果项目成功,我们需要处理几百万用户。

    任何建议都将不胜感激。感谢。

    编辑:那么有关如何部署项目的任何建议?是否有必要使用EAR?如果我们将项目部署为EAR模块,是否有任何优势?

    编辑2:我们在这个帖子上找到了我们需要的建议:Deploying java applications (Tomcat/Glassfish)

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

首先要做的事情。如果不需要,我会避免使用Web服务。如果您觉得可能需要从外部程序和平台调用此系统,那么请继续操作。即便如此,我只会使用Web服务接口进行外部集成,并且仍然有内部EJB实现。

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

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

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

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

答案 2 :(得分:0)

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

如果你使用maven,你可以生成一个具有EAR结构的项目(用于web模块的战争和用于ejbs的jar)。我不记得原型的名称,但你可以很容易地找到它。