`
bluky999
  • 浏览: 715735 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java的可嵌入式轻量server应用

阅读更多

在一些应用场合,我们需要分发一个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和我联系】

1
2
分享到:
评论
5 楼 kloyf 2013-01-17  
kloyf 写道
楼主的想法,我已经用jetty+jdic写出了一个简单的例子。
可以17634048沟通下。

4 楼 kloyf 2013-01-17  
楼主的想法,我已经用jetty+jdic写出了一个简单的例子。
可以沟通下。
3 楼 JetMah 2010-07-15  
bluky999 写道
JetMah 写道
楼主说的这种情况我们也遇到过,其实使用PHP的原因还在于可以使用Zend进行一下加密,但是Java目前还有些难。


你所说的加密是指对那部分的加密?


代码加密,因为是要交付给最终用户用的。
2 楼 bluky999 2010-07-13  
JetMah 写道
楼主说的这种情况我们也遇到过,其实使用PHP的原因还在于可以使用Zend进行一下加密,但是Java目前还有些难。


你所说的加密是指对那部分的加密?
1 楼 JetMah 2010-07-13  
楼主说的这种情况我们也遇到过,其实使用PHP的原因还在于可以使用Zend进行一下加密,但是Java目前还有些难。

相关推荐

    simplewebserver:SimpleWebServer 是一款使用Java基于NIO编写的超轻量级开源Web Application Server

    轻量级 并不基于servlet,源代码仅3000行左右,jar包仅 0.1m 左右,零依赖,无xml,极低的内存占用,所以不用担心程序能不能在嵌入式(树莓派)/Android 上能否正常运行 完整 Cookie,Interceptor,Json,模板,文件...

    jReflectServer:轻量级的Java HTTP服务器和Web服务框架-开源

    jReflectServer是一个非常小巧,轻巧且超级易于使用的Java Web服务器和框架,用于创建(分布式)纯Java Web应用程序,Web服务和小型网站。 jReflectServer能够将请求随机转发到远程服务器节点的集群。 对于这种...

    java面试题及技巧4

    │ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ ...

    java面试题目与技巧1

    │ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ ...

    java面试题以及技巧

    │ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ ...

    JDK1.6新特性与实战例子

    JDK6的新特性之一:Desktop类和SystemTray类 JDK6的新特性之二:使用JAXB2来实现对象与XML之间...JDK6的新特性之五:轻量级Http Server JDK6提供了一个简单的Http Server API,据此我们可以构建自己的嵌入式Http Server,

    jetty-6.1.9 jspweb 服务器

    Jetty 可以作为嵌入式服务器使用,Jetty的运行速度较快,而且是轻量级的,可以在Java中可以从test case中控制其运行。从而可以使自动化测试不再依赖外部环境,顺利实现自动化测试。 作为嵌入式服务器使用代码实例:...

    java面试题及技巧3

    │ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ ...

    java面试题以及技巧6

    │ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ ...

    LeetCode字符串换行-rhythmdiao-java-base:个人开发和使用的轻量开发框架

    嵌入式jetty服务器以及daemon模式构建应用程序 provides annotated handlers to demonstrate simple restful like API, handler switch Restful风格自定义接口,注解方式注射请求参数,接口降级开关 wrapped json ...

    JSP-JTBC-CMS(SQLITE).rar

    该系统使用了SQLite数据库,它是一种轻量级的嵌入式数据库,适用于小型应用程序和移动设备。通过使用SQLite数据库,该系统可以方便地存储和管理网站的内容数据,如文章、图片、用户信息等。JSP_JTBC_CMS(SQLITE).rar...

    嵌入式HTTP服务器NanoHTTPD.zip

    NanoHTTPD是一个免费、轻量级的(只有一个Java文件) HTTP服务器,可以很好地嵌入到Java程序中。支持 GET, POST, PUT, HEAD 和 DELETE 请求,支持文件上传,占用内存很小。可轻松定制临时文件使用和线程模型。NanoHTTPD...

    基于Java Swing + MySQL的图书管理系统.zip

    嵌入式系统:在资源有限的环境中,作为轻量级数据库解决方案。 总之,MySQL凭借其开源、跨平台、高性能、灵活扩展、丰富功能集和庞大社区支持等特点,成为现代数据管理领域中不可或缺的一部分,适用于各种行业和...

    基于Java Swing + MySQL + JDBC 的图书管理系统.zip

    嵌入式系统:在资源有限的环境中,作为轻量级数据库解决方案。 总之,MySQL凭借其开源、跨平台、高性能、灵活扩展、丰富功能集和庞大社区支持等特点,成为现代数据管理领域中不可或缺的一部分,适用于各种行业和...

    基于Java SpringBoot + mysql的在线图书展示商城。.zip

    嵌入式系统:在资源有限的环境中,作为轻量级数据库解决方案。 总之,MySQL凭借其开源、跨平台、高性能、灵活扩展、丰富功能集和庞大社区支持等特点,成为现代数据管理领域中不可或缺的一部分,适用于各种行业和...

    基于Java+Springboot+Vue的宿舍管理系统.zip

    嵌入式系统:在资源有限的环境中,作为轻量级数据库解决方案。 总之,MySQL凭借其开源、跨平台、高性能、灵活扩展、丰富功能集和庞大社区支持等特点,成为现代数据管理领域中不可或缺的一部分,适用于各种行业和...

    Java网上书店管理系统(基于MVC模式编写:前端jsp页面、数据库MySQL、服务器Tomcat).zip

    嵌入式系统:在资源有限的环境中,作为轻量级数据库解决方案。 总之,MySQL凭借其开源、跨平台、高性能、灵活扩展、丰富功能集和庞大社区支持等特点,成为现代数据管理领域中不可或缺的一部分,适用于各种行业和...

    Simple HTTP Servlet Server-开源

    一种100%Java的小型轻量级HTTP服务器实现,能够执行servlet。 它的主要目标是体积小,速度快,而不是功能强大。 完美用作其他程序中的嵌入式服务器。

    深入理解Android:卷I--详细书签版

    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 ...

    一个简单的仿QQ在线聊天系统 .zip

    嵌入式系统:在资源有限的环境中,作为轻量级数据库解决方案。 总之,MySQL凭借其开源、跨平台、高性能、灵活扩展、丰富功能集和庞大社区支持等特点,成为现代数据管理领域中不可或缺的一部分,适用于各种行业和...

Global site tag (gtag.js) - Google Analytics