下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

详解如何使Android可作为web服务器以及嵌入式web程序开发教程

作者:课课家教育     来源: http://www.kokojia.com点击数:1646发布时间: 2016-05-05 16:31:36

标签: web服务器Android嵌入式I-jetty

   服务器是提供计算服务的设备。由于它是需要响应服务请求以及进行处理,因此一般情况下来说服务器应具备承担服务并且保障服务的能力。然而在网络环境下,根据服务器提供的服务类型不同,分为文件服务器,数据库服务器,应用程序服务器,WEB服务器等。那么本文就介绍一下WEB服务器,Web服务器是指网站服务器,其是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件,供全世界浏览;可以放置数据文件,供全世界下载。

  一、I-jetty的web应用程序编程语言的确定

  如果要确定其发布页面的语言,那么就要找到他发布的服务器中页面所在的位置,我们之前说服务器需要存储卡才可以发布服务,所以目标锁定在Android文件系统的sd卡。

  首先我们打开eclipse,然后启动虚拟机,再找到虚拟机的文件管理器,如下图所示:

文件管理器

  找到mnt/sdcard这个目录后,需要查看文件夹,查看时发现多了两个目录,且都跟jetty有关,如下图所示:

jetty

  我们在jetty文件夹下发现了一个webapps文件夹,仔细研究后发现这个目录与之前做过的jsp的目录很是相似,然后再看其文件类型,最后可以确定这些是jsp项目的页面:

webapps文件夹

  上面的网站文件是编译好的,其均为class文件,是无法查看其源码,这个采没采用其他的自定义的类还不是非常清楚,但可以看到他引入了一些jar包,存放在在webapps-console-webinf-lib文件夹下,如下图所示:

lib文件夹

  下面还有一些问题,如下:

    1.他开发网站是采用了什么工具,这个是不是也和jsp一样使用myeclipse进行开发,然后除了引入那些jar包外是否需要安装其他的插件。

    2.他的网站是如何部署到服务器上去的,例子中的网站是提供了一个apk的安装包,需要怎样打这个安装包?或者可以不用安装包,如果像jsp网站那样直接复制到webapps的目录下,这样是否可以使用?

  二、关于jetty服务器的详细介绍

  看了一下i-jetty的介绍,可以了解到它是pc端jetty服务器的简化版,我们也是有必要了解jetty服务器,下面我们了解一下jetty服务器。

  Jetty 

  Jetty是什么? 

  Jetty是一个用java实现的开源的Http和Web服务器,包括HTTPserver, HTTP client和javax.servlet container。

  Jetty用在何处? 

  1)Jetty的应用非常广泛,包括:

  2)大型集群系统,如Yahoo Hadoop Cluster

  3)云计算服务,如Google AppEngine 

  4)SaaS(Software-as-a-service)系统,如Yahoo! Zimbra

  5)应用程序服务器,如Apache Geronimo

  6)应用框架,如GWT

  7)工具,如 Eclipse IDE

  8)移动设备,i-jetty

  Jetty的特性是什么? 

  Jetty的广泛应用得益于其诸多优秀的特性:

  1)轻量级:Jetty体积非常的小巧,其占用系统资源也是相当的少。

  2)易嵌入性:Jetty不仅可以像tomcat一样独立运行,也可以非常便捷的嵌入到工具、框架或其他应用服务器中运行。Jetty在设计之初就是作为一个可以嵌入到其他的Java代码中的servlet容器而设计的,因此开发小组将Jetty作为一组Jar文件提供出来,可以非常方便的在自 己的容器中将Jetty实例化成一个对象并操纵该容器对象。

  3)灵活性:Jetty的体系架构及其面向接口的设计实现了功能模块高度可插拔和可扩展的特性,可以非常方便的根据需要来配置Jetty启用的功能。

  4)稳定性:Jetty运行速度较快,即使有大量服务请求并发的情况下,系统性能也能保持在一个可以接受的状态。

  Jetty的体系架构

Jetty的体系架构

  下面简单的介绍一下上图中的几个部分各自的内容:

  Connector主要是负责解析服务器请求并产生应答,在不同的Connector中用于处理不同协议的请求。

  Handler用于处理经过Connector解析的请求并产生应答内容,同样可以通过配置不同的Handler来负责处理不同的请求。

  TheadPool:管理和调度多个线程,用于服务于多个连接请求。

  Server表示代表一个Jetty服务器对象,其主要作用是协同Connector、Handler和TheadPool的工作。

  其中需要注意的是,TheadPool可以根据配置选择是否使用,Connector和Handler也可以通过配置非常方便的实现替换。

  Continuation机制 

  Continuation机制是Jetty用于更好的支持异步Servlet的机制。

  首先从技术应用背景方面来做一下简单的介绍。异步请求,其实是指当客户端发送一个请求到服务器的时候,客户端不必一直等待服务器的响应,例如JDBC连接池、Web 2.0中的Ajax(Asynchronous JavaScript and XML)技术等,然而当服务器端响应返回时,客户端则利用一个 Javascript 函数对返回值进行处理,从而以达到更新页面上的部分元素的值而不必刷新整个页面,从而带来更好的客户体验。但一般情况下这种异步事件只是存在很小一部分才会发生,那么如何保证服务器端一旦有了响应之后客户端马上就知道呢,我们有下面两种解决这个问题方法,首先一是先让浏览器每隔几秒请求服务器来获得更改,这个称之为轮询。然后二是服务器维持与浏览器的长时间的连接来传递数据,这个长连接的技术称之为Comet。每个方法都不可能是万能的,所以轮询也是有其短处,其的主要缺点就是产生了大量的传输浪费;而如果使用Comet技术的话,客户端和服务器端之间必须保持一个长连接,这个情况一般来说是,服务器端的一个Servlet会独占一个线程,如果有大量客户端维持长连接,这会给服务器端的处理能力带来很大的挑战。

  针对上述情况,Jetty利用Java语言的非堵塞I/O技术来处理并发的大量连接。更准确的说,Jetty实现了一个基于java.nio API 的SelectChannelConnector,其是允许它维持每个连接开放而不用消耗一个线程。当连接挂起时,Connector将请求维持在未决Continuations队列里,用来服务请求的线程返回给TheadPool,如此一来,该线程又可以服务于其他请求。暂停的请求停留在未决Continuations 队列里直到指定的过期时间,或者在它的Continuation上调用resume()方法。

  Jetty Vs Tomcat 

  Tomcat,其作为第一款成功的web容器,它具有广大的用户群体。从表面功能上Jetty与Tomcat都是差不多的,都提供Http Server和Servlet容器功能,那么下面我们从几个方面来比较一下这两者之间的差异:

  从构架方面

  从构架上面来时,Tomcat主要是作为JSP/Servlet的最新规范参考实现而设计,其是属于学院派,但是显得庞大而杂乱。Tomcat的最常见的使用方式是将其作为一个服务器软件安装到操作系统上,然后在里面部署web应用,如果嵌入到其他JEE服务器中以提供Web容器功能或者作为组件嵌入到其他应用中,操作起来比较麻烦。

  Jetty,它是由多个可以独立运行的构件通过彼此之间可插拔的接口组装在一起,其使用起来是非常灵活。然而在目前,Jetty在Geronimo、JBoss、Sybase EAServer、JOnAS和Glassfish等JEE应用服务器中提供Web容器功能。

  从性能方面

  从性能上来说,如果Tomcat在耗时请求连接数量不多时,那么也就是大多数请求能够在非常短的时间内处理完毕,这个情况下是具有较好的执行效率。

  Jetty 在存在大量并发连接,大多数连接又需要更多的处理时间(业务逻辑计算占用的时间)的情况下(这种情况是目前大多数web应用具有的特点),其是需要具有更好的性能和伸缩性。Jetty的这个优势是得益于Continuation机制,因为这样可以把有限的内存资源更多的留给应用程序使用。如果在静态文件服务方面,Jetty 也具有更好的性能。因为这是由于Jetty使用了文件内存映射机制和NIO来对静态内容进行输入输出,这种方式将占用更少的系统内存和更快发送速度。

  从标准规范方面

  Tomcat曾是利用sevlet2.4规范的参考实现,但从Servlet2.5之后,Tomcat不再是参考实现了,Sun公司自己创建了Glassfish,并作为Servlet2.5、Servlet3.0、Jsp2.1的参考实现。

  然而Jetty在执行规范方面是做的非常好的,是Servlet2.5规范的一个优秀实现。在Servlet3.0中,Jetty自有的continuation机制也成为规范备选方案之一。

  三、确定开发工具

  在以上说明中可以确定,jetty的项目是通过eclipse+jetty服务器开发,而eclipse和jetty都是跨平台开发工具,这些都是免费使用,也是开发项目工具的首选,而且这个是不用在意开发所在的平台是windows还是Linux。jetty本身是一个servlet容器,它不仅可以发布servlet项目,同时也支持jsp项目,但对jsp支持不是非常好。Jetty服务器还有一个优点就是可以把发布在tomcat里的jsp和servlet项目稍作修改进行发布,但它的实际效果还需要测试才能知道怎样。

     上文通过三大方面来介绍使Android可作为web服务器以及嵌入式web程序开发,首先是第一个是I-jetty的web应用程序编程语言的确定,第二是关于jetty服务器的详细介绍,第三是确定开发工具。第一部分和第三部分分别介绍了jetty与开发工具的一些基础内容,第二部分详细结婚扫课jetty服务器,主要是从特性、体系架构、Continuation机制和Jetty Vs Tomcat 。

赞(25)
踩(2)
分享到:
华为认证网络工程师 HCIE直播课视频教程