《中间件及软件组件》复习题任课老师:祁明龙时间:第一周——第八周2012-4-81.什么Remote Method Invocation?2.什么是POJO?3.什么是EJB?4.什么是Stateless Session Bean?5.什么是Stateful Session Bean?与SLSF的区别是什么?6.什么是EJB容器?试举出两个以上的产品。
7.什么是WEB容器?试举出两个以上的产品。
8.什么是JDBC API?它的标吧是什么?试举出三个以上的类。
9.JDBC-ODBC桥的数据源URL的格式是什么?10.试说明MySql URL jdbc:mysql://localhost:3306/students每部分的含义。
11.一个Java接口要转变成RMI接口,需要继承什么接口?捕获什么异常?12.一个Java Bean要能“序列化”,需要实现什么接口?13.一个java.sql.ResultSet对象能序列化吗?14.一个java.util.ArrayList对象能序列化吗?15.一个java.util.ArrayList对象和java.util.List使用方法的差别是什么?16.什么是JNDI?17.jdk1.x的RMI JNDI 命名目录服务器是什么?18.RMI/IIOP命名目录服务器是什么?19.Java CORBA命名目录服务器是什么?20.Jboss是什么服务器?带WEB服务器吗?带JNDI服务器吗?21.GlassFish是什么服务器?带WEB服务器吗?带JNDI服务器吗?22.什么CORBA?23.什么IIOP?24.什么是Stub, Skelton,他们的作用是什么?25.什么是CORBA的POA? 作用是什么?26.什么是IDL?27.在jdk1.x(x>5)把一个IDL文件映射成Java目标代码的编译器及其主要选项是什么?28.什么是中间件?试举出若干重要的技术?29.DCOM是中间件技术吗?30.Microsoft Dot Net Framework是中间件技术吗?31.什么是企业信息处理的异构性?32.什么是Java Annotation?33.EJB2.0与EJB3.0的区别是什么?34.什么是一个EJB 部署描述符?是个符号吗?35.标注@Stateless是做什么用的?36.对于GlassFish EJB Container来说,标注@Stateless(mappedName=”ejb/StudentBean”)属性值mappedName指的是什么?37.标注@PersistenceContext(unitName=”MyEJBApp-ejbPU”) 属性值unitName指的是什么?38.什么是JPA, Java Persistence API 或Java Persistence Architecture?39.什么是JPA QL?40.标注@Id是做什么用的?41.标注@Entity 是做什么用的?42.标注@Column是做什么用的?43.试举出标注@Column若干重要的属性。
44.javax.persistence.EntityManager接口的“妙用”?45.什么是EJB3.0的Injection Mechanism及注入机制?46.标注@NamedQueries({@NamedQuery(name=”Student.findAll”,query=”selects from student s”), @NamedQuery(name=”Student.findById”,query=”select s from student where s.id = :id”)})出现在什么类型的Bean?含义是什么?47.什么是一个Remote Method?48.Query query = em.createNamedQuery(“Student.findAll”); Query标准类所在的包是什么?em是什么类的一个实例?49.接48小题,return query.getResultList();返回是什么类型?50.Student aStudent = new Student(); em.persist(aStudent); aStudent是一个POJO还是一个EB? em.persist(aStudent);的实际效应是什么?51.String id; Student aStudentRecord = em.find(id);使用JPA QL,编写一个替代Student aStudentRecord = em.find(id);语句的代码段。
52.一个IDL文件有三级模块嵌套module mia { module ham { module football{……}…..}……}试问编译成Java目标代码后,最内层的某个接口所在的包是什么?53.在一个以IDL定义的接口文件中有一个接口方法其原型是(Signature):voidcomputeRoots(in float a, in float b, in float c, out float x1, out float x2, out boolean hasRealRoots);试说明各个形参中修饰符in和out的含义;如果这是一个计算解一元二次方程根的Remote Method,按惯例试说明各个形参的含义及读写方式。
54.假定使用GlassFish作为EJB容器,那么在客户端应该使用来自EJB容器的那几个jar文件?55.假定使用GlassFish作为EJB容器,那么在客户端除了使用来自EJB容器的四个jar文件外,还需要第五个jar文件,这第五个jar文件什么?56.假定在客户端调用一个远程Session Bean,其所在的包是mia.ham.football.*;那么你认为一个以下列代码开始的客户端错在哪儿?package ejbtest;import javax.naming.*; import java.util.*; import middleware.course.*;public class Client {……}57.配置jdk1.6的classpath = .; %JA V A_HOME%/lib/tools.jar;其中那个点代表什么意思?58.简单描述通过JDBC-ODBC桥在一个Java应用中连接到一个Exel电子表格,共有几层软件层?59.如何配置ODBC数据源?60.通过JDBC-ODBC桥在一个Java应用中连接到一个Exel电子表格,数据库是指什么?一个数据库表单又是什么?61.假定我们配置了一个连接到一个Exel电子表格的名为rmiiiop_ds,那么在Java应用中对应的URL格式是什么?62.假定我们的工作目录是%WORK_DIR%,在一个MS DOS命令行窗口,执行命令cd %WORK_DIR%从而切换到工作目录下。
假定,在工作目录下有一个包mia.ham.footbool,在此包之下有一个Java应用,名为Client.java。
如何用javac编译它?又如何用java执行解释Client.class?63.EJB分几种?她们的意义是什么?64.在EJB3.0模型下,业务逻辑由什么类型的EJB承担?Data Layer又由什么类型的EJB?65.开发一个EJB服务器端的应用步骤是什么?66.下图是选课学生前几位名单截图,创建一个与之对应的数据库表单的SQL语句是什么?假定ID是主键。
按学号查询的JPA QL语句是什么?67.68.基于RMI/IIOP创建一个查询以上Exel电子表格的分布式计算的步骤是什么?接口,辅助类,服务器端以及客户端的编码?打包部署方法是什么?如何测试?69.同68,但是基于Java CORBA.70.同68,但是基于J2EE EJB3.0,假定使用的EJB Container 是GlassFish.71.编写一个Java应用程序,把以上Exel电子表格“腾到”MySql RDBMS的students数据库下一个名为student的表单里。
要求:首先使用JDBC-ODBC 桥把以上Exel电子表格读取并保存到一个java.util.ArrayList对象里,其次使用MySQL JDBC 4th Driver把保存到一个java.util.ArrayList对象里的每条记录插到student表单里。
要求极其熟练的编写此类应用。
72.标注@Table(name=”Student”)极其属性值在EJB3.0中含义是什么?73.Java Annotation和Java comment的异同?74.在Java annotation 中,什么是元标注(meta annotation)?75.76.在以上截图中,说明为java程序解释器设置的每一个属性的含义。
这是一个EJB应用客户端。
假定EJB部署在IP地址为192.168.0.29的一台装有EJB Container例如GlassFish的物理主机上,且客户端运行在另一台物理主机上,那么以上代码中何处应该修改?77.78.以上截图中是一个EJB应用客户端代码片段。
试说明,”ejb/StudentBean”的含义。
StudentRemote是一个远程接口还是一个Session Bean?79.80.以上是一个实体Bean的头部部分代码截图,由NetBeanIDE 6.5自动生成。
试解释每一个Java Annotation.81.82.以上是一个实体Bean的头部部分代码,由NetBeanIDE 6.5自动生成。
试解释每一个Java Annotation.83.对于66小题Exel电子表格,使用IDL定义一个能够表示每个选课学生信息的结构体,一个能够存放表格数据的IDL类型,和类似与select * from student SQL语句的某个IDL接口方法。
84.85.以上截图中的IDL代码能满足83小题的需要吗?为什么?86.什么是ORB即Object Request Brocker?87.什么是CORBA 的IOR即Interoperable Object Reference ?作用是什么?88.什么是CORBA的A Naming Context?作用是什么?89.90.根据71小题在MySql students数据库中生成的表单student,创建一个基于Stateless Session Bean和Entity Bean的数据库应用,进行各种命名查询。
假定我们使用的开发工具是NetBeanIDE 6.5+GlassFish V2+MySql 4.2,那么Entity Bean 的Java代码是:Student.javapackage course.eb;import java.io.Serializable;import javax.persistence.Basic;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.Id;import dQueries;import dQuery;import javax.persistence.Table;@Entity@Table(name = "student")@NamedQueries({@NamedQuery(name = "Student.findAll",query = "SELECT s FROM Student s"),@NamedQuery(name = "Student.findById",query = "SELECT s FROM Student s WHERE s.id = :id"),@NamedQuery(name = "Student.findByName",query = "SELECT s FROM Student s WHERE = :name"), @NamedQuery(name = "Student.findByMajor",query = "SELECT s FROM Student s WHERE s.major = :major"), @NamedQuery(name = "Student.findByClass1",query = "SELECT s FROM Student s WHERE s.class1 = :class1") })public class Student implements Serializable {private static final long serialVersionUID = 1L;@Id@Basic(optional = false)@Column(name = "ID")private String id;@Basic(optional = false)@Column(name = "NAME")private String name;@Basic(optional = false)@Column(name = "MAJOR")private String major;@Basic(optional = false)@Column(name = "CLASS")private String class1;public Student() {}public Student(String id) {this.id = id;}public Student(String id, String name,String major, String class1) {this.id = id; = name;this.major = major;this.class1 = class1;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) { = name;}public String getMajor() {return major;}public void setMajor(String major) {this.major = major;}public String getClass1() {return class1;}public void setClass1(String class1) {this.class1 = class1;}}无状态会话Bean: StudentSLSBBean.java代码:package course.eb;import javax.ejb.Stateless;import java.util.List;import javax.persistence.PersistenceContext;import javax.persistence.EntityManager;import javax.persistence.Query;@Stateless(mappedName="ejb/StudentSLSBBean")public class StudentSLSBBeanimplements StudentSLSBRemote {@PersistenceContext(unitName="MyEJBApp02-ejbPU")private EntityManager em;public List<Student> findAllStudents() {Query query = em.createNamedQuery("Student.findAll");return query.getResultList();}public Student findStudentByID(String id) {Query query = em.createNamedQuery("Student.findById");query.setParameter("id",id);return (Student)query.getSingleResult();}public Student findStudentByName(String name) {Query query = em.createNamedQuery("Student.findByName");query.setParameter("name",name);return (Student)query.getSingleResult();}public List<Student> findStudentsByMajor(String major) {Query query = em.createNamedQuery("Student.findByMajor");query.setParameter("major",major);return query.getResultList();}public List<Student> findStudentsByClass(String class1) {Query query = em.createNamedQuery("Student.findByClass1");query.setParameter("class1",class1);return query.getResultList();}}接口::StudentSLSBRemote.java:对应的Remote接口package course.eb;import javax.ejb.Remote;import java.util.List;@Remotepublic interface StudentSLSBRemote {List<Student> findAllStudents();Student findStudentByID(String id);Student findStudentByName(String name);List<Student> findStudentsByMajor(String major);List<Student> findStudentsByClass(String class1);}91.假定在students数据库种有另一个数据库表单Emails(Name varchar(50) notnull primary key, Email varchar(50) not null),仿照第90题,手写出Entity Bean,Stateless Session Bean和对应的接口。