`
seawavenews
  • 浏览: 230155 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

J2EE应用中常见的反模式(anti-patterns)

阅读更多

J2EE应用中有一些常见的毛病和错误的观念,按照时下流行的说法,叫反模式。稍不注意,我们自己也会犯,所以大概整理一下,一个是备忘,也是供需要的朋友参考:<o:p></o:p>

<o:p> </o:p>

1- EJB不叫J2EE<o:p></o:p>

EJB一直发展到今天的2.1仍然被广为诟病,它提供了很多时候我们并不需要的东西,而且我们在很多情况下一旦选用EJB就没有其他的方式不去使用那些笨重的功能。但是很多所谓范例让我们有一种错觉,好像不用EJB就不是J2EE应用。有一些折中的方案是使用Session Fa?ade模式,Entity Bean采用BMP + 本地接口,然后提供一层无状态的Session Bean,采用远程和本地接口,这样的设计模式,我想,多半是出于无奈。如今,甚至我们经常都能看到不使用EJB的言论,炒得很火的Spring则为这种完全不用EJB开发J2EE项目提供了实际的、强有力的佐证。<o:p></o:p>

<o:p> </o:p>

2- 过度分层<o:p></o:p>

J2EE这个规范肤浅的来看,就是为我们定义了很多“层”,然后还有很多分工明确的“角色”,加上J2EE的蓝本应用程序就分了很多“层”,以至于大家都觉得J2EE的应用就应该是很多层的,其实不然,需要具体情况具体分析。<o:p></o:p>

<o:p> </o:p>

3- 频繁的往返调用<o:p></o:p>

EJB的看似简单造成我们经常忽略可能在使用过程中出现的远程调用,比如有时候为了更新一条记录,每个字段都是远程的去set,大大增加了不必要的开销,于是我们意识到在调用中使用DTO是一个建议遵循的方案。<o:p></o:p>

<o:p> </o:p>

4- 过度使用有状态的Session Bean<o:p></o:p>

一般来讲,一个Session Bean实例,如果它是有状态的,那么它只对某个固定的用户服务,如果是无状态的,则可以满足不同用户的调用。这有点类似(只是有点类似)一个类的静态方法和非静态方法的区别。我们在实际应用中,应该尽量避免使用有状态的Session Bean,除非特别必要。我们可以把状态保留在Session Bean之外,如Web容器的session对象或者我们自定义的类中,而不是完全依赖有状态的Session Bean去帮我们做。<o:p></o:p>

<o:p> </o:p>

5- 过度会话<o:p></o:p>

Web容器的session对象是个好东西,用起来也很方便和直截了当,这造成了我们很多人对它的滥用,什么东西都往里面放。这有两个突出的问题,一个是资源浪费;另一个,万一Web服务器崩溃,那些本来需要持久化的数据就丢失了。我们需要考虑好,哪些数据本可以用request的,哪些数据又是需要持久化到数据库的,等等,不能一味依赖session<o:p></o:p>

<o:p> </o:p>

6- 万能Servlet或者万能JSP<o:p></o:p>

J2EE为我们提供了Web层丰富的技术选择,Servlet或者JSP都只是其中一种,虽然它很强大,但是也不应该由它一个来承担所有MVC三个部分的功能。现实中我们的Struts很好的规范了这个问题:Servlet负责调度,专门的Action负责处理逻辑,而JSP用于用户界面显示。JSPServlet本质上是同一个东西,只是从不同的角度来处理问题,它们各有所长,互为补充。<o:p></o:p>

 
分享到:
评论

相关推荐

    The Little Book of Python Anti-Patterns

    The Little Book of Python Anti-Patterns

    SQL.Antipatterns.zip_SQL Anti-patterns_SQL Antipatterns

    《SQL Antipatterns》是一本独特的SQL指南,它通过揭示和分析常见的SQL编程错误,帮助读者避免在数据库设计和查询优化过程中陷入困境。书中的"反模式"概念旨在指出那些在实践中可能导致问题的常见做法,使开发者能够...

    golang design pattern; 设计模式golang版本-go-design-patterns.zip

    在编程领域,设计模式是一种被广泛接受的解决常见问题的最佳实践。它们是经过时间验证的...在"go-design-patterns-master"这个项目中,你将找到每个模式的具体实现示例,这对于学习和理解Go语言的设计模式非常有帮助。

    Troubleshooting Java Performance Detecting Anti-Patterns with Open Source epub

    Troubleshooting Java Performance Detecting Anti-Patterns with Open Source Tools 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    java-design-patterns-master_JAVAdesignpattens_java_design_

    这个压缩包“java-design-patterns-master”显然是一个专注于Java设计模式的学习资源,旨在帮助开发者深入理解和应用这些模式。下面我们将详细探讨Java设计模式及其在实际开发中的应用。 1. **单例模式(Singleton...

    Expert One-on-One J2EE Design and Development

    What is this book about? The results of using J2EE in practice are often disappointing:... It emphasizes the use of OO design and design patterns in J2EE, without becoming a theoretical book ,高清文档 

    SQL.Antipatterns

    《SQL Antipatterns》这本书通过深入剖析数据库设计、查询编写及应用开发过程中的常见错误和误区,提供了实用的解决方案和技术建议。无论是初学者还是有经验的开发者,都能从中获得宝贵的经验教训,帮助他们更好地...

    J2EE core design patterns j2ee 核心设计模式 chm

    2. **Front Controller模式**:在J2EE中,Servlet经常作为Front Controller,负责请求的路由和应用的初始化,确保系统的解耦和单一入口点。 3. **Model-View-Controller (MVC)模式**:在JSP和Servlet中广泛使用,...

    cloud-design-patterns, 云应用的规范架构指南.zip

    cloud-design-patterns, 云应用的规范架构指南 云设计模式Microsoft模式&实践http://aka.ms/cloud-design-patterns本项目采用了微软的微软开源代码。 有关更多信息,请参见代码 Conduct FAQ FAQ或者联系 opencode@

    Pro-Objective-C-Design-Patterns-for-iOS

    《Pro-Objective-C-Design-Patterns-for-iOS》是一本专注于在iOS平台上利用Objective-C语言实现设计模式的专业书籍。书中旨在帮助已经有一定Cocoa开发基础的开发者,通过掌握设计模式的实践应用,提升软件开发的生产...

    J2EE Antipatterns

    该书通过分析J2EE中的常见问题,帮助开发者避免在实际项目中遇到这些反模式,并提供了相应的建议和替代方案,以便更好地进行软件架构设计和代码实现。 #### 重要知识点概述 1. **什么是反模式(Antipatterns)**: ...

    SQL Antipatterns.pdf

    SQL Antipatterns是一本由Pragmatic Bookshelf出版的书籍,旨在帮助读者避免数据库编程中的常见陷阱。这本书的部分内容涉及了SQL语言的使用,特别是针对"SELECT"语句的实现。作者在引言中分享了一个个人故事,他在...

    java-design-patterns-master.zip

    有句话说的很好,理解吃透设计模式概念如果是3分的难度,那么自己能写出来就是10分的难度,灵活应用在项目中就是100分的难度。java-design-patterns-master是github上比较优秀的设计模式项目,这里与大家分享!

    design-patterns-for-humans设计模式中文翻译版

    https://github.com/kamranahmedse/design-patterns-for-humans 中文翻译,实例修改位JAVA代码

    J2EE核心模式(Core J2EE Patterns)

    《J2EE核心模式(Core J2EE Patterns)》是一本深度探讨J2EE平台设计模式的权威著作,由SUN公司的资深工程师倾力撰写。这本书是Java企业级开发者的必备参考书籍,它揭示了在复杂的企业级应用开发中,如何有效地利用...

    Head-First-Design-Patterns-master.zip

    《Head First设计模式》是一本深受开发者喜爱的设计模式入门书籍,其官方源码库"Head-First-Design-Patterns-master.zip"包含了书中所讲解的各种设计模式的实际代码示例,旨在帮助读者更深入地理解并应用这些模式。...

    hyphenation-patterns, 用于Hypher的断字模式.zip

    hyphenation-patterns, 用于Hypher的断字模式 浏览器你可以从 dist/browser 目录获取预构建语言模式,并在浏览器中将它们与Hypher一起使用。 npm封装要构建npm包,请运行 Makefile 。 要发布它们,你需要成为维护者...

Global site tag (gtag.js) - Google Analytics