基于J2ME的移动电子海图显示系统开发|电子海图显示

   [提要] 本文介绍了一种基于J2ME的移动电子海图显示系统的设计与实现。系统中采用了HTTP协议,实现客户端和应用服务器之间互联互通。应用服务器采用了Tomcat6.x作为Servlet的运行容器,服务器端采用了struts2.0框架应用程序直接连接引用chart数据源,获得客户端请求海图瓦片的quadkey(四叉数码),由quadkey在海图瓦片库中检索到对应瓦片,再将其反馈给客户端,从而达到查询的应用。
  关键词:J2ME;Servlet;移动;电子海图
  基金项目:本文为江苏海事职业技术学院院级课题“基于J2ME的移动电子海图的关键技术的研究”(项目序号:2010A3-02)阶段性研究成果之一
  中图分类号:U692.4 文献标识码:A
  收录日期:2011年10月26日
   一、引言
   根据有关统计数据,截至2011年8月31日,中国手机用户总数已达9.2726亿户,其中包括9,380万3G手机用户。手机已经不再仅仅是一种通信工具,而是集通信、娱乐、办公等于一体的移动电子设备。为了满足用户的各种不同需求,手机各项功能在不断地拓展,如阅读学习功能、照相、录像及录音功能等。同时,各种手机应用软件也层出不穷,例如移动办公系统、股票查询系统、手机导航系统等应用软件。这些新功能开发极大地满足了不同手机用户的不同需求,进一步提高了手机的利用率,也大大激发了开展手机各种新功能研发工作。本系统的设计也是基于方便航海领域从业人员能及时掌握船舶动态这一目的而设计的。手机用户只需要安装客户端应用程序,就可以随时使用电子海图系统,达到随时掌握船舶航行动态的需求。
   目前,手机上的应用软件从最早的只有基本语音服务,到之后增加了简单的附加应用,直到出现了WAP方式使移动终端能访问Internet功能的三个发展阶段。发展到当前这个阶段,利用J2ME(Java 2 Micro Edition)实现移动应用是一种良好的途径。
   二、J2ME技术简介
   J2ME是为机顶盒、移动电话和PDA之类嵌入式消费电子设备提供的Java语言平台,是一种高度优化的Java运行环境。J2ME在设计时,将所有的嵌入式装置大体上区分为两种:一种是运算功能有限、电力供应也有限的嵌入式装置(如手机);另一种则是运算能力相对较佳,并且在电力供应上相对比较充足的嵌入式装置 (如电视机顶盒)。然后把上述运算功能有限、电力有限的嵌入式装置定义在Connected Limited Device Configuration(CLDC)规格之中;而另一种装置则规范为Connected Device Configuration(CDC)规格。也就是说,J2ME先把所有的嵌入式装置利用Configuration的概念区隔成两种抽象的形态。而这些规格之中定义了这些装置至少要符合的运算能力、供电能力、记忆体大小等规范,同时也定义了一组在这些装置上执行的Java程序所能使用的类别函式库、这些规范之中所定义的类别函式库为Java标准核心类别函式库的子集合以及与该形态装置特性相符的扩充类别函式库。如就CLDC 的规范来说,可以支援的核心类别函式库为java.lang.*、java io.*、java.util.*,而支援的扩充类别函式库为java micro edition io.*。区分出两种主要的Configuration之后,J2ME接着再定义出Profile的概念。Profile是架构在Configuration之上的规格,是为了要更明确地区分出各种嵌入式装置上Java程序该如何开发以及它们应该具有哪些功能。J2ME的体系结构图,如图1所示。(图1)
   三、系统设计
   本系统从功能上主要分为登陆模块和船舶信息查询模块。其中,登陆模块负责用户信息的核对、验证,通过验证后允许该用户继续操作,否则提示用户重新输入;船舶信息查询模块又分为基于地点查询和基于船名/船舶呼号查询。基于地点的查询,允许用户输入某一个地点,例如某个港口名,服务器端将提供在该港区附近水域范围内的所有船舶信息;基于船名/船舶呼号的查询,允许用户输入船名或者船舶呼号,服务器端将提供该船舶目前实际位置的详细信息。
   基于以上功能,本系统采用整体结构如图2所示。其中,客户端使用J2ME访问网络,使用HTTP协议作为客户端和服务器端交互的方式;服务器端,Servlet负责接收并响应客户端的请求。即手机用户将通过Internet访问数据库,经过身份验证后将需求告诉服务器,服务器把用户请求的资源以流的形式进行包装,并传送给手机用户。J2ME在手机上接收流,并将数据重组为图像,显示在手机屏幕上。由于移动设备的处理能力有限,较复杂的或者比较耗费资源的操作都在服务器端完成,客户端只负责屏幕的显示和网络的链接。(图2)
   四、关键技术的解决
   基于以上的系统设计分析,客户端采用Sun Wireless Toolkit 2.5开发,服务器端采用Tomcat6.x作为Servlet的运行容器,数据库采用MySQL5.0。
   (一)客户端设计。客户端需要解决的主要问题是客户端程序与应用服务器之间的通信,根据需要请求的电子海图瓦片的编码,向服务器发起访问链接请求,接收服务器端返回的瓦片数据流,生成瓦片后返回。由于移动设备可以支持HTTP、UDP和Socket等协议,为了保证与服务器端通信的可靠性,在本系统中采用了HTTP协议,实现客户端和应用服务器之间互联互通。以下是客户端与应用服务器之间的部分交互代码:
  HttpConnection con=null;
  DataInputStream dis=null;
  Image2D retImage=null;
  con=(HttpConnection) Connector.open("http://tile.省略/"+quadkey+".png");
  con.setRequestMethod(HttpConnection.GET);
  con.setRequestProperty("User-Agent","Profile/MIDP-1.0 Configuration/CLDC-1.0");
  con.setRequestProperty("Content-Language","en-US");
  con.setRequestProperty("Accept","image/png");
  con.setRequestProperty("Connection","close");
  int st=con.getResponseCode();
  if (st!=HttpConnection.HTTP_OK){
   throw new IOException("HTTP Response Code="+st);
   }
  int lnth=(int)con.getLength();
  if (lnth    }
   dis=con.openDataInputStream();
   byte[] bts=new byte[lnth];
   dis.readFully(bts);
   Image img=Image.createImage(bts,0,lnth);
   retImage=new Image2D(Image2D.RGB,img).
   (二)服务器端设计。服务器端的设计主要是解决处理来自客户端的访问请求,检索海图瓦片,并向客户端反馈响应。主要的组成部分有数据库连接池的配置和处理访问请求的servlet。数据库连接池在应用服务器的配置文件中做好了部署,并且对登录用户进行验证。应用服务器采用了Tomcat6.x,在其server.xml文件中配置数据库连接池的代码片段如下:
  
   服务器端应用程序采用了struts2.0框架,在应用程序中也对数据库连接进行了配置,以下是配置数据库的代码片段:
  
  ………………
  
  
  
  
  
  
  
  
  
  
  
  
  
  ………………
  
   这样,在应用程序中就可以直接引用chart数据源,获取与数据库的连接。
   检索海图瓦片并向客户端做出反馈响应的任务主要由servelt完成,它首先接受客户端的请求,获得客户端请求海图瓦片的quadkey(四叉数码),由quadkey在海图瓦片库中检索到对应瓦片,再将其反馈给客户端,以下是实现的代码片段:
  ………………
  //从HttpServletRequest对象中获得客户端请求的quadkey
  String quadkey=request.getParameter("quadkey");
  //从HttpServletResponse对象中打开输出流
  DataOutputStream dost=new DataOutputStream(new DataOutputStream(response.getOutputStream());
  //通过获得的瓦片的quadkey,打开数据输入流
  DataInputStream dist=new DataInputStream(new FileInputStream(new File(“quadkey”)));
  //创建缓存,保存瓦片数据。由于瓦片较小,每张瓦片的大小不超过2k
  byte tile[]=new byte[2048];
  //向缓存中读入瓦片数据
  dist.read(tile);
  //输出流向客户端反馈瓦片数据
  dost.write(tile);
  ……
   五、系统安全对策
   在无线网络传输中,移动用户和基站是通过无线信道进行通信的,而无线信道具有公开性的特点,任何拥有相同频段接收设备的用户都可以对无线设备进行监听。因此,与有线信道相比,无线信道更容易被其他用户窃听而不容易被发现。由于本系统是向用户提供船舶动态信息查询,对于安全性有一定的要求,在系统设计时采取了对用户登录密码加密的措施。
   MD5(Message-digest Algorithm 5)是由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2、MD3和MD4发展而来,是一种Hash算法。Hash算法具有单方向性的特点,破解需要大型计算机或网络计算辅助才能完成,利用数学方法反向运算是不可能破解的,因此MD5具有一定安全性。本系统采用MD5技术加密算法对用户登录密码进行加密,然后存储在数据库里,用户验证登录时需要输入登录密码,系统自动将密码与MD5加密后的数据库密码进行比对,二者一致时用户才能继续登录本系统,否则无法登录。
   六、结束语
   本系统基于J2ME技术和现有的Web技术,实现了电子海图在移动通信设备上的显示,并实现了船舶动态信息查询的功能。在一定程度上能够满足船舶管理者对船舶信息的掌握需求,也能够达到随时为管理者查询所需要船舶信息的目的。随着移动通信技术的不断发展、3G时代的到来和手机硬件性能的不断提升,基于J2ME技术的无线应用将会迎来更大的发展机遇。
  
  主要参考文献:
  [1]叶亮辉.基于J2ME的手机导游系统的开发[J].内江科技,2006.7.
  [2]黄聪明.Java应用程序开发[M].北京:清华大学出版社,2002.
  [3]李迅.J2ME无线设备编程[M].北京:机械工业出版社,2002.
  [4]杨湘荣,杨坚荣,李超.移动选课和成绩查询系统的研究与实现[J].广西广播电视大学学报,2006.3.

推荐访问:海图 显示 开发 系统