`
kyo100900
  • 浏览: 639727 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring破坏了JEE规范吗?

阅读更多

<!----><!----><!----> <!---->

[TTS 编辑注:这是 TTS 论坛上的原帖。我现在把它放到 TTS 主页上来,就是认定这又会是一场非常有趣的口水打仗。 ]

原文请看:http://www.theserverside.com/news/thread.tss?thread_id=50477

 

正文:

 

 

首先,我不是 Spring 的反对者。我已经在许多项目中用到了 Spring ,并心悦诚服的认为它是一个伟大的框架。

 

 

我想就我实际工作中 Spring+JEE 的整合,来探讨一些实际中遇到的问题(或者说更具“学术”性质的问题)。当我第一次看 JEE 规范的时候,这些问题就开始萦绕在我脑中。虽然的让我很困惑啊,但却很有意义。我现在已经知道不可以直接往文件系统写内容了。 [ 注:在 EJB 中新建,修改,删除文件系统的文件是不允许的 ] 。但我却不知道,在 EJB 3.0 Spec 21.1.2 规范中指出:在 EJBs 中不允许使用 Class.forName() 或类似的方法。

 

 

规范指出:

<!---->l         <!---->不允许 EJB 去试图建立一个 class loader

<!---->l         <!---->不允许 EJB 去得到当前的 class loader

<!---->l         <!---->不允许 EJB 去设置当前的 class loader

<!---->l         <!---->不允许 EJB 去设置 security manager (安全管理);

<!---->l         <!---->不允许 EJB 去停止 JVM

<!---->l         <!---->不允许 EJB 改变 input, output 以及 error stream( )

 

 

这就是 Spring 的第一个违反 JEE 规范的实例:当我要得到 Spring 中配置的 Bean 时,该 bean 会动态的用类似于 Class.forName() 的方法将其实例化。在使用这个方法,那么无论是显式还是隐式的都会得到一个 class loader 。我认为不允许动态实例化的意义在于应用服务器是想完全掌控应用程序,从而将资源等其它方面达到最优。你们怎么想的?我确实很想听听你们的意见。难道我对规范理解错了?

 

 

第二个违反规范的例子是在 J2EE 应用程序中使用 AbstractStatelessSessionBean 时发现的。规范中说: Stateless Session Bean 不允许被继承。这点我同意,尽管看上去过于“学术”,但我坚信这么做一定有它的理由。( [ ] 关于这一点,网友马上找到规范当场对质。实际上规范说是是: session bean 可以有父类或接口 ……. 一个 session bean 不允许将另一个 session bean 作为其父类 ……….

 

 

我还发现根本就没要 Spring+JEE 组合。

 

 

因为同样我还发现,一些 Spring Integration Modules 在不同的应用服务器下表现的比直接使用 Spring 更出色。 ( 比如说在 EJB 容器中加载 Spring Context) 。你们在用应用服务器与 Spring Integration Modules 整合时,有没有类似经验?你们觉得这样使用是不是就可以解决我上面我所提到的问题呢?

 

 

 

 

 

4
2
分享到:
评论
5 楼 dearshor 2008-11-26  
allenny 写道

Class.forName() 都不让我用,我只能转投.net了

这是什么逻辑?
4 楼 easyroom 2008-09-04  
虽然没有用过ejb但是我觉得所谓
l         不允许 EJB 去试图建立一个 class loader ;

l         不允许 EJB 去得到当前的 class loader ;

l         不允许 EJB 去设置当前的 class loader ;

l         不允许 EJB 去设置 security manager (安全管理);

l         不允许 EJB 去停止 JVM ;

l         不允许 EJB 改变 input, output 以及 error stream( 流 ) ;
实际上说的是在bean里面不得有这些动作,因为这些动作是委托给容器的

在spring里面这些操作也不应该是在bean里面被调用。应该由框架来完成。如果硬要比较的话,我觉得这是两者的相同之处吧
3 楼 sam.ds.chen 2008-09-03  
引用

[TTS 编辑注:这是 TTS 论坛上的原帖。我现在把它放到 TTS 主页上来,就是认定这又会是一场非常有趣的口水打仗。 ]


TTS? TSS?
2 楼 allenny 2008-09-02  
Class.forName() 都不让我用,我只能转投.net了
1 楼 Jason(aijun) 2008-09-02  
,我看不觉得

相关推荐

    Spring:JEE框架

    **Spring 框架概述** Spring Framework 是 Java 平台上的一款广泛应用的开源框架,它为构建高质量的企业级应用提供了全面的解决方案。Spring 的核心设计理念是依赖注入(Dependency Injection,DI)和面向切面编程...

    spring-jee-4.2.xsd.zip

    《Spring框架中的XSD文件详解——以spring-jee-4.2.xsd为例》 在软件开发领域,Spring框架以其强大的功能和灵活的配置而备受推崇。Spring框架的核心在于其XML配置文件,其中包含了对应用组件和服务的定义。在XML...

    jee、spring、spring mvc、mybatis 学习(十)

    在本篇博客“JEE、Spring、Spring MVC、MyBatis 学习(十)”中,作者深入探讨了这四个关键的Java企业级开发技术,它们是构建现代Web应用程序的基础。下面将对这些技术进行详细阐述。 1. JEE(Java Enterprise ...

    jee、spring、spring mvc、mybatis 学习(五)

    在本篇【jee、spring、spring mvc、mybatis 学习(五)】中,我们将深入探讨四个关键的Java企业级开发技术:Java EE(Java Enterprise Edition)、Spring框架、Spring MVC以及MyBatis。这些技术是现代Java Web应用...

    jee、spring、spring mvc、mybatis 学习(四)

    在本篇学习中,我们将深入探讨Java企业版(Java Enterprise Edition, JEE)、Spring框架、Spring MVC以及MyBatis这四个关键的技术栈。这些技术在现代企业级开发中扮演着重要角色,尤其对于构建可扩展、高效且易于...

    jee、spring、spring mvc、mybatis 学习(九)

    在本篇学习中,我们将深入探讨Java企业版(Java Enterprise Edition, JEE)、Spring框架、Spring MVC以及MyBatis这四个关键的技术栈。这些技术在现代企业级Web应用开发中扮演着至关重要的角色。 首先,JEE是Java...

    jee、spring、spring mvc、mybatis 学习 (一)源代码

    Spring框架是JEE生态中的一个重要组成部分,尤其在轻量级应用服务器中,Spring以其灵活的依赖注入和面向切面编程特性,成为了现代Java应用开发的核心。 Spring框架分为多个模块,其中Spring MVC是用于构建Web应用...

    jee、spring、spring mvc、mybatis 学习(六)

    在本篇学习中,我们将深入探讨Java企业版(Java Enterprise Edition, JEE)、Spring框架、Spring MVC以及MyBatis这四个关键的技术栈。这些技术在现代企业级开发中扮演着重要角色,尤其对于构建可扩展、高效且易于...

    jee、spring、spring mvc、mybatis 学习(二)

    在本篇学习中,我们将深入探讨Java企业级开发中的核心框架——JEE、Spring、Spring MVC以及MyBatis。这四个技术是构建现代Java应用程序的基础,尤其在开发Web应用时,它们提供了强大的功能和灵活性。 首先,JEE...

    JEE AND SPRING

    标题中的"JEE AND SPRING"指的是Java企业版...在实际开发中,理解并熟练运用JEE规范和Spring框架可以提升开发效率,而汉化包则有助于降低学习和使用的难度,尤其对于初学者或者不熟悉英文界面的开发者来说。

    jee、spring、spring mvc、mybatis 学习(三)

    jee、spring、spring mvc、mybatis 学习(三) ,http://blog.csdn.net/?aspxerrorpath=/qq5132834/article/details/52199255

    spring osgi 规范 中文版

    Spring OSGi规范中文版是将Spring框架与OSGi(Open Service Gateway Initiative)技术相结合的指导文档,旨在帮助Java开发者更好地在OSGi环境下利用Spring框架的优势。OSGi是一种动态模块化系统,允许组件(称为...

    jee#spring#hibernate#stru2ct

    标题中的"jee#spring#hibernate#stru2ct"和描述中的"Spring#struct2#hibernat#java#jee"共同指向了Java企业级开发中的几个关键框架和技术,包括Java Enterprise Edition (JEE),Spring框架,Hibernate ORM框架,以及...

    JEE框架Spring详细简介..pdf

    Spring框架是Java企业版(JEE)开发中的一个重要工具,其设计目的是简化应用程序的构建,提高模块化的效率和代码的可维护性。本篇将详细阐述Spring的核心内容,包括容器、控制反转(IoC)和面向切面编程(AOP),并...

    eclipse-jee-2023-09-R-win32-x86-64.zip

    - Spring Tools Suite:集成Spring框架开发工具,简化Spring应用开发。 - Maven Integration:集成Maven构建系统,管理依赖关系和构建流程。 7. **版本控制**: - Git集成:Eclipse内置Git支持,方便代码版本...

    韩顺平 全套视频教程 java jee ssh spring php orace

    【标题】"韩顺平 全套视频教程 java jee ssh spring php orcle" 提供了一个全面的学习路径,涵盖了Java、Java Enterprise Edition (Java EE)、Struts、Hibernate、Spring框架,以及PHP和Oracle数据库等多个IT领域的...

    What’s Spring?

    Spring框架是Java和JEE应用开发中的一个核心框架,它以其全面的功能和灵活性在业界广泛使用。Spring的主要目标是简化Java企业级应用程序的开发,提供了一种有效的方式来组织和管理应用程序的组件,同时减少了代码的...

    spring约束文件大全

    spring-aop、spring-beans、spring-cache、spring-context、spring-jdbc、spring-jee、spring-jms、spring-lang、spring-mvc、spring-oxm、spring-task、spring-tool、spring-tx、spring-util、spring-websocket、

    JEE框架Spring详细简介..docx

    Spring 框架是Java企业版(JEE)开发中的一个关键组件,它提供了一种模块化和简化应用开发的方法。Spring 框架的主要目标是使开发人员能够创建松散耦合的组件,提高代码的可测试性、可维护性和可扩展性。通过遵循...

    eclipse-jee-neon-3-win32-x86_64.zip

    《Eclipse JEE Neon 3 for Windows:一款高效强大的开发利器》 Eclipse JEE Neon 3 是Eclipse基金会发布的一款专为Java EE开发者设计的集成开发环境(IDE)。这款软件以其强大的功能、高效的性能以及丰富的插件生态...

Global site tag (gtag.js) - Google Analytics