Java第二季度技能等级二级考题

Java第二季度技能等级二级考题



       注明:1、以下试题的开发环境均在jdk1.4以上,建议用jdk1.4,开发工具为eclipse,各版本都行。

                2、注意提供随题附件plugin1.jar和plugin2.jar两个文件



考试时长:5小时

试题概要:要求实现一个类似如命令行控制的插件管理系统,它可以通过不同的命令对制定格式的插件进行管理控制。



相关说明:

A、  所有的插件实现类都包含有“public void call(int param)”方法;

B、  所有的插件都是以jar包的形式提供,jar包文件中包含有插件描述文件plugin.xml,jar包文件的结构如下:(参见随试题一起提供的附件文件plugin1.jar和plugin2.jar)

[xxx_plugin.jar]

├-[com]

│ └-[xxx]

│    ├-[MyPlugin.class]

│    └-[Other.class]

└-[META-INF]

    ├-[MANIFEST.MF]

    └-[plugin.xml]

C、  plugin.xml文件结构请查看随提附件;

D、  各个插件jar包之间的类名可能会重名;

E、  程序启动后处于等待命令接受状态,它可以接收的命令参见下表(程序处理中的各种结果需要在界面上打印信息):



命令字


示例


备注

add


add plugin


加载一个插件,plugin为jar包路径(可为绝对或相对路径),需要判断文件是否存在,文件格式是否正确,组件是否已经加载过,加载成功则打印成功信息

remove


remove pluginName


删除一个插件,pluginName为插件的名称,需要检查插件是否存在,删除成功提示信息

call


call pluginName param


调用一个插件(调用插件的call方法),pluginName为插件的名称,param为调用call方法时传递的整数型参数,需要检查插件是否存在,参数类型是否正确

list


list


列出当前系统中已经加载的所有插件,逐行列出插件名称即可,没有插件则不打印任何信息

info


info pluginName


列出插件的基本信息,pluginName为插件的名称,使用Key:Value的形式输出plugin.xml中定义的所有属性,见后面的输出样例

exit


exit


退出本程序

注意:命令名称不区分大小写,命令和参数之间使用空格分开,命令前后可包含多个空格,不符合要求的命令打印“命令格式错误”。





操作流程示例如下:命令提示符使用两个大于号“>>”,下面为一个命令行交互的过程输出。

>>add d:\plugin1.jar

插件加载成功

>>add d:\plugin2.jar

插件加载成功

>>add d:\plugin3.jar

文件不存在

>>list

HelloPlugin

HiPlugin

>> info HiPlugin

name:HiPlugin

person:Petter

email:[email protected]

site:http://www.chinasoft.com

plugin:com.chinasoft.SayHi

version:2.0

date:2010-04-25

>>call HiPlugin 33

Hi 33!

>>remove HiPlugin

插件卸载成功

>>list

HelloPlugin

>>add d:\plugin1.jar

插件已存在

>>exit





涉及到的知识点:

1、  基础知识

2、  XML文件解析

3、  简单业务逻辑处理

4、  类加载和反射



参考提示栏:

1:使用JDK自带的DOM方式解析XML文件

        DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance();

        DocumentBuilder dombuilder = domfac.newDocumentBuilder();;

        Document doc  = dombuilder.parse("要解析的XML文件");

        // 获取要节点对象

        Element root = doc.getDocumentElement();

        // 关于Element的各种操作请参考JDK API文档

2:Jar包读取

JarFile jar = new JarFile("要解析的jar文件");

InputStream in =

jar.getInputStream(jar.getEntry("META-INF/plugin.xml")

);

你可能感兴趣的:(java)