用于真实设备的 IBM Worklight SQL 适配器

Posted

技术标签:

【中文标题】用于真实设备的 IBM Worklight SQL 适配器【英文标题】:IBM Worklight SQL adapter for real device 【发布时间】:2014-05-09 06:30:52 【问题描述】:

如果我使用本地数据库,比如 mysql,它在模拟器和模拟器上运行完美,但对于真实设备,localhost 就不行,所以我尝试了在线数据库托管。

当使用来自 www.freemysqlhosting.net 的在线托管时,我使用提供的 ID 和密码在 Eclipse 中的数据库开发透视图中设置了数据库,因此它在我的模拟器、模拟器和连接到的真实设备上运行良好与设置该数据库的系统相同的网络,但对于任何匿名设备,它都失败了!

然后我尝试使用 sqllite,它再次与模拟器和模拟器一起工作,但对于真实设备,它显示 UNRESPONSIVE_HOST 错误。

我的问题是:如果我想使用 IBM Worklight 开发一个使用某些数据库的应用程序并想要分发它,我该怎么做?

【问题讨论】:

【参考方案1】:

如果您只提供来自 LogCat 的错误日志,那会更有帮助...

使用 android 时,最好不要使用localhost,而是使用实际的 IP 地址。看到这个问题:IBM Worklight - Unable to connect to database when using IP address instead of localhost

MySQL 和其他服务器一样是一个服务器;如果您想在您的私有本地网络之外使用它,那么您只需将它打开以接收来自公共 Internet 的传入连接。这不是开发人员需要大惊小怪的事情,这就是 IT 部门要做的事情。 So google and see how to open your network.

【讨论】:

它在我的模拟器上运行良好,所以我认为来自 logcat 的日志不会有帮助。能否在真机上指定 SQL 适配器的方法? 我会向管理员询问设备并发布日志,这可能需要一些时间,顺便谢谢:) 以下是错误日志(不是 logcat,而是过程调用错误日志):“错误”:[“运行时:org.apache.commons.dbcp.SQLNestedException:无法创建 PoolableConnectionFactory(通信链接失败\n \n上一个成功发送到服务器的数据包是在 0 毫秒前。驱动程序还没有收到来自服务器的任何数据包。)"【参考方案2】:

这听起来好像您正在尝试直接从您的设备访问数据库。是这样吗?

我强烈建议在此处使用 Worklight 适配器。所以模式是:

 App on Device ---> Adapter ---> Database

在该模式中,从设备到适配器的责任在于 Worklight,因此它应该完全不受它是真实设备还是模拟设备的影响,并且还应该独立于您使用的特定数据库或其位置它。

从适配器到数据库的跳跃是您可以设置和测试的东西,甚至无需在任何地方部署。只需使用 Eclipse 中的测试环境调用适配器方法即可。

为什么不直接从设备转到数据库?一般来说,这是一种非常糟糕的安全模式,您实际上是将您关心的数据放在一个非常容易被破解的地方。此外,它不能很好地扩展到大量用户:直接从设备连接意味着每个用户实际上都有自己的连接,通过适配器用户共享可控数量的连接。

【讨论】:

我实际上使用的是 SQL 适配器,从未尝试过直接连接。这是显示的错误: "errors": [ "Runtime: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Communications link failure\n\n最后一个成功发送到服务器的数据包是 0 毫秒前。驱动程序有未收到来自服务器的任何数据包。)" 如果您正在使用和适配器,那么我看不出为什么对适配器的请求对适配器是否可以访问数据库有任何影响。您是否在所有情况下都使用完全相同的服务器实例?【参考方案3】:

您的问题不在于 SQL 服务器,而在于设备与 Worklight 服务器之间的连接。您需要能够从设备连接到 Worklight 服务器。在设备上打开浏览器并将其指向 Worklight 控制台,然后查看您是否可以访问它。

【讨论】:

我认为工作灯服务器嵌入在应用程序中。你能告诉我如何指向我设备上的工作灯控制台吗?由于移动设备不支持 localhost 或任何其他 ip! 无法访问 Worklight 服务器上的 Worklight 适配器如何导致 SQL 异常?异常显然是 org.apache.commons.dbcp.SQLNestedException。 @Ric - 使用选项 Run As -> Build Settings and Deploy Target 来指定不同的服务器地址,你是对的,拥有 localhost 是行不通的。我看不出这会如何产生 SQL 异常,所以这里可能有几个错误。 @djna-SQL.NestedException 似乎出现因为我的数据库无法访问,因为我试图使用我的全局 IP 而不是 localhost。我不知道如何配置新服务器,因为我一直在使用默认服务器!

以上是关于用于真实设备的 IBM Worklight SQL 适配器的主要内容,如果未能解决你的问题,请参考以下文章

IBM Worklight:更改设备方向

IBM Worklight 和推送通知问题

IBM Worklight Application Center iOS 对触摸事件无响应

IBM Worklight - 无法使用现有别名注册到事件源回调。别名已用于事件源

IBM Worklight:推送通知设备 ID

IBM Worklight - 无法在 Worklight Console 和设备中更改应用程序图标