Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.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 我的业务层应该使用EJB3还是Spring?_Java_Performance_Spring_Ejb 3.0_Scalability - Fatal编程技术网

Java 我的业务层应该使用EJB3还是Spring?

Java 我的业务层应该使用EJB3还是Spring?,java,performance,spring,ejb-3.0,scalability,Java,Performance,Spring,Ejb 3.0,Scalability,我的团队正在开发一种带有web前端的新的面向服务的产品。在关于我们将使用什么技术的讨论中,我们决定运行JBoss应用服务器、Flex前端(可能使用AdobeAIR进行桌面部署)和web服务来连接客户端和服务器 在业务逻辑中使用哪种服务器技术时,我们陷入了僵局。EJB3和Spring之间存在很大的争论,我们最大的关注点是可伸缩性和性能,以及代码库的可维护性 以下是我的问题: 支持或反对EJB3与Spring的论据是什么? 我希望每个人都有什么陷阱 我在哪里可以找到好的基准信息 我肯定会推荐EJ

我的团队正在开发一种带有web前端的新的面向服务的产品。在关于我们将使用什么技术的讨论中,我们决定运行JBoss应用服务器、Flex前端(可能使用AdobeAIR进行桌面部署)和web服务来连接客户端和服务器

在业务逻辑中使用哪种服务器技术时,我们陷入了僵局。EJB3和Spring之间存在很大的争论,我们最大的关注点是可伸缩性和性能,以及代码库的可维护性

以下是我的问题:

  • 支持或反对EJB3与Spring的论据是什么?
    • 我希望每个人都有什么陷阱
    • 我在哪里可以找到好的基准信息

  • 我肯定会推荐EJB3而不是spring。我们发现它更精简,更易于编写代码,并且得到更好的支持。我在过去使用过Spring,发现它非常混乱,并且没有EJB3(或者我猜在一天结束时是JPA)那样有很好的文档记录

  • 从EJB3开始,您不再需要处理外部配置文件,并且每个数据库表只需要注释一个POJO。此POJO可以毫无问题地传递到您的web层。像Netbeans这样的IDE甚至可以为您自动生成这些POJO。我们现在已经使用EJB3作为许多大型应用程序的后端,并且没有发现任何性能问题。 您的会话bean可以很容易地公开为web服务,您可以将其公开给Flex前端。 会话bean很容易在方法或类级别锁定,以便在需要时分配角色等

  • 关于春天,我不能说太多,因为我只试了几个星期。但我对它的总体印象很差。这并不意味着它是一个糟糕的框架,但是我们的团队已经发现EJB3对于持久性/业务层来说是最好的。

    支持或反对EJB3与Spring的论据是什么? Spring始终在创新,并认识到现实世界的约束。Spring为Java1.4应用服务器提供了简单和优雅,并且不需要2004-2006年没有人能够访问的J2EE规范版本。在这一点上,几乎是一场宗教辩论,你可能会被卷入到-Spring+抽象+开源与JavaEnterpriseEdition(JavaEE)5.0规范之间

    我认为Spring对JavaEE规范的补充大于竞争。随着曾经是Spring独有的特性继续被应用到规范中,许多人会认为EJB3为大多数内部业务应用程序提供了“足够好”的特性集

    每一个都会有什么陷阱? 如果您将其视为持久性问题(Spring+JPA)而不是EJB3,那么您真的没有做出那么大的选择

    哪里可以找到好的基准信息?
    我已经有一段时间没有关注这部电影了,但它们很受欢迎有一段时间了。似乎每个供应商(IBM、JBOSS、Oracle和Sun)对拥有一个兼容的服务器越来越不感兴趣。从1.3到1.4,认证供应商的列表越来越短。1.5 Java企业版。我认为完全符合所有规范的巨型服务器时代已经结束。

    我过去使用过非常类似的架构。Spring+Java1.5+ActionScript2/3与Flex数据服务相结合,使得编写代码非常容易(而且很有趣!)。
    不过,Flex前端意味着您需要足够强大的客户端机器。

    基于性能,EJB3和Spring之间不会有太大区别。我们选择Spring的原因如下(问题中未提及):

    • Spring推动体系结构朝着更容易支持单元测试的方向发展。例如,注入一个模拟DAO对象来对业务层进行单元测试,或者利用Spring的MockHttpRequest对象对servlet进行单元测试。我们为单元测试维护一个单独的Spring配置,它允许我们将测试隔离到特定的层
    • 覆盖驱动程序是兼容性。如果您需要支持多个应用服务器(或者最终希望选择从JBoss迁移到Glassfish等),那么您将基本上随身携带您的容器(Spring),而不是依赖EJB3规范的不同实现之间的兼容性
    • Spring允许对持久性、对象远程处理等技术进行选择。例如,我们还使用Flex前端,并使用Hessian协议在Flex和Spring之间进行通信

    我倾向于选择Spring而不是EJB3,但我的建议是,无论您采用哪种方法,尽量坚持编写POJO,并尽可能使用标准注释,如JSR注释,如@PostConstruct、@PreDestroy和@Resource,它们同时适用于EJB3或Spring,因此您可以选择您喜欢的框架

    e、 你可以决定在某个项目上使用Guice来代替IoC

    如果您想在web应用程序中使用预请求注入,您可能会发现Guice对于依赖项注入比Spring快很多


    会话bean主要归结为依赖注入和事务;所以EJB3和Spring在这方面有点相似。Spring的优势在于更好的依赖注入和JMS之类的更好的抽象。显然,EJB3和Spring之间的差距要小得多。这就是说,EJB3现在的一个缺点是,您只能将组件注入到bean中,因此最终可以将组件转换成不需要注入的bean

    关于单元测试的争论现在已经无关紧要了——EJB3显然是为了更容易进行单元测试而设计的

    上面的兼容性论证也有点不相关:无论您使用EJB3还是Spring,您仍然依赖于3rd p