Java 我们应该使用ApacheCXF还是EJB来通信逻辑和web模块?
我们目前正在为大学开发一个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)的支持 我们正在讨论的另一个方面是如何部署应用程序。我们目前考虑的备选方案有: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模块调用后端方法 哪种方法
编辑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中。