J2EE与EJB
问题及答案来源自《Java程序员面试笔试宝典》第五章 Java Web 5.2 J2EE与EJB
1、什么是J2EE?
J2EE是Java平台企业版的简称,是用来开发和部署企业级应用的一个架构,提供了统一的、开放标准的多层平台
J2EE核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共同的标准及规格,让各种
依循J2EE架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,企业内部
或外部难以互通的窘境。
J2EE组件和“标准的” Java类的不同点在于:它被装配在一个J2EE应用中,具有固定的格式并遵守J2EE规范,由J2EE服务器对其进行管理。
J2EE组件:
- 客户端应用程序和applet是运行在客户端的组件
- Java Servlet和Java Server Pages (JSP) 是运行在服务器端的Web组件
- Enterprise Java Bean (EJB )组件是运行在服务器端的业务组件
3、EJB有哪些不同的类型?
EJB:
EJB是enterprise JavaBean的简称,相当于分布式组件对象模型,它是一种服务器端组件体系结构,用于开发和部署
多层的、分布式的以及面向对象的应用体系的跨平台体系结构。EJB简化了Java开发企业级的分布式组件应用程序的
过程, 它定义了一组可重用的组件:Enterprise Beans
EJB分为如下三种类型:
(1)Session Bean
Session Bean用来实现服务器端的业务逻辑,同时协调Bean之间的交互,另外Session Bean仅存在于客户应用和服务器交互的
时间段内,Session Bean中的数据不会保存在数据库中
Session Bean可以分为两种状态:
- Stateless Session Bean(无状态的Session Bean)
- Stateful Session Bean(有状态的Session Bean)
(2)Entity Bean
Entity Bean主要是资料组件,代表数据库里的记录,因此它与数据库中的数据有着相同的生存周期,也就是说只要数据库中的
数据存在,Entity Bean就一直存在。另外Entity Bean还可以被多个客户应用共享
(3)Message Driver Bean
Message Driver Bean用来处理异步消息,一般不是由用户调用,它的调用方式是一旦有异步消息发到某个Message Driver Bean
后,容器都会负责调用Message Driver Bean的OnMessage()方法来处理异步请求
4、EJB与JavaBean有什么异同?
EJB:
EJB是基于Java的远程方法调用技术,可以被远程访问(跨进程、跨计算机),但它必须部署在webspere、weblogic等容器中
EJB客户从不直接访问真正的EJB组件,而是通过其容器访问,EJB容器是EJB组件的代理,其组件由容器创建和管理
Java Bean:
Java Bean是可重用的组件,没有严格的规范限制,因此可以说任何一个类都是一个javabean,但是通常情况下,java bean是
由容器所创建的(比如tocamt).而且javabean必须要有自己的无参构造器,必须实现serializable接口便于持久化操作。所以
Java Bean就相当于com组件,是不能被跨进程访问的。
EJB与Java Bean的区别:
- EJB主要用在服务器端的开发,Java Bean主要用在客户端的开发
- EJB可作为独立的单元被部署到EJB容器中,Java Bean不可部署
- EJB支持使用部署描述对EJB应用进行定制化,Java Bean定制化只能在开发阶段
- EJB构件分布式对象,可以被远程的对象访问,Java Bean构件不是分布式对象,只能在应用程序内部被访问
- EJB构件对终端用户不可见,部分Java Bean对终端用户可见
5、EJB有哪些生命周期?
EJB有 entity bean, session bean, MD bean(Message Driver Bean)
其实entity bean 是随便服务器启动而初始化,随着服务器关闭而销毁。
MD bean作为JMS的消费端,不包含客户端状态,它的生命周期有EJB容器用对象池管理管理。所以应该是当JMS端访问
MD bean时候 可能会创建,也可能会调用一个已经存在的。
关于session bean, 分为有状态和无状态。
- 有状态session bean 的生命周期是客户端访问请求时候创建,并且受事务管理,在事物完成后销毁。
- 无状态session bean 的生命周期类似于MD bean,有对象池管理。
6、EJB的角色有哪几种?
EJB将开发部署EJB应用的任务划分到了6个不同的角色,它们分别为:
- Enterprise Bean Provider:企业级组件开发者
- Application Assembler:应用组合者
- EJB Deployer:EJB部署者
- EJB Server Provider:EJB服务器提供者
- EJB Container Provider:EJB容器提供者
- System Administrator:系统管理员
每个角色都可以由不同的开发商提供,每个角色所做的工作都必须严格遵循EJB规范,并保证彼此之间的兼容性
11、web服务器与web应用服务器有什么区别?
web服务器:
真正意义上的web服务器就两个 : IIS 和 apache
web 服务器可以提供代理服务,即可以访问本地磁盘上所有的资源文件,即使项目资源文件没有放在服务器中。
常见的web服务器有: nginx , nginx 是Apache 提供的web服务器,nginx是一款高性能、轻量级的web服务器和
反向代理服务器以及邮件代理服务器。支持高并发,并发量50000 。nginx不能解析动态的jsp页面
web应用服务器:
在java web开发时,最早接触的web服务器是tomcat,其实tomcat是web应用服务器,任何的 web项目资源文件如果
没有部署在tomcat应用服务器中(资源文件没有放在tomcat安装目录中),都将不能访问得到
类似的web应用服务器还有 weblogic 和 jetty等
两者的区别:
- web服务器只能解析静态页面,即html页面,它请求的路径是固定的
- web应用服务器可以解析动态的jsp页面,即它请求的路径是动态生成的,负责的是请求的逻辑处理
一般在web项目开发 中,apache+tomcat+nginx联合使用,访问静态资源时用apache解析,访问动态资源时
用tomcat解析,nginx作为反向代理服务器,同时支持高并发
12、什么是Web Service?
WebService:
WebService是一个SOA(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可以实现不同的语言间的
相互调用,通过Internet进行基于Http协议的网络应用间的交互。 WebService实现不同语言间的调用,是依托于一个
标准,webservice是需要遵守WSDL(web服务定义语言)/SOAP(简单请求协议)规范的。
WebService=WSDL+SOAP+UDDI(webservice的注册)
Web Service是通过提供标准的协议和接口,可以让不同的程序集成的一种SOA架构。
WebService基于以下协议实现:
- XML:可拓展标记语言
- WSDL:web服务描述语言
- UDDL:通用描述、发现与集成服务
- SOAP:简单对象存取协议
WebService的优点:
- 完好的封装性
- 松耦合
- 动态性
WebService的基本原理:
- Service Provider采用WSDL描述服务
- Service Provider 采用UDDI将服务的描述文件发布到UDDI服务器(Register server)
- Service Requestor在UDDI服务器上查询并 获取WSDL文件
- Service requestor将请求绑定到SOAP,并访问相应的服务
13、SOAP与REST有什么区别?
SOAP和REST:
SOAP:将HTTP协议作为传输层协议,本质是采用HTTP进行传输,使用XML封装消息内容的RPC调用。
REST:REST并不是一种协议,只是一种设计规范,该设计规范要求程序遵守HTTP协议最初设计的初衷,
使用HTTP的GET/PUT/DELTET/POST对资源进行操作,REST接口是以URI资源为基础,对资源进行CRUD操作的接口。
SOAP和REST的对比:
SOAP相对REST来说较为重量级
SOAP接口是自解释的,采用WSDL进行描述,程序可以基于WSDL进行解释并自动生成SOAP调用代码;
REST接口只能通过接口文档进行描述,难以做到程序解释接口定义。
SOAP采用HTTP作为传输层协议,对HTTP协议来说服务调用是透明的,防火墙上难以对SOAP进行细粒度的权限控制,
也难以使用http的缓存机制提高效率。而REST是标准的HTTP访问,可以充分利用HTTP协议提供的一些好处,例如
可在防火墙上进行权限控制(最小粒度可以基于每个URL的操作),也可充分利用缓存提高响应速度和系统的吞吐效率。
由于REST是标准的HTTP访问,其适用性更广,web应用,移动应用都可以在不使用第三方库的情况下使用REST接口构造应用程序
根据REST设计原则,接口是无状态的,因此可以简单地通过对服务器进行水平扩展提升服务能力
15、数据库连接池的工作机制是怎样的?
数据库连接池的作用:
数据库连接池负责分配、管理并释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不再是重新建立新的数据库
连接,同时它还负责释放空闲时间超过最大空闲时间的数据库连接,避免因为没有释放数据库连接而引起的数据库连接泄漏
数据库连接池的原理:
在J2EE中,服务器启动时会创建一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序
会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有
配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接
16、J2EE开发中有哪些调优方法?
调优方式如下:
- 优化设计:组合代替继承
- 使用数据库连接池
- 给web容器配置合理的线程数量来处理客户端的http请求
- 使用框架(eg:Hibernate)提高系统效率
- 使用缓存
- 优化IO性能
- 优化查询
- 对session进行合理管理及设置
J2EE与EJB的更多相关文章
- J2EE和EJB有什么关系?
其实j2EE就是java的企业版,与javaSE(标准版)有是有区别的,所以运行环境会有差异(简单点可以说,这是两组不同的接口),我们一般所熟悉的tomcat仅仅只实现了j2ee的一小部分规范,它只是 ...
- J2EE之EJB
EJB是sun的JavaEEserver端组件模型,最大的用处是部署分布式应用程序.EJB把使用java开发的server组件的部署和开发进行标准化. 凭借java跨平台的优势.用EJB技术部署的分 ...
- [J2EE]struts+ejb笔记
DispatchAtion: - org.apache.struts.actions.DispatchAction 这个类是个抽象类,但实现父类Action的execute方法,在项目中重写这个类可以 ...
- J2EE学习从菜鸟变大鸟之六 EJB(Enterprise JavaBean)企业级Java组件
EJB (EnterpriseJavaBean)是J2EE的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准.其特点包括网络服务支持和核心开发工具(SDK).其称为Java 企业Bean,是 ...
- EJB 简介
EJB: 被称为java企业bean,服务器端组件,核心应用是部署分布式应用程序.用它部署的系统不限定平台.实际上ejb是一种产品,描述了应用组件要解决的标准 标准: 可扩展 (Scalable) ...
- EJB初识(通熟易懂)
转载自http://blog.csdn.net/jojo52013145/article/details/5783677,讲的很透彻,佩服,膜拜学习 1. 我们不禁要问,什么是"服务集群&q ...
- EJB概念理解
转自http://blog.csdn.net/jojo52013145/article/details/5783677 1. 我们不禁要问,什么是"服务集群"?什么是"企 ...
- 历史疑团之EJB
在学习Sping框架的过程中,看到过很多次关于EJB的批判.使用了SpringMVC但是并没有真性情般体会到它的优点,所以有必要对传统的Java Bean和EJB来做一些了解,无奈百度搜了很多知识,还 ...
- [转] EJB到底是什么,真的那么神秘吗??
原文地址:http://blog.csdn.net/jojo52013145/article/details/5783677 1. 我们不禁要问,什么是"服务集群"?什么是&quo ...
随机推荐
- C# 多线程控制
C# 多线程控制 通讯 和切换 一.多线程的概念 Windows是一个多任务的系统,如果你使用的是windows 2000及其以上版本,你可以通过任务管理器查看当前系统运行的程序和进程.什么是进 ...
- RedHat如何关闭防火墙
1.查看防火墙是否已开启 #可以查看到iptables服务的当前状态. service iptables status 上图表示防火墙已关闭. 2.关闭防火墙 关闭防火墙的方法为: 1)永久性生 ...
- php+phpspreadsheet读取Excel数据存入mysql
先生成Excel模板,然后导入Excel数据到mysql,每条数据对应图片上传到阿里云 <?php /** * Created by PhpStorm. * User: Administrato ...
- R基于Bayes理论实现中文人员特性的性别判定
参见 基于中文人员特征的性别判定方法 理论,告诉一个名字,来猜猜是男是女,多多少少有点算命的味道.此命题是一种有监督的学习方法,从标注好的训练数据学习到一个预测模型,然后对未标注的数据进行预测. 1 ...
- ML平台_饿了么实践
(转载至:https://zhuanlan.zhihu.com/p/28592540) 说到机器学习.大数据,大家听到的是 Hadoop 和 Spark 居多,它们跟 TensorFlow 是一个什么 ...
- TStrings (TStringList)很有功能
用 TStrings的Object 保存类的方式,来保存除了Items以外的值. 今天才发现,原来,TStrings下,还有 Items,Values,Items.Names,Items.Values ...
- 黄聪:ffmpeg参数说明(转载)
ffmpeg.exe -i F:\闪客之家\闪客之歌.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\11.flv ffmpeg -i F:\01.wm ...
- 【Nginx】之安装使用和配置SSL支持
本文采用的是nginx源码安装 1.下载nginx源码包 wget http://nginx.org/download/nginx-1.8.0.tar 或者登录nginx官网下载更高版本 2.ngin ...
- 记使用vue-awesome-swiper遇到的一些问题
一.vue-awesome-swiper的使用 1.在项目中全局引用 import VueAwesomeSwiper from 'vue-awesome-swiper' // require s ...
- Python——字符串2.0(实验)(python programming)
直接打s,是程序员看到的:打print(),是用户看到的 列表 ] #列表索引,与数组唯一不同:等号左端可修改 转载自:https://www.cnblogs.com/wwwwwei/p/104816 ...