在一些应用场合,我们需要分发一个web application到客户的PC上 --- 这个意思是说,我们需要在客户的PC上开启一个web server来运行我们的web application。
经常地,我们把所有需要的资源和代码都打包存储在一个对客户只读的USB设备里,我们希望客户在需要时在PC上外接该USB设备,自启动或者点击我们的启动程序图标即可自动开启webserver并使用用户的默认浏览器打开诸如http://localhost:8080这样的地址。
这样的场景,我见过有些开发团队使用php来构建的,也是在USB里打包好php(on windows)和某种php的轻量server,然后写一个.bat脚本来自动化这些工作。那么使用Java怎么做?
我第一次遇到时,确实有些迷茫;第一想法是,写一个.bat来启动tomcat,之后打开http://localhost:8080之类的地址;之后觉得这样的有些累赘,也许可以自己精简下tomcat?到这里,自然想到也许tomcat有轻量版本? 那还不如直接用Jetty好了。。。 就这样一路想起来,总结出这篇小文,遂分享出来,希望对各位有帮助。
1 首先我们分解下这个案例:
(1 核心是写一个web application,肯定是动态的了,我想数据层的存储也肯定是文件或者sqlite之类的;
(2 接下来是选择一个web server来运行这个application;常见的比较轻量的就是tomcat,jetty之类的了;
(3 使用用户的默认浏览器或者我们提供的浏览器来作为客户端访问web application;
(4 以上3步的串连/自动化及其间的细节问题等。
2 第一步写web application不在本文的讨论范围,就忽略了;唯一可以提一下的是,数据层的选择:文件还是sqlite等?看自己的业务数据特点了;第2步选择server,常见的java轻量嵌入式server是jetty等,另外JDK6里面也有SUN提供的httpserver(com.sun.net.httpserver.HttpServer),但这个一般只用于测试,而且我个人在实际项目中几乎很少见到使用。另外,现在tomcat有了tomcat embed,也许你可以考虑哦。
3 浏览器的选择: 最好是选择用户的默认浏览器了,比如使用start等命令来启动;但有些时候,我们希望这个USB里的程序显得更像是我们自己的,那你就可以使用诸如SWT和jdesktop这样的组件,定制一个自己的“浏览器”。
4 至于自动化问题,一般都是.bat脚本来执行了;或者,你可以使用java程序来启动server等 --- 这完全是可行的,很多应用都这么做。
5 一些细节问题: 比如操作系统兼容性,你最好清楚你的客户都是什么OS;如果需要,你最好多写几个启动脚本以适应不同的操作系统;而且,如果我们所选择的第三方程序无法兼容32位和64位的系统,那么你可能会更麻烦。。。
总结:
本文所提到的场景,并不经常出现;但这仍然代表着一小部分问题的解决方案,如果你遇到了,希望对你有用。不足之处,敬请指正。【你可以在yangzt.com和我联系】
分享到:
相关推荐
轻量级 并不基于servlet,源代码仅3000行左右,jar包仅 0.1m 左右,零依赖,无xml,极低的内存占用,所以不用担心程序能不能在嵌入式(树莓派)/Android 上能否正常运行 完整 Cookie,Interceptor,Json,模板,文件...
jReflectServer是一个非常小巧,轻巧且超级易于使用的Java Web服务器和框架,用于创建(分布式)纯Java Web应用程序,Web服务和小型网站。 jReflectServer能够将请求随机转发到远程服务器节点的集群。 对于这种...
│ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ ...
│ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ ...
│ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ ...
JDK6的新特性之一:Desktop类和SystemTray类 JDK6的新特性之二:使用JAXB2来实现对象与XML之间...JDK6的新特性之五:轻量级Http Server JDK6提供了一个简单的Http Server API,据此我们可以构建自己的嵌入式Http Server,
Jetty 可以作为嵌入式服务器使用,Jetty的运行速度较快,而且是轻量级的,可以在Java中可以从test case中控制其运行。从而可以使自动化测试不再依赖外部环境,顺利实现自动化测试。 作为嵌入式服务器使用代码实例:...
│ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ ...
│ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ ...
嵌入式jetty服务器以及daemon模式构建应用程序 provides annotated handlers to demonstrate simple restful like API, handler switch Restful风格自定义接口,注解方式注射请求参数,接口降级开关 wrapped json ...
该系统使用了SQLite数据库,它是一种轻量级的嵌入式数据库,适用于小型应用程序和移动设备。通过使用SQLite数据库,该系统可以方便地存储和管理网站的内容数据,如文章、图片、用户信息等。JSP_JTBC_CMS(SQLITE).rar...
NanoHTTPD是一个免费、轻量级的(只有一个Java文件) HTTP服务器,可以很好地嵌入到Java程序中。支持 GET, POST, PUT, HEAD 和 DELETE 请求,支持文件上传,占用内存很小。可轻松定制临时文件使用和线程模型。NanoHTTPD...
嵌入式系统:在资源有限的环境中,作为轻量级数据库解决方案。 总之,MySQL凭借其开源、跨平台、高性能、灵活扩展、丰富功能集和庞大社区支持等特点,成为现代数据管理领域中不可或缺的一部分,适用于各种行业和...
嵌入式系统:在资源有限的环境中,作为轻量级数据库解决方案。 总之,MySQL凭借其开源、跨平台、高性能、灵活扩展、丰富功能集和庞大社区支持等特点,成为现代数据管理领域中不可或缺的一部分,适用于各种行业和...
嵌入式系统:在资源有限的环境中,作为轻量级数据库解决方案。 总之,MySQL凭借其开源、跨平台、高性能、灵活扩展、丰富功能集和庞大社区支持等特点,成为现代数据管理领域中不可或缺的一部分,适用于各种行业和...
嵌入式系统:在资源有限的环境中,作为轻量级数据库解决方案。 总之,MySQL凭借其开源、跨平台、高性能、灵活扩展、丰富功能集和庞大社区支持等特点,成为现代数据管理领域中不可或缺的一部分,适用于各种行业和...
嵌入式系统:在资源有限的环境中,作为轻量级数据库解决方案。 总之,MySQL凭借其开源、跨平台、高性能、灵活扩展、丰富功能集和庞大社区支持等特点,成为现代数据管理领域中不可或缺的一部分,适用于各种行业和...
一种100%Java的小型轻量级HTTP服务器实现,能够执行servlet。 它的主要目标是体积小,速度快,而不是功能强大。 完美用作其他程序中的嵌入式服务器。
5.2.4 轻量级的引用计数控制类LightRefBase 108 5.2.5 题外话——三板斧的来历 109 5.3 Thread类及常用同步类分析 109 5.3.1 一个变量引发的思考 109 5.3.2 常用同步类 114 5.4 Looper和Handler类分析 121 ...
嵌入式系统:在资源有限的环境中,作为轻量级数据库解决方案。 总之,MySQL凭借其开源、跨平台、高性能、灵活扩展、丰富功能集和庞大社区支持等特点,成为现代数据管理领域中不可或缺的一部分,适用于各种行业和...