i-jetty 下的JavaWeb开发(一)
最近需要将android端作为服务器进行开发,让android作为服务器,现阶段技术并不是很成熟,主要的服务器有i-jetty,是基于PC端的jetty的移植。i-jetty同tomcat类似,也是Servlet的容器,但是i-jetty需要使用android的方法进行调用,否则android设备无法分辨。
通过一番搜索查阅,发现网上对这一块的描述都很浅显,有具体方法,但尝试过后又有一些问题,所以写下这篇博文,以供后来者学习借鉴之用。
首先,先说说环境的搭建。要在i-jetty下开发,最好的是使用maven的项目管理方法。Ant的方法是行不通的。所以,你需要去eclipse官网下载eclipse for JEE。然后去maven官网下载maven。maven的配置就不多说了,网上很多教程。有了这两样,你还需要一个连接eclipse和maven的桥梁:m2eclipse。具体的安装配置网上都有。
OK,这些配置好了之后,就可以去github上下载i-jetty的源码,https://github.com/EvidenceKiller/i-jetty-1,这是我fork的源码。里面包含i-jetty的源码,还包含两个范例,一个是console,一个是hello。具体我是参考的hello的例子。
在eclipse中导入下载的源码和范例。会有错误,不要在意这些细节。具体查看hello和example-webapps-parent这两个工程。example-webapps-parents是一个maven project,hello是一个maven module。打开example-webapps-parent目录下的pom.xml,内容如下:
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.mortbay.ijetty</groupId> <artifactId>example-webapps-parent</artifactId> <packaging>pom</packaging> <version>3.2-SNAPSHOT</version> <name>I-Jetty :: Example Webapps Parent</name> <description>Parent project for example webapps</description> <modules> <module>hello</module> </modules> <properties> <android.version>1.6_r2</android.version> <jetty.version>7.5.4.v20111024</jetty.version> <servlet.version>2.5-20081211</servlet.version> </properties> </project>
里面定义了project的version,groupId等等。看看就好。
在hello文件夹下的pom.xml中可以看到如下:
<parent> <groupId>org.mortbay.ijetty</groupId> <artifactId>example-webapps-parent</artifactId> <version>3.2-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> </parent>
说明他继承自example-webapps-parent。主要需要把<plugins>下的<arguments>中的dx.jar文件需要修改下。定义环境变量android_home,修改dx.jar文件目录。
做完这些,就可以运行了,右键hello项目,run as -> maven clean,成功之后,maven install,一般来说会成功,不成功的话看看报错原因,改正就好了。
部署:
不能直接拷贝war文件到android平台的jetty目录下的webapps,至少我是没成功。i-jetty根本不理我啊!!!试了好多遍了啊!!!i-jetty你要不要这么任性啊!!!好了不吐槽了。拷贝target目录下的hello-3.2-SNAPSHOT文件夹到jetty目录下的webapps,访问 http://your android ip:8080/hello-3.2-SNAPSHOT/sayit,看看是不是显示hello from servlet land!?
好了,到这里这个example就成功的编译,部署了。有问题欢迎评论。
下一篇讲下如何自己创建项目,编译部署自己的项目。