JavaEE应用程序(未排版)

一直想写一些关于JavaEE的东西,从刚开始看《Ejb in Action》的时候就想写,到后来工作中一直在使用JavaEE的技术,开源的流行框架丢的也差不多了。JavaEE企业级的东西把自己搞的也跟傻子似的。回过头来看看避免自己真的成了傻子。

先从“组件”(component)说起,不知道从什么时候开始人们希望软件开发就像孩子搭积木似的可以是组装的。随之而来的一个概念就是“组件”用专业一些的话说就是“组件是一个自包含的、可以重用的软件单元,可以把它集成到应用程序中”更加直白一些说就是一块积木是可以独立完成一项任务的,而且这个块积木是可以被多个地方使用的(想想螺丝螺母、发动机相信能帮助读者理解这个概念)。在Java中组件的最简单形式是JavaBean,我们通常叫bean初学者听到这个词会骂街,猪八戒,猪悟能、猪刚鬣、木母、净坛使者、天蓬元帅一堆名字到头来不就是一头猪么。什么bean,Javabean到头来不都是Java中的类么。骂街归骂街不同的名称在不同的地方是有意义的。天蓬元帅值这头猪在天庭当官时候的称呼,猪八戒是这头猪跟了唐僧之后的称呼,猪刚鬣是猪在高老庄时期的称呼……好像说远了,总之要说的是不同的名称所包含的意义以及要反应的东西是有区别的千万不要一叶障目。

在企业范围内,组件更专注于实现业务服务,同时根据组件可执行的业务操作定义组件的协定。Java EE的标准组件模型是EJB模型,它定义了包装、部署以及与自包含业务服务进行交互的方式。EJB的类型决定了需要与之交互的协定。会话bean(Session bean)使用标准的Java接口来定义可以调用的业务方法集合,而消息驱动bean(message-driven bean)的行为取决于bean旨在接受的消息类型和格式。

在我们平时开发当中时候使用组件模型是可选的,一般来说可用户会话bean的容器服务也可用户servlet。结果导致现在大多数Web应用程序完全避开了EJB,直接从Servlet到数据库。使用组件需要以层的形式组织应用程序,其中业务服务处于组件模型中,且表示服务层位于它之上。

目前之所以很多Web应用程序不选择EJB是由于历史上EJB的复杂性。随着这个问题得到解决人们渐渐的收获定义明确的业务服务集合所带给应用程序的好处。

l  松散耦合(loosecoupling)。使用组件来定义服务鼓励了应用程序的层之间的松散耦合。更改一个组件的实现对客户端或其他依赖与它的组件没有任何影响。

l  依赖性管理(dependency management)。组建的依赖性可以在元数据中声明,并由容器自动解析。

l  声明周期管理(Lifecycle management)。组件的生命周期又应用服务器明确定义和管理。组件实现可以参与声明周期操作来获取和释放资源,或者执行其他的初始化和关闭行为。

l  声明性容器服务(declarative container service)。组件的业务方法是由应用服务器所截获,以应用注入并发性、事务管理、安全性以及远程处理之类的服务。

l  可移植性(portability)。对于遵守JavaEE标准并部署到基于标准的服务器上的组件,额可以更加轻松地把它们从一个兼容服务器移植到另一个服务器。

l  可扩展性和可靠性(scalability and reliability)。应用服务器旨在确保组件可以有效地实现可扩展性管理。根据组件的类型和服务器配置,使用组件实现的业务操作可以重试失败了的方法调用,或者甚至把故障转移到集群上的另一台服务器。

时间: 2024-10-20 15:37:15

JavaEE应用程序(未排版)的相关文章

vs项目,点击.sln文件时出错:“项目所需的应用程序未安装,确保已安装项目类型(.csproj)的应用程序”解决办法

关键词:VS2005程序用VS2008打开 程序无法使用 项目所需的应用程序未安装,确保已安装项目类型(.csproj)的应用程序 在要打开的项目sln文件上右键,打开方式,不要用Micrisoft visual studio version selector,用D:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe打开. vs项目,点击.sln文件时出错:"项目所需的应用程序未安装,确保已安装项目类型(.cspro

delphi 如何判断应用程序未响应

http://www.cnblogs.com/smallmuda/archive/2009/07/24/1529845.html delphi 如何判断应用程序未响应 今天在MSN的核心讨论组上看到两篇文章.讨论的乃是应用程序是否没有响应.原文如下:           >   How   is   it   possible   to   determine   a   process   is   "not   responding"   like   NT   Task  

其他信息: 具有固定名称“Npgsql”的 ADO.NET 提供程序未在计算机或应用程序配置文件中注册或无法加载。有关详细信息,请参阅内部异常

其他信息: 具有固定名称“Npgsql”的 ADO.NET 提供程序未在计算机或应用程序配置文件中注册或无法加载.有关详细信息,请参阅内部异常 解决方法 在 App.config 的 configuration 中加入下面的内容  其中 红底部分是你调用的Npgsql的版本号 <system.data> <DbProviderFactories> <remove invariant="Npgsql"/> <add name="Npgs

oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序

15511477451 原文 oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序? 环境:win7 64位系统.oracle11g数据库 问题描述:在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错.错误提示内容如下. 错误分析: 经过查看警告中给出的日志文件 F:\develop\oracle_data\app\Administrator\cfgtoollog

Android_程序未处理异常的捕获与处理

1.简单介绍 对于程序抛出的未被捕获的异常,可能会导致程序异常退出,界面不友好且应记录关键错误信息上传至server. 这里主要使用UncaughtExceptionHandler 2.代码实现 public class CrashHandler implements UncaughtExceptionHandler { public static final String TAG = CopyOfCrashHandler.class.getSimpleName(); // 系统默认的Uncau

无状态会话bean(3)---远程业务接口(未排版)

迄今为止,我们只讨论了使用一个本地业务接口的会话bean.在这种情况下,本地意味着只能由运行在同一个应用程序服务器实例的JavaEE组件声明会话bean的依赖性.例如,远程客户端不可能通过本地接口使用会话bean. 为了容纳远程客户端,会话bean可以采用@Remote注解来标记它们的业务接口,以声明它是远程可用的.下面代码演示了前面所示的HelloService接口的远程版本语法.标记一个接口为远程的相当于使其扩展java.rmi.Remote接口.客户端获取的bean的引用不再是服务器上的一

JavaEE应用程序

一直想写一些关于JavaEE的东西,从刚開始看<Ejb in Action>的时候就想写,总是感觉自己知道的太少了.太不值得一提了.太欠缺了(我太谦虚了)--哈哈哈.到后来工作中一直在使用JavaEE的相关技术.开源的那些流行框架(SSH以及以Spring为核心的Spring家族的东西)丢的也差点儿相同了.工作的时候JavaEE企业级的东西把自己搞的也跟傻子似的.回过头来看看总结一下避免自己真的成了傻子. 先从"组件"(component)说起,不知道从什么时候開始人们希望

编写一个简单的javaEE加法程序

一 .javaEE的安装及环境配置 工具: 32位系统准备eclipse-jee-mars-2-win32.zip,64位系统准备eclipse-jee-mars-2-win32-x86_64.zip jdk1.7 maven3.3.9.rar m2.rar 环境配置: 1. 设置eclipse的配置文件eclipse.ini,修改虚拟机路径,在-vmargs之前添加 -vm E:\jee\jdk1.7\bin\javaw.exe 注意:用写字板打开修改,-vm有的电脑要换行,有的电脑不用换行

oracle server配置:监听程序未启动或数据库服务未注册到该监听程序

第一次安装oracle时,时完全没有任何问题的, 但是当我去配置oracle_home时,误按之下进入了Database Configuration Assistant, 然后配置已有的一个数据库,就出现问题了,弹出上面这个对话框,怎么也配置不了, 直接进入net manager中去配置tnsname.ora和listener.ora都一直验证失败, 查询了许多资料,左右了半天,综与明白一定是“数据库服务未注册到该监听程序”, 本着从什么地方跌倒就从什么地方爬起来, 所以我最终回到Databas