JAVA 面试题汇总
EJB
128) remote接口和home接口主要作用
remote接口定义了业务方法,用于EJB客户端调用业务方法。 home接口是EJB工厂用于创建和移除查找EJB实例 129) bean 实例的生命周期
对于Stateless Session Bean、Entity Bean、Message Driven Bean一般存在缓冲池管理,而对于Entity Bean和Statefull Session Bean存在Cache管理,通常包含创建实例,设置上下文、创建EJB Object(create)、业务方法调用、remove等过程,对于存在缓冲池管理的Bean,在create之后实例并不从内存清除,而是采用缓冲池调度机制不断重用实例,而对于存在Cache管理的Bean则通过激活和去激活机制保持Bean的状态并限制内存中实例数量。 130) EJB的激活机制
以Stateful Session Bean 为例:其Cache大小决定了内存中可以同时存在的Bean实例的数量,根据MRU或NRU算法,实例在激活和去激活状态之间迁移,激活机制是当客户端调用某个EJB实例业务方法时,如果对应EJB Object发现自己没有绑定对应的Bean实例则从其去激活Bean存储中(通过序列化机制存储实例)回复(激活)此实例。状态变迁前会调用对应的 ejbActive和ejbPassivate方法。 131) EJB的几种类型
会话(Session)Bean ,实体(Entity)Bean 消息驱动的(Message Driven)Bean 会话Bean又可分为有状态(Stateful)和无状态(Stateless)两种
实体Bean可分为Bean管理的持续性(BMP)和容器管理的持续性(CMP)两种 132) 客服端调用EJB对象的几个基本步骤
设置JNDI服务工厂以及JNDI服务地址系统属性,查找Home接口,从Home接口调用Create方法创建Remote接口,通过Remote接口调用其业务方法。 133) EJB需直接实现它的业务接口或Home接口吗,请简述理由
远程接口和Home接口不需要直接实现,他们的实现代码是由服务器产生的,程序运行中对应实现类会作为对应接口类型的实例被使用。
~ 36 ~
JAVA 面试题汇总 应用服务器
十一、 应用服务器
134) 应用服务器有那些?
BEA WebLogic Server,IBM WebSphere Application Server,Oracle9i Application Server,jBoss,Tomcat
135) 应用服务器与WEB 服务器的区别?
应用服务器如Weblogic、Tomcat、Jboss;WEB 服务器如IIS、 Apache
应用服务器处理业务逻辑,能处理动态页面,及相关的组件,web服务器只处理http请求的html等静态页面(资源) 。web服务器通常比应用服务器简单 136) 如何给weblogic指定大小的内存?
在启动Weblogic的脚本中(位于所在Domian对应服务器目录下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以调整最小内存为32M,最大200M 137) 如何设定的weblogic的热启动模式(开发模式)与产品发布模式?
可以在管理控制台中修改对应服务器的启动模式为开发或产品模式之一。或者修改服务的启动文件或者commenv文件,增加set PRODUCTION_MODE=true。 138) 如何启动时不需输入用户名与密码?
修改服务启动文件,增加 WLS_USER和WLS_PW项。也可以在boot.properties文件中增加加密过的用户名和密码.
139) 在weblogic管理制台中对一个应用域进行jms及ejb或连接池等相关信息进行配置后,实际保存在什么文件中?
保存在此Domain的config.xml文件中,它是服务器的核心配置文件。 140) 说说weblogic中一个Domain的缺省目录结构
Domain目录服务器目录applications,将应用目录放在此目录下将可以作为应用访问,如果是Web应用,应用目录需要满足Web应用目录要求,jsp文件可以直接放在应用目录中,Javabean需要放在应用目录的WEB-INF目录的classes目录中,设置服务器的缺省应用将可以实现在浏览器上无需输入应用名。
141) 在weblogic中发布ejb需涉及到哪些配置文件 不同类型的
EJB涉及的配置文件不同,都涉及到的配置文件包括
ejb-jar.xml,weblogic-ejb-jar.xml,CMP实体Bean一般还需要weblogic-cmp-rdbms-jar.xml
~ 37 ~
JAVA 面试题汇总 应用服务器
142) 如何在weblogic中进行ssl配置与客户端的认证配置或说说j2ee(标准)进行ssl的配置 缺省安装中使用DemoIdentity.jks和DemoTrust.jks KeyStore实现SSL,需要配置服务器使用Enable SSL,配置其端口,在产品模式下需要从CA获取私有密钥和数字证书,创建identity和trust keystore,装载获得的密钥和数字证书。可以配置此SSL连接是单向还是双向的。 143) 如何查看在weblogic中已经发布的EJB?
可以使用管理控制台,在它的Deployment中可以查看所有已发布的EJB 说说在weblogic中开发消息Bean时的persistent与non-persisten的差别
persistent方式的MDB可以保证消息传递的可靠性,也就是如果EJB容器出现问题而JMS服务器依然会将消息在此MDB可用的时候发送过来,而non-persistent方式的消息将被丢弃。
~ 38 ~
JAVA 面试题汇总
改错题
改错题
1)
abstract class Name {
private String name;
public abstract boolean isStupidName(String name) {} }
答案: 错。abstract method必须以分号结尾,且不带花括号。 2)
public class Something {
void doSomething () {
private String s = \int l = s.length(); } }
答案: 错。局部变量前不能放置任何访问修饰符 (private,public,和protected)。final可以用来修饰局部变量
(final如同abstract和strictfp,都是非访问修饰符,strictfp只能修饰class和method而非variable)。 3)
abstract class Something {
private abstract String doSomething (); }
答案: 错。abstract的methods不能以private修饰。abstract的methods就是让子类implement(实现)具体细节的,怎么可以用private把abstract method封锁起来呢? (同理,abstract method前不能加final)。 4)
public class Something {
public int addOne(final int x) {
return ++x; }
~ 39 ~
JAVA 面试题汇总
改错题
}
答案: 错。int x被修饰成final,意味着x不能在addOne method中被修改。 5)
public class Something {
public static void main(String[] args) {
Other o = new Other(); new Something().addOne(o); }
public void addOne(final Other o) {
o.i++; } }
class Other {
public int i; }
答案: 正确。在addOne method中,参数o被修饰成final。如果在addOne method里我们修改了o的reference
(比如: o = new Other();),那么如同上例这题也是错的。但这里修改的是o的member vairable (成员变量),而o的reference并没有改变。 6)
class Something {
int i;
public void doSomething() {
System.out.println(\} }
有什么错呢? 看不出来啊。
答案: 正确。输出的是\= 0\。int i属於instant variable (实例变量,或叫成员变量)。instant variable有default value。int的default value是0。 7)
class Something {
final int i;
~ 40 ~