jee开发技术Word格式文档下载.docx
《jee开发技术Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《jee开发技术Word格式文档下载.docx(77页珍藏版)》请在冰豆网上搜索。
应用程序的逻辑根据其实现的不同功能被封装到组件中,组成J2EE应用程序的大量应用程序组件根据在其所属的多层的J2EE的环境中所处的层被安装到不同的机器中。
下图2-01所示为多层的J2EE应用程序被分为不同的层,包含了如下4个部分:
(1)运行在客户端机器的客户层组件。
(2)运行在J2EE服务器中的Web层组件。
(3)运行在J2EE服务器中的商业层组件。
(4)运行在EIS服务器中的企业信息系统(EIS)层软件。
图2-01J2EE体系结构
一个多层的分布式的应用模型意味着应用逻辑被根据功能而划分成组件,并且可以在同一个服务器或不同的服务器上安装组成J2EE应用的这些不同的组件。
一个应用组件应被安装在什么地方,取决于该应用组件属于该多层的J2EE环境中的哪一层。
这些层是客户层、Web层、业务层及企业信息系统层(EIS)。
客户层(ClientTier)
J2EE应用可以是基于Web的,也可以是不基于Web的。
在一个基于Web的J2EE应用中,用户的浏览器在客户层中运行,并从一个Web服务器上下载Web层中的静态HTML页面或由JSP或Servlet生成的动态HTML页面。
在一个不基于Web的J2EE应用程序中,一个独立客户程序,或者不运行在一个HTML页面中,而是运行在其它一些基于网络的系统(比如手持设备或汽车电话)中的applet程序,在客户层中运行,并在不经过Web层的情况下访问EnterpriseBeans。
该不基于Web的客户层可能也包括一个JavaBeans类来管理用户输入,并将该输入发送到在企业层中运行的EnterpriseBean类来处理。
根据J2EE规范,JavaBeans类不被视为组件。
为J2EE平台编写的JavaBeans类有实例变量和用于访问实例变量中的数据的“getter和setter方法”。
以此种方式使用的JavaBeans类在设计和实现上通常都是简单的,但是它们必须符合JavaBeans规范中列出的命名和设计约定。
Web层
J2EEWeb组件可以由JSP页面、基于Web的applets以及显示HTML页面的Servlet组成。
调用Servlet或者JSP页面的HTML页面在应用程序组装时与Web组件打包在一起。
就像客户层一样,Web层可能包括一个JavaBeans类来管理用户输入,并将输入发送到在业务层中运行的EnterpriseBeans类来处理。
运行在客户层的Web组件依赖容器来支持诸如客户请求和响应及EnterpriseBean查询等。
业务层
作为解决或满足某个特定业务领域(比如银行、零售或金融业)的需要的逻辑业务代码由运行在业务层的EnterpriseBeans来执行。
一个EnterpriseBean从客户程序处接收数据,对数据进行处理(如果需要),再将数据发送到企业信息系统层存储。
一个EnterpriseBean还从存储中检索数据,并将数据送回客户程序。
运行在业务层的EnterpriseBeans依赖于容器来为诸如事务、生命期、状态管理、多线程及资源存储池提供通常都非常复杂的系统级代码。
业务层经常被称作EnterpriseJavaBeans(EJB)层。
业务层和Web层一起构成了3层J2EE应用的中间层,而其它两层是客户层和企业信息系统层。
企业信息系统层
企业信息系统层运行企业信息系统软件,这层包括企业基础设施系统,例如企业资源计划(ERP)、大型机事务处理(MainframeTransactionProcessing)、数据库系统及其他遗留信息系统(LegacyInformationSystems)。
J2EE应用组件因为某种原因(例如访问数据库)可能需要访问企业信息系统。
注意:
J2EE平台的1.3版本支持Connector架构,该架构是将J2EE平台连接到企业信息系统上的一个标准API。
3.1.3J2EE组件
J2EE应用程序由组件组成。
一个J2EE组件就是一个自带功能的软件单元,它随同它相关的类和文件被装配到J2EE应用程序中,并实现与其它组件的通信。
J2EE规范是这样定义J2EE组件的:
(1)客户端应用程序和applet是运行在客户端的组件。
(2)JavaServlet和JavaServerPages(JSP)是运行在服务器端的Web组件。
(3)EnterpriseJavaBean(EJB)组件(EnterpriseBean)是运行在服务器端的商业组件。
J2EE组件由Java语言编写的,并和用该语言写成的其它程序一样进行编译。
J2EE组件和“标准的”Java类的不同点在于:
它被装配在一个J2EE应用程序中,具有固定的格式并遵守J2EE规范,它被部署在产品中,由J2EE服务器对其进行管理。
3.1.4J2EE技术
J2EE中包括以下技术:
●EnterpriseJavaBeans(EJB)技术
●JavaInterfaceDefinitionLanguage(IDL)
●JavaMessageService(JMS)API
●JavaNamingandDirectoryInterface(JNDI)
●JavaRemoteMethodInvocation(RMI)和ObjectSerialization
●JavaServletAPI
●JavaTransactionAPI(JTA)
●JavaTransactionService(JTS)
●JavaServerPages(JSP)技术
●JDBC数据库访问API
J2EE平台由一整套服务(Services)、应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持,下面对J2EE中的13种技术规范进行简单的描述(限于篇幅,这里只能进行简单的描述):
1、JDBC(JavaDatabaseConnectivity)
JDBCAPI为访问不同的数据库提供了一种统一的途径,象ODBC一样,JDBC对开发者屏蔽了一些细节问题,另外,JDCB对数据库的访问也具有平台无关性。
2、JNDI(JavaNameandDirectoryInterface)
JNDIAPI被用于执行名字和目录服务。
它提供了一致的模型来存取和操作企业级的资源如DNS和LDAP,本地文件系统,或应用服务器中的对象。
3、EJB(EnterpriseJavaBean)
J2EE技术之所以赢得某体广泛重视的原因之一就是EJB。
它们提供了一个框架来开发和实施分布式商务逻辑,由此很显著地简化了具有可伸缩性和高度复杂的企业级应用的开发。
EJB规范定义了EJB组件在何时如何与它们的容器进行交互作用。
容器负责提供公用的服务,例如目录服务、事务管理、安全性、资源缓冲池以及容错性。
但这里值得注意的是,EJB并不是实现J2EE的唯一途径。
正是由于J2EE的开放性,使得有的厂商能够以一种和EJB平行的方式来达到同样的目的。
4、RMI(RemoteMethodInvoke)
正如其名字所表示的那样,RMI协议调用远程对象上方法。
它使用了序列化方式在客户端和服务器端传递数据。
RMI是一种被EJB使用的更底层的协议。
5、JavaIDL/CORBA
在JavaIDL的支持下,开发人员可以将Java和CORBA集成在一起。
他们可以创建Java对象并使之可在CORBAORB中展开,或者他们还可以创建Java类并作为和其它ORB一起展开的CORBA对象的客户。
后一种方法提供了另外一种途径,通过它Java可以被用于将你的新的应用和旧的系统相集成。
6、JSP(JavaServerPages)
JSP页面由HTML代码和嵌入其中的Java代码所组成。
服务器在页面被客户端所请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。
7、JavaServlet
Servlet是一种小型的Java程序,它扩展了Web服务器的功能。
作为一种服务器端的应用,当被请求时开始执行,这和CGIPerl脚本很相似。
Servlet提供的功能大多与JSP类似,不过实现的方式不同。
JSP通常是大多数HTML代码中嵌入少量的Java代码,而Servlet全部由Java写成并且生成HTML。
8、XML(ExtensibleMarkupLanguage)
XML是一种可以用来定义其它标记语言的语言。
它被用来在不同的商务过程中共享数据。
XML的发展和Java是相互独立的,但是,它和Java具有的相同目标正是平台独立性。
通过将Java和XML的组合,您可以得到一个完美的具有平台独立性的解决方案。
9、JMS(JavaMessageService)
MS是用于和面向消息的中间件相互通信的应用程序接口(API)。
它既支持点对点的域,有支持发布/订阅(publish/subscribe)类型的域,并且提供对下列类型的支持:
经认可的消息传递,事务型消息的传递,一致性消息和具有持久性的订阅者支持。
JMS还提供了另一种方式来对您的应用与旧的后台系统相集成。
10、JTA(JavaTransactionArchitecture)
JTA定义了一种标准的API,应用系统由此可以访问各种事务监控。
11、JTS(JavaTransactionService)
JTS是CORBAOTS事务监控的基本的实现。
JTS规定了事务管理器的实现方式。
该事务管理器是在高层支持JavaTransactionAPI(JTA)规范,并且在较底层实现OMGOTSspecification的Java映像。
JTS事务管理器为应用服务器、资源管理器、独立的应用以及通信资源管理器提供了事务服务。
12、JavaMail
JavaMail是用于存取邮件服务器的API,它提供了一套邮件服务器的抽象类。
不仅支持SMTP服务器,也支持IMAP服务器。
13、JAF(JavaBeansActivationFramework)
JavaMail利用JAF来处理MIME编码的邮件附件。
MIME的字节流可以被转换成Java对象,或者转换自Java对象。
大多数应用都可以不需要直接使用JAF。
3.1.5J2EE应用程序的部署和角色
J2EE组件(applets、应用的客户、EnterpriseBeans、JSP页面及Servlet)都被打包成模块,并以JavaARchive(JAR)文件的形式交付。
一个模块由相关的组件、相关的文件及描述如何配置组件的配置描述文件(DeploymentDescriptor)组成。
部署描述符描述了被其相关组件(比如安全性、事务语义、初始化参数)的一个特定部署实例所使用的容器服务和组件的可配置属性。
模块和应用程序部署描述文件被组装到运行在特定容器环境内部的具体应用中。
应用程序部署描述文件实际上是以如此方式被定义以便多模块类型可以组装到一个结合紧密的应用中,条件是J2EE提供商要如此选择(例如,把Web模块和多个EJB模块组合在一起来创建一个集成的Web应用)。
例如,在组装过程中,一个HTML页面和servlet被打包进一个模块之中,该模块包含该HTML文件、servlet组件及相关的配置描述文件,并以一个WebARchive(WAR)文件的形式交付,该WAR文件是一个带.war扩展名的标准JAR文件。
使用模块使得利用相同的组件中的某些组件来组装不同的J2EE应用程序成为可能。
例如,一个J2EE应用程序的Web版可能有一个EnterpriseBean组件,还有一个JSP页面组件。
该EnterpriseBean组件可以与一个应用客户组件结合,以生成该应用程序的非Web版本。
模块、应用程序以及与之相关的部署描述符也被部署在其自身JAR(Java归档)文件类型中。
一个Web模块部署在.war为扩展名的Web应用程序归档(WAR)文件中;
EJB模块部署在一个具有.jar扩展名的EJBJAR文件中,由一个或者多个J2EE模块组成的企业应用程序部署在一个以.ear为扩展名的企业归档(EAR)文件中。
这不需要进行额外的编码,只是一个装配和部署的问题。
并且,可再用组件使得将应用开发和部署过程划分成由不同的角色来完成成为可能,这样不同的人或者公司就能完成封装和部署过程的不同部分。
J2EE平台定义了如下角色:
(1)J2EE产品提供商(J2EEProductProvider)
设计并使J2EE平台、API和在J2EE规范中定义的其他特征能被其它公司或人购得的公司。
(2)应用组件提供商(ApplicationComponentProvider)
创建用于J2EE应用程序的Web组件、EnterpriseBean组件、applets或应用客户程序的公司或个人。
在装配过程中,应用组件文件、接口及类被打包进一个JAR文件中。
(3)应用程序装配商(ApplicationAssembler)
从组件提供商获得应用组件JAR文件,并将它们组装成一个J2EE应用的EnterpriseARchive(EAR)文件的公司或个人,此种文件是一个带.ear扩展名的标准文件。
应用装配商提供与该应用程序相关的整体信息,并使用验证工具来检验EAR文件的内容是正确的。
组装和部署信息存储在一个基于文本的配置描述文件中,此种文件使用XML标记来标记该文本。
应用装配商可以按照第7章“设计企业应用”的描述直接编辑该配置描述文件,或者使用一个能通过交互式选择来正确添加XML标记的装配和配置工具来编辑该配置描述文件。
(4)部署商(Deployer)
部署J2EE应用程序的公司或个人。
职责包括设定事务控制、安全属性,并根据应用组件提供商提供的指示来标明一个EnterpriseBean是自己处理自身的存储,还是由一个容器来处理等。
部署涉及配置和安装。
在配置过程中,部署商遵循应用组件提供商提供的指示来解决外部依赖问题,定义安全设定,以及分配事务属性。
在安装过程中,部署商将应用组件安装到服务器上,并生成容器特定的类和接口。
(5)系统管理员(SystemAdministrator)
配置并管理运行J2EE应用程序的计算环境和网络基础设施,并监督运行时环境的人员。
(6)工具提供商(ToolProvider)
生产被组件提供商、装配商及部署商使用的用于进行开发、组装和打包的工具的公司或个人。
3.2Web应用程序概述
做过MIS系统的人一般都知道C/S编程,及客户/服务器模式。
Web应用程序是一种特殊的客户/服务器应用,只不过在Web编程中,客户端是浏览器,而服务器端是Web或应用服务器。
下面介绍Web浏览器、Web或应用服务器及在J2EE中Web应用程序结构。
3.2.1Web浏览器
Web浏览器是一种应用程序,它的基本功能是把GUI(图形用户界面)请求转换为HTTP(超文本传输协议)请求,并把HTTP响应转换为GUI显示内容。
当然,HTTP请求将被发送给Web服务器,而HTTP响应则是接收来自Web服务器。
针对Web内容的请求将被强制转换为URL格式,而URL则用于在因特网上识别可理解的远端资源媒体。
Web响应往往表现为Web页面文档的格式,其中Web页面包含多媒体和基于HTML的表现内容,例如文本、静态和动态图像、超链接、GUI组件、音频剪辑和视频剪辑。
此外,由外部句柄、Java小应用程序以及可执行的浏览器脚本描述语言命令(如JavaScript)所组成的被引用文档也可以在HTTPWeb响应中返回。
因为HTTP是万维网(WorldWideWeb,WWW)的标准协议,所以Web浏览器也就成为万维网的GUI窗口。
然而,当前Web浏览器的GUI构件类型、大多数HTTP连接的带宽,以及HTTP本身的特性都限制了目前基于Web浏览器文档内容的GUI设计。
某些Web浏览器可利用更多成熟的交互式GUI组件,但是它们往往需要以标准一致性或是额外的带宽开销为代价。
正因如此,所以大多数Web浏览器Web页面的设计技巧趋向于为能在因特网上使用而限制所支持的核心多媒体特性,并且限制Web页面的表现特性为一些与HTML相关的表现特性。
Web浏览器的核心部分是一个主控制进程,它管理信息的高速缓存和状态管理,管理Web请求和处理响应,调用浏览器特性的配置,并且驱动Web页面内容的基本表现。
请求处理程序把基于GUI的请求映射为HTTP网络请求,响应处理器则把HTTP响应映射为基于GUI的事件以及所请求的显示内容。
每个请求和响应都从网络接口处双向驱动HTTP数据的I/O。
HTTP协议用于不安全的连接,而HTTPS协议则用于基于SSL的HTTP连接。
现在存在多种Web浏览器,其中最为常用的是NetscapeCommunicator和微软的InternetExplorer两种产品。
3.2.2Web服务器
Web服务器是服务器端的应用程序,它的主要功能是处理或者转发HTTP请求,并生成或者路由HTTP响应。
Web服务器有多种类型,并能支持多种需求。
最初始的Web服务器形式可能就是简单接收GET和POST请求,依据所请求的URL读取本地文件,并把文件数据以流的形式传送给Web客户端。
高端企业级Web服务器支持可扩缩客户端的并发请求数目,实现某种形式的安全访问控制机制,并且支持用于扩展Web服务器功能的多种API,能够以应用相关的格式动态生成Web文档。
本节介绍Web服务器的通用结构。
3.2.3基于J2EE的Web应用程序
基于Web的应用程序是基于浏览器的,并且,如果它们运行在Internet上的话,可能被全世界的人访问。
当设计一个基于Web的应用程序时,不仅需要决定用什么来处理内容和应用逻辑(HTML、XML、JSP页面及Servlet),而且还应当考虑使该应用程序国际化。
一个国际化的基于Web的应用程序向用户提供了选择一种语言,然后,根据该选定语言加载应用的正文的方式。
对被支持的每种语言而言,应用正文都被存储在一个外部文件中,并且,与另外一个文件的关键词相对应。
应用代码使用这些关键词以及选定的语言来加载正确的文本。
国际化API还提供类来根据选定的语言来格式化日期和金钱。
一旦制订了使应用程序国际化的细节,我们就可以决定用什么来实现它了。
总体来说,一个基于Web的应用程序使用HTML来显示数据;
用XML来定义数据以使其可被另一个程序读取并处理;
使用JSP页面或Servlet来管理用户与业务层或存储层之间的数据流。
可以在J2EE平台上实现的基于Web的应用程序有四种。
从简单到复杂排列,它们是:
●基本HTML
●JSP或Servlet生成的HTML
●使用JavaBean类的JSP页面
●将应用逻辑根据功能划分成区域的高度结构化的应用
当设计一个基于Web的应用程序时,需要决定用什么来建立它。
并且,如果我们是从建立一个简单的应用程序开始着手的话,如果认为以后会给该应用程序添加功能,那么,设计应当适应今后发展的需要。
下面的内容通过比较JSP页面和Servlet,来帮助我们做出某些设计决定。
3.2.4Servlet和JSP页面
Servlet是实现动态内容的一种简便的、平台独立的、Web服务器独立的方式。
JSP页面是开发Servlet的一种基于文本的、以显示为中心的方式。
JSP页面提供了Servlet的所有好处,并且,当与一个JavaBeans类结合在一起时,提供了一种使内容和显示逻辑分开的简单方式。
分开内容和显示逻辑的好处是,更新页面外观的人员不必懂得Java代码,而更新JavaBeans类的人员也不必是设计网页的行家里手。
JSP页面和Servlet都比公共网关接口(CGI)更可取,因为CGI不是平台独立的,使用了更多系统开销,而且没有一个简单的方法来访问参数数据,并将这些数据发送给一个程序。
可以用带JavaBeans类的JSP页面来定义Web模板,以建立一个由具有相似的外观的页面组成的网站。
JavaBeans类完成数据提供,这样在模板中就没有Java代码,这意味着这些模板可以由一个HTML编写人员来维护。
在选择使用一个servlet,还是一个JSP页面时,要记住的是,Servlet是一个程序设计工具,它最适用于不需要频繁修改的低级应用功能;
而JSP页面则通过以显示为中心的描述性的方法将动态内容和逻辑结合在一起。
对于一个使用一个JSP页面的简单的基于Web的应用程序,我们可以使用定制标记或者scriptlets,而不是使用JavaBeans类来将内容与应用逻辑结合起来。
定制标记被打包到一个标记库中,并被引入到一个JSP页面中。
Scriptlets是直接嵌入在JSP页面中的很小的Java代码段。
模型、视图和控制器架构(Model-View-ControllerArchitecture)
在基于组件的J2EE平台充分内置了灵活性的情况下,剩下的问题可能是如何组织应用程序以实现简单高效的应用程序升级和维护,以及如何让