免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4412 | 回复: 0
打印 上一主题 下一主题

Java Applet操纵本地扫描仪技术 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-30 09:54 |只看该作者 |倒序浏览
Java Applet操纵本地扫描仪技术          
                                                                                                   ————基于JDK1.3   
      
    交管局项目的软件
系统采用了基于Java的B/S结构,服务器端采用Unix操作系统、Oracle数据库,需要在客户端用扫描仪扫描图片后上传到服务器端的Oracle数据库中,考虑到B/S结构、基于Java等特点,操纵本地扫描仪最优的办法是采用Java   Applet技术,具体技术实现如下:   
   一、        技术难点   
   Java   Applet操纵本地扫描仪主要有以下的技术难点:   
   1.        JDK   Sandbox的限制:出于安全性考虑,普通的Java   Applet的只能运行于JDK的Sandbox之中,不能访问本地文件系统,不能建立除它所在服务端之外的网络连接等等,要操纵本地扫描仪就需要突破这些限制。   
    2.        Java语言本
身的限制:Java是一种跨平台的语言,由于要考虑到跨多种操作系统的运行,所以它也就丧失了直接操纵本地硬件系统的特性,因而要在Java中操纵扫描仪
只能通过JNI技术(即Java   Native   Interface),通过Java本地接口调用扫描仪驱动软件,完成扫描。   
    3.        其它技术难点:主要是涉及到Java数字签名技术,包括密钥对的生成和保存,证书文件的到如何到出,本地策略文件的配置,Jar文件的签署,证书的认证,软件的发布等等;采用Swing控件的Applet的网页的编写;服务器端和客户端文件的部署。   
   二、        问题的解决思路:   
   以上存在的技术难点需要逐一解决:   
    1.        突破JDK   Sandbox的控制:首先需寻找方法,突破JDK   Sandbox的控制,使Java   Applet获得比较大以至全部的访问权限,可以访问本地文件系统,操纵本地硬件设备。   
   2.        解决Java操纵硬件设备的限制:需要通过查找资料,寻求一个相对来说比较简单的操纵扫描仪的方法。   
   三、        实际解决方法和采用的技术   
   1.        突破JDK   Sandbox限制的解决方法:   
   通过查找资料和与其他人交流,找到突破JDK   Sandbox限制的两个方法:   
   1)修改本地JRE(Java   2   Runtime   Environment)策略文件java.policy,在其中加上一段代码:   
   grant   codeBase"URL"   {   
   permission   java.security.AllPermission;   
   };   
   其中的URL是你要运行的Jar文件的地址,这样此Applet即可获得所有权限   
            2)采用数字签名Jar文件,使其获得相关的访问权限:具体实现如下:   
   Ø        生成密钥及密钥库:   
   keytool   –genkey   –keystore   dragon.store   –alias   jizd   
      
   这个命令用来产生一个密匙库,执行完毕后应该在当前目录中产生一个dragon.store的文件,其中存放着一对密钥,这里的jizd是密钥所有者的名字   
   Ø        导出公有密钥成为一个X.509格式的证书:   
   keytool   –export   –keystore   dragon.store   –alias   jizd   –file   dragon.cer   
      
   这个命令用来产生验证签名时所要用的证书。   
   Ø        用私有密钥签署Jar文件:   
   jarsigner   -keystore   dragon.store   MyApplet.jar   jizd   
      
   这个命令用上面产生的私有密钥将我们的jar文件进行了签名。   
   Ø        将证书中的公有密钥导入到客户密钥库中:   
   keytool   –import   –keystore   guest.store   –alias   jizd   –file   dragon.cer   
   Ø        用Policytool生成运行此Applet的策略文件:   
   应该生成一个applet.policy策略文件,策略文件中着名了验证此前名Jar的密钥库的URL和公有密钥,以及此Applet应获得的权限。   
   Ø        修改客户端的${java.home}/jre/lib/security目录下的java.security文件:   
   在其中添加一行:   
                  policy.url.3=URL/applet.policy   
                  URL为存放Applet.policy的服务器路径。   
   具体配置时,最后一步可以通过编制一个小程序自动完成,前几步完成后将所有的文件在服务器端部署。   
    由于系统的网络自成体系,不会和Internet相连,所以不必要购买权威机构签发的软件开发许可证,用来签署Jar文件,采用以上的自签名的Jar即可,但是需要在客户端做一简单修改工作。   
  2. 解决Java操纵硬件设备的限制:由于JNI编程的复杂性,所以经过从网上寻找找到了一个Twain   for  
Java的包,此包完成了整个Java  
操纵扫描仪所需的所有JNI接口,大大减轻了编程的复杂性工作量,同时通过对它的示例程序的研究,完成了一个操纵扫描仪的简单Applet,配合上一个技
术难点的解决,已经可以从IE中操纵本地扫描仪。   
   3. 其他技术难点的解决,关于内嵌Swing  
的Applet的IE网页代码的编写比较复杂,采用AWT控件的Applet嵌入网页时采用标签即可,但是采用Swing控
件的Applet嵌入网页时需采用标签,代码繁杂冗长,工作量比较大,解决办法是首先编写采用
标签的网页,然后采用Sun的HTMLConverter工具(可从Sun.com上免费下载)批量转化即可。   
   四、        采用的关键技术及实现情况。   
   1.        突破JDK   Sandbox限制技术:   
   i.        修改客户端策略文件——已实现   
   ii.        数字签名——已实现   
   2.解决Java操纵扫描仪限制:采用现成的Twain   for   java包——已实现   
                                 此包是试用版,正式版报价2000$,有待于寻找类似的免费开发包。   
   3.        用Swing控件的Applet的网页的编写,采用Sun   HTMLConverter——已实现   
   五、        技术实现的代价:   
      
   主要技术点        时间代价        成本代价   
   修改客户端策略文件        半天        0   
   数字签名的相关技术        3天        0   
   解决Java操纵扫描仪限制(JNI)        3天        暂时无法计算   
   Swing控件的Applet的网页的编写        半天        0   
    服务器端和客户端文件的部署        1天        0   
      
   六、        不完善或有待于解决的问题:   
   当前不完善或有待于解决的问题主要是Java操纵扫描仪的包是试用版,购买正式版需花费2000$,还需要寻求一些免费的或者价格低廉的开发包。   
   七、        技术前景   
      
      
   八、        参考资料:   
   http://www.suitable.com/Doc_CodeSigning.shtml   
   http://forum.java.sun.com/   
   http://java.sun.com/docs/books/tutorial/security1.2/toolsign/index.html   
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/30292/showart_433183.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP