基于J2ME的防汛信息系统的研究
扫描二维码
随时随地手机看文章
一、 引言
在雨季,汛情瞬息万变,防汛管理与决策对时效性要求非常高。如果防汛人员不能及时掌握最新的防汛信息,将会给防汛工作带来极大的困难,甚至灾难性的后果。因此,非常有必要建立完善的防汛信息系统。但是防汛工作往往覆盖地域广大,涉及人员众多,而且工作环境复杂,这都会影响信息及时准确的传达。移动通信覆盖范围广,具有三A(任何时间、任何地点、任何方式)的特点,正好可以满足防汛工作的需要。手机上网主要通过两种方式:WAP和J2ME。WAP只能访问使用WML语言编写的网页,功能受到很多限制;J2ME可以和J2EE无缝结合,并且J2ME程序界面友好,输入输出方便,安全性高。所以本文采用J2ME和J2EE技术,开发了一套防汛信息系统来提高防汛工作的效率。
二、J2ME
J2ME是Sun公司专门为开发小型的资源受限的消费性电子设备的应用程序所提供的Java版本,被广泛应用于手机、PDA和电视机顶盒等小型资源受限设备。J2ME实际上是一系列规范的集合(JSR)。因为所涉及到的设备在硬件配置和性能上千差万别,为了方便应用程序的开发,J2ME体系结构采用模块化、可扩展的设计,主要包括了4层:主机操作系统、配置、简表和厂商可选包。不同层次的规范相互协作来提供一个完整的移动Java平台。
J2ME的优点包括:
(1) 编写一次,到处运行。J2ME程序具有良好的跨平台性和可移植性。
(2)与J2EE无缝结合。
(3)良好的安全性
J2EE是一种利用Java平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构,它规范了分布式体系的应用开发。J2EE也采用了分层结构,典型的J2EE结构的应用程序包括四层:客户层、表示逻辑层(Web层)、业务逻辑层和企业信息系统层。每一层上定义了相应的组件和容器。各层相互独立,通过标准的JavaAPI来调用和传递参数。J2EE作为一个广泛而通用的标准,大大简化了应用开发和移植的过程。
三、防汛信息系统
本系统采用WebLogic做为应用服务器,数据库管理系统为MS Sqlserver2000。整个系统主要包括四个模块:用户登录模块、水情查询模块、天气查询模块、用户定制模块。
(1)用户登录模块
该模块实现用户身份验证功能,只有合法用户才能登陆系统来获得数据信息。手机每次上网的IP地址都是动态分配的,用户在登录时会向数据库中写入本次登录的IP地址,用于用户定制模块中服务器通过Socket主动向客户端发送信息。
(2)水情更新和查询模块
这个模块是是防汛信息系统的重点。只有保持各水文测站数据的实时更新并保证数据的准确可靠,才能保证防汛工作的正常进行。通过手机登录系统后,各水文测站可以更新数据,其它用户可以查询各水文测站当前的和历史的水情数据。因为考虑到手机输入数据比较困难,服务器还应该提供通过Web方式网上更新数据的功能。
(3)天气更新和查询模块
天气情况也是防汛工作要考虑的一个重要因素。用户可以通过手机查询各主要城市的天气预报及历史同期天气,以便对天气情况做出正确的判断。
(4)用户定制模块
在汛期,水情瞬息万变,防汛信息系统应该具有在出现紧急情况的时候能够主动通知相关责任人的功能。用户定制模块可以让用户根据自己情况定制所需的信息,系统会在定制信息出现的时候自动向用户手机发送信息来提醒用户及时处理。
客户端和服务器端的连接如图2所示:
在本系统中,客户端和服务器之间主要通过HTTP协议进行通信,工作流程如下:
(1) 用户启动手机上的MIDlet进入登录界面,输入用户名和密码进行登录。MIDlet用Connector类的open方法建立一个到服务器端的连接,并把这个连接强制转换成为HttpConnection类型。
(2) 客户端用HttpConnection类的openInputStream方法和openOutputStream方法来返回输入输出流并通过它们来发送请求和接收响应信息。
(3) 服务器端接收到客户端的连接请求后,把它封装成一个HttpServletRequest对象,调用相应的Servlet,通过EJB或JavaBean访问数据库,并把处理结果返回客户端的MIDlet。
(4) 客户端MIDlet使用输入流接收服务器端返回的结果,根据返回的是”station”(测站)、”person”(普通用户)还是”none”(无此用户)而在屏幕上呈现不同的界面。
(5) 登录成功后,MIDlet重新建立HttpConnection来进行数据更新或查询操作。
四、技术难点和解决方案
4.1 用户定制信息的接收
用户定制的信息有两种发送的方式:
(1)定时发送。用于把用户定制的日常信息每天定时发送给用户。
(2)紧急发送。当出现紧急汛情时即时把信息发送到相关的责任人。
在客户端,对相关信息的接收是通过J2ME的PUSH注册功能来实现的。Push技术是一种能够使得Midlet应用程序不需要用户的操作而自行启动运行的机制。在通常的网络连接中,是客户端主动去连接服务器,服务器接受请求并把处理结果返回客户端。而Push技术不同,它不需要应用程序通过“拉(pull)”的方式通过网络取得数据,客户端需要的数据会被主动“推(push)”向客户端的移动设备。当移动设备接收到信息时,相关的Midlet会被激活并开始运行,处理发送过来的数据。
服务器端使用Socket可以自动向与其相联的客户端发送数据,这就为Push技术提供了保证。先由客户端的 MIDlet注册好服务类型,地址,端口号,当服务器端检测到有紧急情况发生或用户定制的情况发生时,就会将相应的消息通过Socket发送到客户端,客户端会启动相应的MIDlet对该消息进行相应处理。
J2ME平台从MIDP2.0开始增加了对Push注册的支持。Push机制可以通过如下两种方式激活Midlet:一种是基于接入的网络连接的,当客户端接收到网络Push来的信息后就自动启动Midlet运行;另一种是基于计时器的警告通知,当。Push 注册机制可以使MIDlet 自动运行,运行方式有两种:一种基于定时技术,当到达特定时间,程序就会运行;另一种基于网络,当设备受到网络推送的信息时,可以启动程序运行。本系统采用第一种方式来实现定制信息的发送。
要在客户端使用Push技术,必须事先进行Push注册。Push注册有两个方法:静态注册和动态注册。静态注册需要将 Push注册信息添加到JAD文件中,在Midlet Suite安装时完成注册。静态注册的缺点是必须通过Midlet Suite安装过程来实现,一但安装好后就无法添加新的注册,同时如果要取消Push注册,也必须卸载Midlet Suite。动态注册是MIDlet通过Push Registry接口API来实现的,可以在程序运行时添加或取消Push注册,增加了灵活性。本文采用了动态注册的方法。
在动态注册时MIDlet需要告诉AMS它所要连接的服务器的IP地址、端口号和要启动的MIDlet类,实现代码如下:
…
String midletClassName=”com.water.PushInfo”;//这是自动运行处理数据的Midlet
String ConnectionURL =”socket://:6789”;
String AllowedSender=”*”;//*表示允许接收任意地址发送的信息
PushRegistry.registerConnection(midletClassName, ConnectionURL, AllowedSender);
…..
这样,当AMS监测到端口号为6789的Socket服务器发送来的数据后,就会启动com.water包下的PushInfo来处理这些数据。
取消注册可以使用PushRegistry.unregisterConnection(ConnectionURL)来完成。
4.2 数据库连接池技术
本例采用了数据库连接池技术。传统的Web应用程序进行数据库操作时一般要经过(1)建立数据库连接;(2)进行数据库的增加、删除、修改、查询操作;(3)断开数据库连接这三个步骤。这种方式有一个重要的缺点:要为每个Web请求建立一次数据库连接并对其进行管理,这些操作都会耗费大量的时间和资源。数据库连接池的基本思想是预先建立一些连接,放置在内存对象中以备使用。当程序中需要建立数据库连接时,只需从内存中取出一个来用而不用重新建一个连接。同样,使用完毕后,只需将此连接放回到内存中即可,而连接的建立和断开都由连接池自身来管理。Weblogic服务器提供了图形化的界面来建立数据库连接池,设置比较简单。建立好数据库连接池和数据源后,就可以在Servlet中通过JavaBean或EJB来调用,代码如下:
…
Hashtable ht = new Hashtable();
ht.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
ht.put(Context.PROVIDER_URL,"t3://localhost:7001");
try
{
Context ctx=new InitialContext(ht);
DataSource ds=(DataSource)ctx.lookup("WaterJNDI");
Connection con=ds.getConnection();
…
}catch(Exception e){
…
}
…
五、结束语
本系统为各级防汛部门有关人员提供防汛信息(包括历史、实时水雨情、工情、旱情、灾情等)的查询服务,并在有紧急情况时主动通知相关责任人,从而使防汛人员可以随时随地掌握最新的防汛信息,提高了防汛工作的效率。
随着移动通信技术的发展和3G技术的即将实施,无线网络具有良好的发展前途,使用手机、PAD等小型设备与 Internet进行网络通信也必将成为未来发展的方向之一。随着J2ME技术的不断完善和小型设备功能的更加成熟,支持移动商务和移动通信的应用程序一定会得到更快、更大的发展和广泛应用。
六、创新点
本文作者创新点是把J2ME应用于防汛工程,并且应用了MIDP2.0中的Push注册来主动向客户端发送消息。在服务器端使用了数据库连接池技术,提高了访问数据库的效率。
本系统能有效的提高防汛工作的效率,使得紧急情况也能得到及时处理,从而大大降低了防汛工作的失误。本系统预估计经济效益为50万元。
参考文献
[1] 吴敏,刘萍.基于J2ME和J2EE的手机银行设计与实现[J].微计算机信息,2006.22:294-296.
[2] 王莉,潘正运,刘伟.一种基于J2ME的移动警务应用系统的新型设计[J].计算机工程,2006.7:283-285.
[3] 方安平,李树析. MIDP2.0在移动邮件中的研究与应用 [J].武汉理工大学学报·信息与管理工程版,2006.6:52-55
[4] 张璞,文登敏.基于J2ME和J2EE的移动电子商务系统研究[J].成都信息工程学院.2006.8:505-507
[5] 郝玉龙,李向前.J2ME移动应用开发[M].清华大学出版社·北京交通大学出版社,2006