【问题标题】:Background work in Worklight ServerWorklight Server 中的后台工作
【发布时间】:2014-04-11 06:00:55
【问题描述】:

试图找到一种方法来在 Worklight Server 中执行一些常规的内务管理。简化场景:

我们有一个适配器与后端系统通信。当用户使用 Worklight 进行身份验证时,他们会创建一些凭证,这些凭证会在每次服务调用时传递到后端。如果一段时间不使用,这些凭据可能会变得陈旧。因此,我们想要的是所有活动会话的“心跳”。我有一个单例 Java 对象,当用户进行身份验证时我将凭据存储在其中,我想要做的是有某种后台工作线程来迭代凭据列表并对服务器进行心跳调用。

我最终得到了这样的适配器方法

  // in business service adapter

  businessMethod(){
       make service call using credentials from user's Worklight session
  }


  // in authentication adapter, normal adapter authentication methods and a heartbeat

  authentication(){
        get back-end credentials
        store credentials in user's session
        stash credentials in singleton
  }

  // how do we cal this heartbeat every x min
  heartbeat(){
        for each credential in singleton stash
            make heartbeat call to server keeping credential alive
  }

问题是:我们如何触发心跳。我试过使用 Java TimerTask,它几乎可以工作。我可以安排 Java TimerTask 将调用我的心跳。问题是当在 TimerTask 下运行时,我们没有正常的 Worklight Server 环境,对 WL.Server.invokeProcedure() 的调用会引发异常,考虑到这一点,我似乎不太可能从实际上是一个外来线程。

我们使用 Worklight 6.1,部署在 WebSphere Liberty 服务器上。目前我能想到的最好的办法就是写一些外部的小程序或者shell脚本,定期调用heartbeat()方法。

有更好的建议吗?

【问题讨论】:

    标签: ibm-mobilefirst worklight-server


    【解决方案1】:

    我不确定心跳后端是个好主意,而且这听起来像是一个可能的安全漏洞。您应该配置 WL 服务器和后端会话超时。

    至于实际问题的答案 - 您可以使用 EventSource 创建后台任务。看这里 - https://www.ibm.com/developerworks/community/blogs/worklight/entry/configuring_a_polling_event_source_to_send_push_notifications?lang=en

    【讨论】:

    • 感谢您的回答。总的来说,我同意您的谨慎,在这种特殊情况下,心跳是安全架构的正式要求,是预先存在的、经过验证的且不可移动的。
    【解决方案2】:

    大卫,我不完全确定它是否直接解决了您的问题,因为我不确定您是否只是针对心跳,或者您是否想在心跳时对适配器层进行一些自定义工作收到(你能澄清一下基本目的吗?);但是您是否知道 Worklight 本身具有内置的心跳概念?作为对 WL.Client.init() 的调用的一部分,您可以使用值 heartBeatIntervalInSec 对其进行配置。有关更多信息,请参阅the documentation

    【讨论】:

    • 我们在这里讨论的是从 WL 服务器到后端的心跳。特定用例是在客户端连接时保持凭据最新,因此您提到的 WL 客户端心跳不会发生。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-06
    • 1970-01-01
    • 2011-08-22
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多