摘要:随着Internet技术的兴起,在嵌入式设备的管理与交互中,基于Web方式的应用成为目前的主流。本文主要论述了基于Android系统环境,在家庭网关中实现的设计方法,介绍了i-jetty,及其Web应用功能的实现。
关键词:Android;嵌入式Web服务器;i-jetty;SQLite
只要在嵌入式设备中集成了Web服务器,就能实现用户与嵌入式设备低成本、高通用性的信息交流,即客户端利用HTTP浏览器,在任何时间、任何地点都能实现与嵌入式设备的信息交互。可以说,嵌入式Web的应用极大地促进嵌入式设备,特别是家电设备、通信终端、仪器仪表的信息交互和远程控制功能。
在三网融合的大背景下,通过家庭网关实现外部网络即电视网、电信网、因特网与家庭内部电话、电视、电脑以及家庭电器设备的通讯,是当前家居智能化、现代化的重要发展趋势。本文的主要内容是研究基于家庭网关的嵌入式系统,实现简单实用的Web服务器功能,为外部网络提供一个方便快捷地访问和控制家庭内部资源的平台。由于Android操作系统能方便地将各种应用程序嵌入网络,以及开放性好、支持硬件丰富的特点,本文选择Android操作系统作为家庭网关设计的软件平台来建立Web服务器。
1Android系统介绍
Android移动设备平台是基于Linux内核再度开发的一个开源的操作系统和软件平台,最早期由Google公司进行研究和开发的。后来Google为了推广此技术,它和中国移动、HTC、三星、摩托罗拉等几十家手机通信运营商和制造商,建立了开放手机联盟,共同开发Android移动设备平台。
Android采用了软件堆层的架构,主要分为三部分:其最底层是基于Linux内核进行再度开发的,Linux内核只提供最为基础的功能;中间层包括由C++开发的虚拟机VirtualMachine(VM)和函数库Library;最上层是各种应用软件,包括通话程序、短信程序等。应用软件则由各公司自行开发,以Java编写。每个Android应用程序都在VM的一个实例中运行,这个实例驻留在一个由Linux内核管理的进程中。
本文实现的Web应用虽然基于Android操作系统,但并不像通常的AndroidAPP那样,需要一个AndroidManifest.xml文件包含必要的配置信息,且需要一个Activity类来提供UI。因为是Web服务不需要用户图形界面,只要用到Android提供的接口而已,即android.jar,这是一个Java归档文件,其中包含构建应用程序所需的所有的AndroidSDK类。而且,由于AndroidVM的原因,不能直接使用.class文件,需要转换为.dex文件,这些内容将在下文详细介绍。
2系统设计
在嵌入式系统中,主控制芯片的选择对于整个系统性能和良好运行有着至关重要的影响,在选择主控芯片的过程中,需综合考虑芯片自身的性能、兼容性、价格以及后续的升级等因素。综合考虑以上因素,本文设计的家庭网关采用了CortexA8处理器作为硬件平台。因为CortexA8支持大型的操作系统,高频率、高级存储管理及丰富的外设接口,为Android系统的运行提供了良好的硬件基础。
一个Web服务器也被称为HTTP服务器,它通过HTTP协议与客户端通信。这个客户端通常指的是Web浏览器。Web服务器监听浏览器的服务请求,根据用户请求的类型提供相应的服务;Web服务器在接收到用户端的请求后,处理用户请求并返回需要的数据。这些数据通常以格式固定、含有文本和图片的页面出现在用户端浏览器。本文Web服务器系统的设计架构如图1所示。
本文引用地址:
目前常用的嵌入式Web服务器主要有boa、thttpd、mini_httpd、shttpd和lighttpd等,但它们都不能直接应用于Android系统上。本文选用代码精炼、扩展性强的开源i-jettyWeb服务器,它可直接运行在Android系统上,为Servlet提供运行环境钝能。
Servlet是一种独立于平台和协议的Web服务器端的Java应用程序,可以生成动态的Web页面。与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载。
一个Web服务器系统是离不开数据库的支持。SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它是针对嵌入式产品而设计的,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。Android平台集成了SQLite数据库,并提供了操作的API。所以,只要在Servlet中引入开发Android程序提供的API,就能实现用Servlet操作SQLite。
本文下面主要介绍iierryweb嵌入式服务器的搭建,以及如何实现Servlet对SQIrite数据库的操作。
2.1i-jettyWeb服务器及其安装
ijetty是一个将开源Web容器Jetty移植到GoogleAndroid手机平台的开源项目,可以使嵌入式设备上运行Web应用。Jetty是一个100%由Java实现的、开源的HTYP服务器和javax.servlet容器,它不仅仅作为一个独立服务软件(如Tomcat)被使用,而且其优良的组件(Componet)设计、高内聚低耦合、高扩展性等特性使得Jetty非常易于作为嵌入式工具使用。总之,Jetty具有的优点包括:
1)配置使用简单;
2)设计模块化,代码简练易懂;
3)Tomcat的应用移植到Jetty基本不用修改;
4)非常适合嵌入式产品,可扩展性好;
ijetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以j将Jetty容器实例化成一个对象,可以迅速为一些独立运行(standalone)的Java应用提供网络和web连接。使用简单、配置简单,体积很小,但它的功能齐全,并且还是一个Servlet容器,这就让动态网页实现和后台操作(例如数据库操作)成为可能。同时,ijetty可以使用Android的接口,这就降低了开发的难度和复杂度。ijetty与其他主流的服务器一样,只要将已经做好的Web项目发布到服务器的Webapps目录下,就能实现网站的正常运行,十分的方便。
下面介绍ijetty服务器的安装:
首先,在eclipse里创建ijetty的android项目,将下载的ijetty源码覆盖进去。然后,将下面目录下的jar引入到ijetty项目中:C:\DocumentsandSettings\org\eclipse\jetty,还需要servlet-api-2.5.jar。最后,编译i-jetty,并将其安装到设备中。此后,即可对服务器进行各种配置。若想要使用自己的Web应用,则可以将自己的Web工程打包成war包,并将war包直接放到/sdeard/jetty/webapps/目录下。
推荐: