如何构建同一Web应用程序的在线和离线版本

时间:2014-11-21 19:12:34

标签: java html5 web-applications oracle-adf embedded-jetty

背景资讯 工作的组织使用Java,Oracle ADF框架,Oracle db / weblogic服务器堆栈。

新要求 我有一个新项目的棘手要求,使我正在构建的Web应用程序也可以脱机工作。根据要求,用户应该能够在“在线”模式下单击“离线工作”按钮,并能够将应用程序/或页面的本地副本提供给他们的设备。

一旦用户完成下载到本地设备的应用程序的离线版本中的数据条目,用户就应该能够点击“提交”按钮并将本地详细信息上传到服务器(即主要的生产服务器。当有互联网连接时,它将被完成。

正在尝试继续的解决方案如下:

  1. 我构建了一个std Web应用程序来处理生产在线模式。 它将使用ADF或/ JSF与Oracle db。
  2. 我将构建一个可以重用的离线模式的简单应用程序 大部分页面都是针对在线模式开发的。但数据库使用 将像hsqldb一样轻量级。而整个申请 将与像jetty这样的轻量级服务器捆绑在一起。
  3. 整个脱机应用程序和服务器将捆绑在一起 可以从任何设备下载并运行的可执行jar。
  4. 该应用的本地离线版本将有一个“提交”按钮。 当有互联网连接时点击此按钮然后 我们将对生产服务器进行web服务调用,然后提交 收集的数据
  5. 我的问题:

    1. 我建议的解决方案是否有效? ...有一个更好的方法吗?
    2. hsqldb是离线模式下最好的轻量级嵌入式数据库吗?
    3. jetty是一个很好的轻量级嵌入式Web服务器吗?...有更好的 一个?
    4. 可以在任何设备上运行可执行jar mac,ios,linux,android,windows等。

2 个答案:

答案 0 :(得分:2)

我遵循的方法如下:

  1. 我在普通的html5页面中使用angularjs构建了我的网页UI 并将其托管在我的weblogic服务器上。
  2. 我为描述所有内容的html页面编写了一个appcache.manifest文件 应用程序使用的css / js / image文件。所以,如果页面 一旦加载到浏览器然后该页面将被缓存在 浏览器。
  3. 我创建了用于将数据交换到我的html页面的restful服务 服务器。数据以json格式传递,我正在加密 使用AES加密的json有效负载。在客户端我用过 cryptojs库解密其余服务提供的数据。 how does cryptojs works
  4. 我使用pouchdb javascript库来存储由提供的数据 用户本地访问浏览器数据库(如果是chrome和firefox,pouchdb将数据存储到indexedDB,在safari和其他brwosers的情况下,它将数据存储到webSQLDB)。

答案 1 :(得分:0)

您可以将GlassFish支持的ADF Essentials用于脱机版本。 (这也会降低您的许可证成本)。您可以将Oracle XE数据库用于脱机版本。 http://www.oracle.com/technetwork/developer-tools/adf/overview/adfessentials-1719844.html