
1、 描述一下你对J2EE的认识
J2EE(Java 2 Platform,Enterprise Edition)是SUN公司定义的一个开发分布式企业级应用的规范。它提供了一个多层次的分布式应用模型和一系列开发技术规范。多层次分布式应用模型是指根据功能把应用逻辑分成多个层次,每个层次支持相应的服务器和组件,组件在分布式服务器的组件容器中运行(如Servlet组件在Servlet容器上运行,EJB组件在EJB容器上运行),容器间通过相关的协议进行通讯,实现组件间的相互调用。遵从这个规范的开发者将得到行业的广泛支持,使企业级应用的开发变得简单、快速。
2、J2EE标准规定有那六种角色?
A、J2EE产品提供商
B、工具提供者商
C、应用组件提供商
D、应用程序组装者
E、部署者
F、系统管理员
3、 说出J2EE包括那些技术,并对其进行简单描述(至少说出六中)
J2EE平台由一整套服务(Services)、应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持,下面对J2EE中的13种技术规范进行简单的描述(限于篇幅,这里只能进行简单的描述):
·JDBC(Java Database Connectivity):
JDBC API为访问不同的数据库提供了一种统一的途径,象ODBC一样,JDBC对开发者屏蔽了一些细节问题,另外,JDCB对数据库的访问也具有平台无关性。
·JNDI(Java Name and Directory Interface):
JNDI API被用于执行名字和目录服务。它提供了一致的模型来存取和操作企业级的资源如DNS和LDAP,本地文件系统,或应用服务器中的对象。
·EJB(Enterprise JavaBean):
J2EE技术之所以赢得某体广泛重视的原因之一就是EJB。它们提供了一个框架来开发和实施分布式商务逻辑,由此很显著地简化了具有可伸缩性和高度复杂的企业级应用的开发。EJB规范定义了EJB组件在何时如何与它们的容器进行交互作用。容器负责提供公用的服务,例如目录服务、事务管理、安全性、资源缓冲池以及容错性。但这里值得注意的是,EJB并不是实现J2EE的唯一途径。正是由于J2EE的开放性,使得有的厂商能够以一种和EJB平行的方式来达到同样的目的。
·RMI(Remote Method Invoke):
正如其名字所表示的那样,RMI协议调用远程对象上方法。它使用了序列化方式在客户端和服务器端传递数据。RMI是一种被EJB使用的更底层的协议。
·Java IDL/CORBA:
在Java IDL的支持下,开发人员可以将Java和CORBA集成在一起。 他们可以创建Java对象并使之可在CORBA ORB中展开, 或者他们还可以创建Java类并作为和其它ORB一起展开的CORBA对象的客户。后一种方法提供了另外一种途径,通过它Java可以被用于将你的新的应用和旧的系统相集成。
·JSP(Java Server Pages):
JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端所请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。
·Java Servlet:
Servlet是一种小型的Java程序,它扩展了Web服务器的功能。作为一种服务器端的应用,当被请求时开始执行,这和CGI Perl脚本很相似。Servlet提供的功能大多与JSP类似,不过实现的方式不同。JSP通常是大多数HTML代码中嵌入少量的Java代码,而servlets全部由Java写成并且生成HTML。
·XML(Extensible Markup Language):
XML是一种可以用来定义其它标记语言的语言。它被用来在不同的商务过程享数据。XML的发展和Java是相互的,但是,它和Java具有的相同目标正是平立性。通过将Java和XML的组合,您可以得到一个完美的具有平立性的解决方案。
·JMS(Java Message Service):
JMS是用于和面向消息的中间件相互通信的应用程序接口(API)。它既支持点对点的域,又支持发布/订阅(publish/subscribe)类型的域,并且提供对下列类型的支持:经认可的消息传递,事务型消息的传递,一致性消息和具有持久性的订阅者支持。JMS还提供了另一种方式来对您的应用与旧的后台系统相集成。
·JTA(Java Transaction Architecture):
JTA定义了一种标准的API,应用系统由此可以访问各种事务监控。
·JTS(Java Transaction Service):
JTS是CORBA OTS事务监控的基本的实现。JTS规定了事务管理器的实现方式。该事务管理器是在高层支持Java Transaction API (JTA)规范,并且在较底层实现OMG OTS specification的Java映像。JTS事务管理器为应用服务器、资源管理器、的应用以及通信资源管理器提供了事务服务。
·JavaMail:
JavaMail是用于存取邮件服务器的API,它提供了一套邮件服务器的抽象类。不仅支持SMTP服务器,也支持IMAP服务器。
·JAF(JavaBeans Activation Framework):
JavaMail利用JAF来处理MIME编码的邮件附件。
4、J2EE规范定义了那四个层次?
(1)、客户端层(Client Tier)
客户端层用来实现企业级应用系统的操作界面和显示层。另外,某些客户端程序也可实现业务逻辑。可分为基于Web的和非基于Web的客户端两种情况。基于Web的情况下主要作为企业Web服务器的浏览器。非基于Web的客户层则是的应用程序,可以完成瘦客户机无法完成的任务。
(2)、Web层
为企业提供Web服务。包括企业信息发布等。Web层由Web组件组成。J2EE Web组件包括JSP页面和Servlets。Web层也可以包括一些JavaBeans。Web层主要用来处理客户请求,调用相应的逻辑块,并把结果以动态网页的形式返回到客户端。
(3)、业务层(Business Tier)
业务层也叫EJB层或应用层,它由EJB服务器和EJB组件组成。一般情况下许多开发商把Web服务器和EJB服务器产品结合在一起发布,称为应用服务器。EJB层用来实现企业级信息系统的业务逻辑。这是企业级应用的核心,由运行在业务层中的EJB来处理。一个Bean从客户端接收数据、处理,然后把数据送到企业信息系统层存储起来。同样,一个Bean也可以从企业信息系统取出数据,发送到客户端程序。业务层中的EJB要运行在容器中,容器解决了底层的问题,如事务处理、生命周期、状态管理、多线程安全管理、资源池等。
(4)、企业信息系统层(Enterprise Information System tier)
处理企业系统软件,包括企业基础系统、数据库系统及其他遗留的系统。J2EE将来的版本支持连接架构(Connector Architecture)。它是连接J2EE平台和企业信息系统层的标准API。
业务层和Web层共同组成了三层J2EE应用的中间层,其他两层是客户端层和存储层或企业信息系统层。
5、简要说明一下EJB有那些角色
(1)、EJB提供者
EJB提供者,即EJB的开发者。对于多数企业级应用开发者来说,都属于这个角色。EJB提供者的产品是个包含一个或多个EJB的打包文件(即ejb-jar文件)。EJB提供者负责业务逻辑方法的 Java语言实现;定义EJB的远程和主接口方法和EJB的部署描述符。部署描述符包括EJB的结构信息(如EJB类的名字)和EJB用到的其它所用资源的描述信息。
EJB提供者是个应用领域的专家。负责开发实现业务任务和逻辑实体的可重用的EJB。不必是系统级的程序专家,也不必考虑程序的事务并发性、安全性、分布性等问题,这些问题都是由容器解决的。
(2)、EJB应用装配者
应用装配者把EJB装配成更大的可部署的应用单元。有时这个工作也由EJB提供者完成。EJB装配者的输入是EJB提供者生产的一个或多个ejb-jar文件,输出是一个或多个包含EJB和应用装配信息的ejb-jar文件。前者ejb-jar文件的扩展名一般是JAR(Java Archive),后者ejb-jar文件的扩展名可以是WAR(Web Application Archive)或EAR(Enterprise Application Archive)。应用装配者把应用装配信息插入到部署描述符中。
应用装配者也可以把其它应用类型的组件(如JSP,JavaServerPage)装配到EJB应用中(这就象在PetStore例子中看到的那样)。
应用装配者工作的对象是EJB部署描述符和EJB客户端视图合约。虽然他必须熟悉EJB的远程接口和主接口,但他不必具有任何实现EJB开发的知识。
(3)、EJB部署者
部署者把从EJB提供者和应用装配者那里获取的一个或多个ejb-jar文件中EJB部署到一个指定的环境。有时这个工作也由EJB提供者完成。这个环境包括特定的EJB服务器和容器。
部署者通常会使用EJB容器提供者提供的部署工具(如 WebLogic Server提供的weblogic.ejbc工具),来EJB提供需要的外部资源并绑定这些资源,同时必须符合应用装配者定义的指令。
部署者的产品是定制到特定环境的EJB,这个产品只能被部署在那个特定的容其中。也就是说,EJB的部署是与服务器平台相关的。
部署者是应用环境的操作专家,负责与EJB部署相关的工作。如:他负责把应用装配者定义的安全角色和EJB部署环境中的用户组及账号对应起来,实现它们的映射。
EJB容器提供者提供的部署工具用来完成部署工作,这个过程分两个阶段:
(A)、部署者首先生成附加类和接口,确保容器能管理EJB的运行。这些附加的类是和特定容器相关的。
(B)、部署者完成EJB和附加类及附加接口的安装。
(4)、EJB服务器提供者
EJB服务器提供者,即生产EJB服务器的厂家。目前符合EJB规范的服务器产品有十几种,如 WebLogic Server,Websphere,iPlanet等。EJB服务器提供者是分布式事务、分布式对象和其它低级系统级服务的专家。一个典型的EJB服务器提供者可能是操作系统生产者、中间件生产者或数据库生产者。
目前EJB架构假定EJB服务器提供者和EJB容器提供者是同一个生产者,因此没有定义EJB服务器提供者的任何接口需求。
(5)、EJB容器提供者
容器提供者提供了:
(1)部署EJB需要的部署工具。
(2)EJB的运行环境。
从EJB的角度看,容器是EJB的运行环境。容器为EJB提供了事务管理、安全管理。分布式网络管理、资源管理等服务。
EJB架构定义的EJB容器提供者负责EJB容器和EJB服务器的实现。EJB规范没有定义EJB容器和服务器之间的接口,由厂家来实现EJB容器和服务器的划分。
容器提供者需要系统级的编程,容器提供者的重点是开发出可伸缩的、安全的、事务处理的容器,并把它集成到EJB服务器中。容器提供者把EJB和EJB服务器分离开,并在EJB和容器之间提供了简单、标准的API。这个API就是EJB的容器合约。
容器提供者通常会提供允许系统管理员监视和管理容器和运行在容器中的EJB的工具。
通常把具有EJB容器、EJB服务器和Web服务器功能的产品叫做应用服务器。它为开发企业级应用提供了一个完整的平台。
(6)、管理器提供者
在EJB的使用和开发中,经常会遇到持久性的概念。所谓持久性,是指通过辅助的永久性的存储设备,如数据库或文件等,把Java对象的状态和对应的存储设备映射起来,当Java对象的状态发生改变时,存储的映射也随之改变。即使在Java对象消失后,存储设备中依旧保存着Java对象的状态。当这个Java对象重新实例后,它就会依然保持以前的状态,这就是Java对象的持久性。
在EJB规范中定义了具有持久性的EJB——实体EJB。根据对持久性管理方式的不同,又把实体 EJB分成容器管理持久性的 EJB(CMP EJB)和Bean管理持久性的EJB(BMP EJB)。
一般情况下,持久性管理器包含在容器管理器中。对于EJB提供者来说,不必了解它的细节。
对于容器管理持久性的实体EJB来说,持久性管理器负责安装在容器内的实体EJB的持久性管理。在部署阶段使用持久性管理器提供者的工具,可以生成代码,实现数据从实体EJB到数据库和应用程序的转换。
容器管理器管理实体Bean及其用到的对象的持久性和这些对象引用的完整性。容器管理器负责容器管理持久性实体EJB的finder方法和select方法的执行。
目前的EJB架构中没有完整定义容器和持久管理器间的接口,由厂家来自行定义。
(7).管理者
系统管理者负责配置、企业级计算、包括EJB服务器和容器的网络设施的系统管理。同时,系统管理者监视部署在容器中的EJB的运行。
EJB架构没有为系统管理定义合约。系统管理通常使用EJB服务器和容器提供者提供监视管理工具来完成这些工作。
通常,应用服务器会提供系统管理的控制台工具(如 WebLogic Server中的 Console)。
6、EJB架构定义了那三种类型的企业Bean对象?并简要说明其组成和功能!
·会话对象(Session Obect):无状态会话Bean、有状态会话Bean
完成主要商务逻辑
·实体对象(Entity Obect):CMP、BMP
完成与数据库的交互
·消息驱动对象(Message-Driven Object)
发送同步或异步消息
7、描述一下Web发展的几个阶段:
8、描述一下对MVC的理解
9、客服端调用EJB对象的几个基本步骤
(1)、设置JNDI服务工厂以及JNDI服务地址系统属性
(2)、查找Home接口
(3)、从Home接口调用Create方法创建Remote接口
(4)、通过Remote接口调用其业务方法
10、JSP的内置对象及方法。
(1)、request request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header, 和session数据的有用的方法。
(2)、response response表示HttpServletResponse对象,并提供了几个用于设置送回 浏览器的响应的方法(如cookies,头信息等)
(3)、out out 对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。
(4)、pageContext pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。
(5)、session session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息
(6)、application applicaton 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息
(7)、config config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。
(8)、page page表示从该页面产生的一个servlet实例
11、EJB与JAVA BEAN的区别?
EJB与JAVA BEAN是SUN的不同组件规范,EJB是在容器中运行的,分步式的,而JAVA BEAN主要是一种可利用的组件,主要在客户端UI表现上。
