【正确答案】
【答案解析】J2EE中常用的术语有Web服务器、Web容器、EJB容器、Applet容器、Application Client容器、JNDI、JMS、JTA、JAF、RMI等。下面将分别对它们进行解释。
(1)Web服务器
Web服务器是指驻留在Internet上的计算机程序。它是一种服务程序,其主要工作是接收来自于客户端的请求,然后把对请求的处理结果返回给客户端。用户可以通过浏览器来请求所需资源,这些资源可以是HTML页面、图片、音频、视频或者PDF文档等,Web服务器接收到请求后会去查找用户请求的资源,然后把找到的资源返回给用户。需要注意的是,它是一个被动的程序,只有当收到来自客户端的请求后,才会发送响应。
目前最流行的两大Web服务器是:IIS(Internet Information Services)和Apache Http Server(简称Apache)。
(2)Web容器
Web容器也被叫作Web应用服务器,它是一种服务程序,用来给运行在其中的程序(例如Servlet、JSP等)提供一个运行的环境。由于Web容器的存在,Servlet只需要关注业务逻辑的处理而不用关注与客户端的交互,因为这些交互都已经由Web容器来协助完成了。常见的Web容器有Tomcat、JBoss、WebLogic和WebSphere等。
下面以Tomcat为例介绍一下Web容器主要完成了哪些工作:当Web服务器(例如Apache)接收到一个客户端对Servlet的请求后,不是直接把这些请求交给Servlet来处理,而是交给Web容器来处理,由Web容器负责给Servlet提供HTTP请求与响应对象,同时容器调用Servlet的doGet()或doPost()方法来处理用户的请求。
(3)EJB容器
EJB容器是一个服务器端容器。EJB(Enterprise JavaBean)是J2EE应用的业务层的技术标准,只要满足J2EE规范的组件就能在EJB容器中运行,这个组件就会被EJB容器高效地管理。同时,EJB容器还给运行在其中的组件提供了安全而优越的服务环境,例如事务管理、邮件服务等。
需要注意的是,EJB组件不能显式地使用EJB容器的API(Application Programming Interface,应用程序接口)来请求容器提供的中间件服务,但可以隐式地让EJB容器知道它们的需求,例如在基于XML的部署描述符中制定所需的配置信息,在Bean类中使用部署注释请求中间件服务。EJB容器为EJB组件隐式地提供中间件服务。
(4)Applet容器
Applet容器是一个客户端容器,包含的组件为Applet。Applet是一种嵌入在浏览器中的轻量级客户端,一般而言,只有当使用Web页面无法充分地表现数据或应用界面时,才会使用它。Applet是一种替代Web页面的手段,开发人员只能够使用J2SE开发Applet,出于安全性的考虑,Applet无法使用J2EE的各种Service和API。
(5)Application Client容器
Application Clienf容器是一个客户端容器,包含的组件为Application Client。相对Applet而言,Application Client是一种较重量级的客户端,它能够使用J2EE的大多数Service和API。
(6)JNDI
JNDI全称为Java Naming and Directory Interface,译为Java命名和目录接口。它提供了一个目录系统,并将服务名称与对象关联起来,从而使得开发人员在开发过程中可使用名称来访问对象。
通过使用JNDI,一方面实现了快速查找和定位分布式应用程序的功能,另一方面使得程序有了更好的可扩展性。由于JNDI是独立于目录协议的,因此应用还可以使用JNDI访问各种特定的目录服务,例如轻量级目录访问协议(Lightweight Directory Access Protocol,LDAP)、网络数据服务(Network Data Service,NDS)和域名系统(Domain Name System,DNS)等。
(7)JMS
JMS全称为Java Message Setvice,译为Java消息服务。它是一个Java平台中面向消息中间件的API,主要实现各个应用程序之间进行异步通信,包括创建、发送、接收、读取消息等。通过使用JMS,能够最大限度地提升消息应用的可移植性。JMS既支持点对点的消息通信,也支持发布/订阅式的消息通信。
(8)JTA
JTA全称为Java Transaction API,译为Java事务服务。它提供各种分布式事务服务(在多个网络计算机上进行数据访问和更新),为J2EE实现分布式事务处理提供了重要的支撑。
(9)JAF
JAF的全称为JavaBeans Activation Framework,译为JavaBeans激活框架。它是一个专用的数据处理框架,提供了一种统一处理不同数据格式的方法。
(10)RMI
RMI全称为Remote Method Invocation,译为远程方法调用,它主要用于远程调用服务,通过它,可以像调用本地函数一样调用另外一台计算机上运行的程序,而不需要关心远程计算机所使用的系统或所使用的语言,也就是说,只要满足一定的规范,就可以实现在不同的计算机上进行函数调用。
常见笔试题:
JNDI可用于如下哪些应用场景?______
A.配置信息存储 B.异步信息发送
C.数据库连接池查找 D.远程对象查找
答案:D。见上面讲解。