用户操作
[即时聊天] [发私信] [加为好友]
leeshaoqunID:leeshaoqun
142762次访问,排名558好友0人,关注者2
leeshaoqun的文章
原创 92 篇
翻译 1 篇
转载 135 篇
评论 36 篇
allin的公告
Allin的博客
老照片
最近评论
qqq:www
mldstk:wow gold,
mldstk:wow gold,
alex.xu:漂亮 ,说实话 比官方文档写的好
lkuzhi:是啊,能不能找个能用的过来啊
文章分类
收藏
    相册
    ♡韩国可爱的小童星 ♡
    korea
    韩佳人
    金泰熙
    宋惠乔
    宋慧乔车太贤《我和我的女友》
    微笑美女——韩孝珠
    Hibernate
    Hibernate中文网
    Hibernate官方网站
    php
    Haohappy的专栏--PHP5研究中心
    Spring
    Raible's Wiki -- AppFuse
    Spring 开发参考手册
    SpringFramework中文论坛
    SpringFramework官方站点
    个人博客
    greengnn's space
    开源
    java开源大全(RSS)
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    转载 把一个java web应用包装成桌面应用的简单做法收藏

    新一篇: 查看端口占用情况 | 旧一篇: action-mappings之attribute 和 parameter属性

    昨天玩h2的时候想起来的, 这年头把在线应用报装成桌面应用是越来越流行了,几年前做过类似的事情,简单介绍一下。 1. 选择一个嵌入的web 服务器和 数据库。 web服务器我选择的是jetty,虽然tomcat也有类似的嵌入版本,但是体积和性能都还是有点差距。 如果你的应用使用了大量的ajax效果,建议选择6的版本,对并发支持更好。 数据库方面我原来用的是hsql,现在可以选择h2. 两者的sql 兼容性都比较好,扩展功能也比较强。如果原来的应用在mysql上进行开发,则基本不用做修改, h2现在有mysql兼容模式,如果原来应用使用的是db2或者oracle,则你可能需要把一些函数和过程改用java实现,h2提供了这方面的支持。 数据问题方面也不用担心,h2目前比较成熟了,而且最大可以提供256g的文件支持。我做过一些测试,关机,死机,都还可以恢复的比较好。 h2的一个特性是支持只读数据库,所以你也可以选择将数据库备份成zip文件以后,以光盘的方式发布应用,很适合做大量分发的演示光盘,比较酷吧。 jetty+h2的组合占用系统资源非常少,而且速度极快, 在我成功移植以后,我的一个同事吃惊的发现速度要比原来的online版本提高了很多。一般用户几乎感觉不到在线操作的那种停顿。 java6自带的那个java数据库就不要考虑了,速度慢,体积大,兼容问题多多。 2. 使用JDIC或者java6提供的一些native特性和桌面进行整合 主要使用诸如系统托盘来提供一些控制操作和辅助功能, 打开浏览器或者将浏览器嵌入到swing应用等等。我的做法是将浏览器嵌入到swing应用中,并做了一些小手脚,保证用户不能使用浏览器直接访问,这样看起来更安全,更象桌面应用。 java6在这些方面有比较好的支持,6以前的版本可以使用JDIC,反正都是一回事。 另外可以选择jgoodie之类的扩展包,让你的桌面看起来更骚包一些。 当然,使用6的话启动要快一些,特别是重复启动的时候,java6还有的一个特性是splash的支持, 这样在启动的时候可以自然一些。 3. 对配置文件进行适当精简,使用混淆工具编译关键包 发布到桌面以后就意味着受攻击指数增加了,增加适当的防范也是必要的,此处如果不怕麻烦,可以使用gcj来编译。 4. 将执行包编译成exe文件, 使用安装工具打包 把java启动类编译成可执行文件的工具很多,我经过比较,使用的是launch4j,主要是支持的特性多一些,对linux也提供支持。 然后再把jre和应用整理规划好目录,使用安装工具打包, 我选择的是nsis, 也是免费的东西, nisi如果不想深入研究的话,建议找supertoy开发的一个脚本生成向导工具,很好用。 5. 其他 * 需要考虑数据的备份和交换操作, 我一般使用dbunit来干这个事, 因为导出导入都可以是完整的xml文件,比较方便。 * 如果要制作光盘版本,再配置一个auto run 就可以自动启动了。 * 要防止应用多次启动, 实现思路有2种,一个是使用一个端口来检测, 另外一个就是使用文件锁。 我使用的是后者,盗用了hsql的部分代码。 基本思路很简单,工作量也不大, 呵呵,反正当初用户是看不出来这是java 做得,还误以为我们是用delphi之类重新开发的。

    发表于 @ 2008年06月21日 23:41:00|评论(loading...)|收藏

    新一篇: 查看端口占用情况 | 旧一篇: action-mappings之attribute 和 parameter属性

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © allin