JavaEE应用程序
一直想写一些关于JavaEE的东西,从刚開始看《Ejb in Action》的时候就想写,总是感觉自己知道的太少了、太不值得一提了、太欠缺了(我太谦虚了)……哈哈哈。到后来工作中一直在使用JavaEE的相关技术。开源的那些流行框架(SSH以及以Spring为核心的Spring家族的东西)丢的也差点儿相同了。工作的时候JavaEE企业级的东西把自己搞的也跟傻子似的。回过头来看看总结一下避免自己真的成了傻子。
先从“组件”(component)说起,不知道从什么时候開始人们希望软件开发就像孩子搭积木似的能够是组装的。随之而来的一个概念就是“组件”,用专业一些的话说就是“组件是一个自包括的、能够重用的软件单元,能够把它集成到应用程序中”。更加直白一些说就是一块积木是能够独立完毕一项任务的,并且这个块积木是能够被多个地方使用的(想想螺丝、螺母大一些的话想想发动机、变速器相信能帮助读者理解“组件”这个概念)。在Java中组件的最简单形式是JavaBean。我们通常叫bean。
讲到这刚開始学习的人听到这个词会骂街。猪八戒,猪悟能、猪刚鬣、木母、净坛使者、天蓬元帅一堆名字到头来不就是一头猪么!
什么bean,Javabean到头来不就是Java中的类么。
骂街归骂街,不同的名称在不同的地方是有意义的。
天蓬元帅指这头猪在天庭当官时候的称呼,猪八戒是这头猪跟了唐僧之后的称呼,猪刚鬣是猪在高老庄时期的称呼……好像说远了。总之要说的是不同的名称所包括的意义以及要反应的东西是有差别的千万不要一叶障目。如今JavaBean的这个名字你理解了吧?
在企业范围内,组件更专注于实现业务服务。同一时候依据组件可运行的业务操作定义组件的协定。Java EE的标准组件模型是EJB模型,它定义了包装、部署以及与自包括业务服务进行交互的方式。
EJB的类型决定了须要与之交互的协定。会话bean(Session bean)使用标准的Java接口来定义能够调用的业务方法集合。而消息驱动bean(message-driven bean)的行为取决于bean旨在接受的消息类型和格式。
上面的这段话是非常官方的。总结成接地气的话就是在JavaEE领域不同类型的组件有着其自身的规范,这些组件能够依照其自身的规范来完毕业务服务。
啊。好抽象……
在我们平时开发其中时候使用组件模型是可选的,一般来说能够用会话bean的容器服务也可用servet。
结果导致如今大多数Web应用程序全然避开了EJB,直接从Servet到数据库。
这也导致了以Spring为核心的Spring家族以及类Spring家族的开源框架的蓬勃发展。
在使用组件的时候我们须要以层的形式组织应用程序,其中业务服务处于组件模型中。且表示服务层位于它之上(你可能在想MVC了。就笔者如今的理解EJB与MVC的关系不是包括也不是并列的关系。他们是……以后再说)。
眼下之所以非常多Web应用程序不选择EJB是因为历史上EJB的复杂性。相对于EJB2来说EJB3吸收了非常多开源框架的思想,眼下能够说已经非常easy了。随着复杂性这个问题得到解决人们開始渐渐的收获定义明白的业务服务集合所带给应用程序的优点。(拗口吧,意思就是EJB已经不像之前那么不复杂了,牛X了,開始好用了,嚯哈哈哈)。
l 松散耦合(oose couping)。以组件的思想组织业务逻辑,更easy写出松耦合的代码。
l 依赖性管理(dependencymanagement)。不管是注解还是配置文件。容器和人(主要是人)都能一目了然。
l 生命周期管理(ifecyce management)。组件由容器定义和管理能够统一处理资源的获取和释放。
l 声明性容器服务(decarativecontainer service)。组件的业务方法是由应用server所截获。所以并发性、事务管理、安全性以及远程处理这些服务不须要分散开发者过多的精力。
l 可移植性(portabiity)。一个应用程序在Tomcat下能跑那么Gassfish也能用。在Webogic下没问题那么Jboss下也不会有太大的问题,讲到这IIS不吭声了。
l 可扩展性和可靠性(scaabiity and reiabiity)。
应用server旨在确保组件能够有效地实现可扩展性管理。依据组件的类型和server配置,使用组件实现的业务操作能够重试失败了的方法调用,或者甚至把故障转移到集群上的还有一台server(考虑RMI)。
JavaEE应用程序的更多相关文章
- JavaEE
1. 为什么需要JavaEE 我们编写的JSP代码中,由于大量的显示代码和业务逻辑混淆在一起,彼此嵌套,不利于程序的维护和扩展.当业务需求发生变化的时候,对于程序员和美工都是一个很重的负担. 为了程 ...
- JavaEE基本了解
1. 为什么需要JavaEE 我们编写的JSP代码中,由于大量的显示代码和业务逻辑混淆在一起,彼此嵌套,不利于程序的维护和扩展.当业务需求发生变化的时候,对于程序员和美工都是一个很重的负担. 为了程 ...
- JavaEE中遗漏的10个最重要的安全控制
本文由码农网 – 小峰原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! JavaEE有一些超赞的内置安全机制,但它们远远不能覆盖应用程序要面临的所有威胁.很多常见攻击,例如跨站点脚本攻 ...
- JavaEE(24) - JAAS开发安全的应用
1. 安全域.角色和用户组 容器提供的两种安全性控制:声明式安全控制和编程式安全控制 安全域是指用户.用户组和ACL的逻辑集合.服务器支持的两种常用安全域:RDBMS安全域和文件系统安全域. 2. J ...
- JavaEE(12) - JPA规范及实现(TopLink和Hibernate)
1. JPA规范与ORM框架之间的联系 JPA规范并不属于EJB3规范,它是一套完全独立的规范,不仅可以在基于EJB的JavaEE应用程序中使用,而且完全可以在普通JavaSE应用程序中使用. JPA ...
- JavaEE介绍
相关术语 为什么需要JavaEE 我们编写的JSP代码中,由于大量的显示代码和业务逻辑混淆在一起,彼此嵌套,不利于程序的维护和扩展.当业务需求发生变化的时候,对于程序员和美工都是一个很重的负担.为了程 ...
- 详细解释什么是JavaEE?
也许你学习了那么久的Java了,但如果有人问你什么是JavaEE?你会怎么回答他呢?在此我来谈谈关于JavaEE的相关技术.(仅是个人见解) 在谈JavaEE时,我们首先来了解一下Java平台.目前, ...
- 15.Servlet程序结构与部署
1.JavaEE应用程序结构 组成:Servlet JSP 工具类 第三方jar包,HTML页面(图片.Flash) 部署结构: JavaEE应用根目录下的资源都是允许客户端访问的(WEB-IN ...
- Java开发之javaEE(java2EE)的介绍,java软件工程师初步阶段知识
1. 为什么需要JavaEE 我们编写的JSP代码中,由于大量的显示代码和业务逻辑混淆在一起,彼此嵌套,不利于程序的维护和扩展.当业务需求发生变化的时候,对于程序员和美工都是一个很重的负担. 为了程序 ...
随机推荐
- **Git本地仓库图解
Git基本概念 在Git中,我们将需要进行版本控制的文件目录叫做一个仓库(repository),每个仓库可以简单理解成一个目录,这个目录里面的所有文件都通过Git来实现版本管理,Git都能跟踪并记录 ...
- Angular2响应式表单-翻译与概括官网REACTIVE FORMS页面
本文将半翻译半总结的讲讲ng2官网的另一个未翻译高级教程页面. 原文地址. 文章目的是使用ng2提供的响应式表单技术快速搭出功能完善丰富的界面表单组件. 响应式表单是一项响应式风格的ng2技术,本文将 ...
- magento 开启模板路径提示
1.进入后台system->configuration->,选择main Website 2.advanced->developer中,将Debug中的Template Path H ...
- UVA12096 集合栈计算机(map和vector实现双射关系+集合的交并运算的STL)
题目大意: 对于一个以集合为元素的栈,初始时栈为空. 输入的命令有如下几种: PUSH:将空集{}压栈 DUP:将栈顶元素复制一份压入栈中 UNION:先进行两次弹栈,将获得的集合A和B取并集,将结果 ...
- Codeforces #447 Div2 D
#447 Div2 D 题意 给一棵完全二叉树,每条边有权值为两点间的距离,每次询问 \(x, h\) ,从结点 \(x\) 出发到某一结点的最短路的距离 \(d\) 如果小于 \(h\) ,则答案加 ...
- 简单的INSERT语句
INSERT INTO 语句用来向数据表中插入数据,比如执行下面的语句就可以向T_Person表中插入一条数据: INSERT INTO T_Person(FName,FAge,FRemark) VA ...
- python url拼接
import datetime,requests import json,time,urllib import hashlib self.url_domain = “www.baidu,com/” u ...
- python3-开发进阶Django-debug-toolbar的配置和Django logging的配置
阅读目录 django-debug-toolbar的配置 Django logging的配置 一.django-debug-toolbar的配置 1.介绍 django-debug-toolbar 是 ...
- python3全栈开发-并发编程,多线程
一.什么是线程 在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程 线程顾名思义,就是一条流水线工作的过程,一条流水线必须属于一个车间,一个车间的工作过程是一个进程 车间负责把资源整合 ...
- UML及其StarUML介绍
http://blog.csdn.net/monkey_d_meng/article/details/6005764 http://www.uml.org.cn/oobject/200901203.a ...