Android设备上i-jetty环境的搭建-手机上的web服务器
本文主要跟大家分享如何将一台Android设备打造成一个web服务器使用。
编译i-jetty
1、将源码download下来,http://code.google.com/p/i-jetty/downloads/list
2、解压文件,进入pom.xml所在目录,执行命令:mvncleaninstall,参照(http://code.google.com/p/i-jetty/wiki/BuildInstructions)
执行过程中,出现了异常导致失败,是生成classes.dex时内存溢出的问题,我们用Eclipse来解决吧。
3、创建i-jetty的android项目,将下载的i-jetty源码覆盖进去,
4、将下面目录下的jar引入到i-jetty项目中:
C:\DocumentsandSettings\troyz\.m2\repository\org\eclipse\jetty
还需要servlet-api-2.5.jar。
5、编译并将i-jetty安装到设备中。
将web项目发布到设备上去。参照(http://code.google.com/p/i-jetty/wiki/DownloadableWebapps)
因为android上的java虚拟机不能直接解释执行.class文件,所以首先需要把web项目中的.class文件和.jar文件转换成虚拟机能识别的.dex文件。
这里假设web项目的目录在:E:\demo。
1、需要将WEB-INF/classes目录和lib目录下的文件,用dx命令处理成classes.dex并放到lib目录下。
dx.bat--dex--output=E:\demo\WEB-INF\lib\classes.zipE:\demo\WEB-INF\classesE:\demo\WEB-INF\lib
2、打成war包。
cd E:\demo
jar-cvfdemo.war*.*
3、生成classes.zip后,可以将原先的.class和.jar删除掉。
4、通过i-jetty的download功能,把war下载到设备上去,也可以直接把demo.war放到/sdcard/jetty/webapps/目录下。
5、启动i-jetty服务器。
i-jetty对jsp的支持暂时似乎不完美,可能是我没有找到好的方式,对html是支持的,包括html中的js,支持servlet。
androidtablet(sdk3.0)上,i-jetty的类加载器无法动态解压加载classes.zip,报以下异常:
dalvikvm(22984):Can'topendexcache'/data/dalvik-cache/mnt@sdcard@JettyContext217761537@webinf@WEB-INF@lib@classes.zip@classes.dex':Nosuchfileordirectory
原因是/data/dalvik-cache目录不可写。
http://code.google.com/p/android/issues/detail?id=966
有一种解决方案:在打包android项目时,把web项目中的java文件和jar文件放到android项目中一起打包,这样就避免让i-jetty动态加载dex文件了。war包中就不需要classes.zip,jar,.class文件了。但是这种方案有一个缺点:不能动态部署新的war包。
6、如果要在Web程序中,使用android的Context,需要这样做:
- public void init(ServletConfig config) throws ServletException
- {
- super.init(config);
- android.content.ContentResolver resolver = (android.content.ContentResolver) config.getServletContext().getAttribute("org.mortbay.ijetty.contentResolver");
- android.content.Context androidContext = (android.content.Context) config.getServletContext().getAttribute("org.mortbay.ijetty.context");
- }
Android设备上i-jetty环境的搭建-手机上的web服务器的更多相关文章
- 非root Android设备上Tcpdump的实现
通常我们在Android应用中执行某个命令时会使用"Runtime.getRuntime().exec("命令路径")"这种方式,但是当我们执行抓包操作时,使用 ...
- 在ios android设备上使用 Protobuf (使用dll方式)
http://game.ceeger.com/forum/read.php?tid=13479 如果你的工程可以以.Net 2.0 subset模式运行,请看这个帖子中的方法. 地址:http://g ...
- (转)在ios android设备上使用 Protobuf (使用dll方式)
自:http://game.ceeger.com/forum/read.php?tid=13479 如果你的工程可以以.Net 2.0 subset模式运行,请看这个帖子中的方法. 地址:http:/ ...
- android设备上运行i-jetty服务
android设备上运行i-jetty服务: 1) i-jetty安装 本人小菜一个,i-jetty源码有好几个文件,不知道怎么运行起来,于是找了一个现成可运行的i-jetty工程(感谢这位同学的分享 ...
- 如何查看Android设备上的分区信息
Android设备上,一般都会存在一块eMMC存储芯片来存放系统和用户数据,甚至部分的引导程序. 一般设备出厂时,各个厂商都会将这块存储芯片分成很多的分区,每个分区内存放不同的内容.具体分区的布局每个 ...
- Android设备上的逐像素碰撞检测
介绍 我正在我的Android设备上开发一款游戏,不用说,因为我想要接触到尽可能多的用户,我做到了 省略了硬件加速.因此,我需要编写能够在大多数设备上运行的最快的代码.我从一个简单的表面视图开始 并使 ...
- 利用 nodeJS 搭建一个简单的Web服务器(转)
下面的代码演示如何利用 nodeJS 搭建一个简单的Web服务器: 1. 文件 WebServer.js: //-------------------------------------------- ...
- 如何通过Chrome远程调试android设备上的Web网站
网上的帖子很多,但很多都是老版本的,试过了,根本不管用,花了一天时间,终于在本机试验通过了,特记录下来,以备用.有需要的朋友也可以参考.先上一张图,看看PC端chrome上调试的效果: 左边是手机的模 ...
- windows上JSP开发环境全搭建
JSP开发环境全搭建 最近需要用到JSP做项目,所以要配置JSP的开发环境,总结一下配置步骤以备以后再配置需要. 配置JAVA开发环境,配置JDK 下载JDK,在这里下载开发所需的JDK,可以根据自己 ...
随机推荐
- 设置一个POJO的某个属性的默认值
//月利率private BigDecimal monthRate=new BigDecimal(0);
- UVa 1606 (极角排序) Amphiphilic Carbon Molecules
如果,没有紫书上的翻译的话,我觉得我可能读不懂这道题.=_=|| 题意: 平面上有n个点,不是白点就是黑点.现在要放一条直线,使得直线一侧的白点与另一侧的黑点加起来数目最多.直线上的点可以看作位于直线 ...
- UVa 140 (枚举排列) Bandwidth
题意较复杂,请参见原题=_=|| 没什么好说的,直接枚举每个排列就好了,然后记录最小带宽,以及对应的最佳排列. STL里的next_permutation函数真是好用. 比较蛋疼的就是题目的输入了.. ...
- SCOI2007修车
这样也行?这构图把我惊呆了: 把每个工人拆成N个点.记为A[i,j]表示第i个工人修倒数第j辆车. 每个车跟所有N*M个工人拆出的点连边.流量为1,费用为time[i,j]*k. 源和每辆车连边,N* ...
- 微软 Virtual studion Code
在 Build 2015 大会上,微软除了发布了 Microsoft Edge 浏览器和新的 Windows 10 预览版外,最大的惊喜莫过于宣布推出免费跨平台的 Visual Studio Code ...
- (六)学习MVC之标签a提交页面
标签<a>如何做到与<input type="submit"/>一样有提交页面信息的效果? @using (Html.BeginForm("Log ...
- 解析activity之间数据传递方法的详解
转自:http://www.jb51.net/article/37227.htm 本篇文章是对activity之间数据传递的方法进行了详细的分析介绍,需要的朋友参考下 1 基于消息的通信机制 ...
- Entity Framework中查看生成的SQL语句
Entity Framework 4.0 中是这样的,高版本的跟这个有些差异,不太一样,貌似已经到7了 using (Entities entities = new Entities()) { var ...
- 什么是MBeanServer
什么是MBeanServer MBeanServer是一个包含所有注册MBean的仓库.它是JMX代理层的核心.JMX1.0规范提供一个接口叫 javax.management.MBeanServer ...
- HttpListener supports SSL only for localhost? install certificate
1.Start-All Programs - 2.execute below lines on that ‘Developer Command Prompt..’ tool makecert -n & ...