Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我们应该使用ApacheCXF还是EJB来通信逻辑和web模块?_Java_Jakarta Ee_Tomcat_Glassfish_Ejb - Fatal编程技术网

Java 我们应该使用ApacheCXF还是EJB来通信逻辑和web模块?

Java 我们应该使用ApacheCXF还是EJB来通信逻辑和web模块?,java,jakarta-ee,tomcat,glassfish,ejb,Java,Jakarta Ee,Tomcat,Glassfish,Ejb,我们目前正在为大学开发一个web应用程序,我们希望从经验丰富的开发人员那里得到一些建议 我们有一个使用Hibernate操作MySQL数据库的后端。另一个项目是web UI,它使用后端提供的API(注册用户、获取与某些配置文件相关的数据等)。我们将JSF框架(RichFaces)用于UI。一切都是使用Maven构建的 我们不能决定的技术是UI和逻辑模块之间的通信。第一个选项是使用ApacheCXF提供UI可以作为客户端的SOAP Web服务。第二个选项是使用EJB从UI模块调用后端方法 哪种方法

我们目前正在为大学开发一个web应用程序,我们希望从经验丰富的开发人员那里得到一些建议

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

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

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

我们正在讨论的另一个方面是如何部署应用程序。我们目前考虑的备选方案有:

  • 将其部署为单个WAR项目(这将解决我们与应用程序后端通信UI的问题)
  • 在同一服务器上部署两个WAR项目,使用webservices进行项目之间的通信。(我们在Tomcat服务器上部署了一个使用这种方法的原型)
  • 部署WAR项目和EJB项目
  • 部署一个EAR项目,该项目将包含对WAR和EJB项目的引用。(我们在Glassfish服务器上部署了一个使用这种方法的原型)
  • 项目现在正在启动,所以我们现在只处理几百个用户。然而,如果项目成功,我们将需要处理数百万用户

    如有任何建议,将不胜感激。谢谢

    编辑:那么关于如何部署项目有什么建议吗?有必要用耳朵吗?如果我们将项目部署为EAR模块,有什么优势吗


    编辑2:我们找到了关于这个线程的建议:

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

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

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

    就部署而言,我会使用EAR,或者JSF和EAR后端的战争。您可以使用注入从多个web应用程序和其他EAR应用程序中提取所需的类,甚至可以远程提取

    我不知道你为什么说Tomcat更便宜。Glassfish开源版是一个功能齐全的JavaEE6服务器,免费提供。JBoss也是JavaEE兼容的,并且是免费的。它们都用于许多生产环境中。我发现glassfish对用户更加友好,并向EJB noobs推荐它:)


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

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


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

    我们讨论了获得托管服务或云服务来部署应用程序的成本。阅读stackoverflow的另一个线程,如果您需要glassfish服务器,另一个用户建议使用Jelastic。在浏览了定价部分之后,glassfish服务器似乎会消耗更多的资源(因此更昂贵)。我肯定有一些tomcat的死硬派,但我对在开发环境之外使用tomcat持怀疑态度。默认情况下,tomcat可能看起来更轻,但当您开始部署大型EJB风格的应用程序时会发生什么?可能没有看上去那么快。您可以使用Spring框架,它提供了javaee的所有特性,但是它只是将大量jar复制到默认情况下Glassfish提供的tomcat中。