【问题标题】:Keeping a DCOM object alive from Java server on a REST invocation在 REST 调用上从 Java 服务器保持 DCOM 对象处于活动状态
【发布时间】:2009-02-05 23:17:09
【问题描述】:

我正在为我的 Java 服务器实现一个 REST API。通过 API 获得的资源之一实际上是创建一个 C++ DCOM 对象并反映其值。 我使用的 Java 到 COM 桥接器是 J-Integra。

问题是我需要保持该 DCOM 对象在后续 REST 调用中处于活动状态,但只要对象的 Java 引用存在,该对象就处于活动状态 - 最多直到 REST 会话到期。

我怎样才能让 DCOM 对象保持活动状态,直到我不再需要它? 到目前为止,我唯一想到的是使用 EJB,然后它将成为启动 DCOM 对象并保存其引用的对象。我不是 EJB 方面的专家,但我认为 a) 它是一种过分的解决方案 b) EJB 可能会被服务器缓存(钝化?),从而丢失 DCOM 引用。

有什么建议吗?

谢谢 英巴

【问题讨论】:

    标签: java com rest ejb dcom


    【解决方案1】:

    如何让 DCOM 对象保持活动状态 直到我不再需要它?

    我想这取决于不再需要该对象意味着什么。你怎么知道什么时候完成?

    这些 DCOM 实例适用于整个站点,还是仅适用于特定用户?如果在站点范围内,接收这些请求的资源是否可以保留对该对象的引用?如果没有,也许您需要另一个层来为您管理这些对象。

    您为 REST 使用什么框架?


    这里有更多信息:DCOM 对象 正在异步执行一组任务。所以, Java 对它的主要调用 服务器立即返回,而 DCOM 对象继续执行。 不幸的是,它已经很旧了 对象,我无法控制它 实现或接口 - 我不能 改变它。 DCOM 对象不 甚至有 COM 事件。唯一的办法 知道是否完成,是投票 它使用特定的方法 (获取状态)。我不想投票 从我的 REST API 实现中,作为 这将打破 REST 概念。我 无法提前知道如何 DCOM 对象需要多长时间 运行,所以我不能保持会话 活那么久。

    所以基本上,您想使用 REST 调用来启动操作,但不关心它何时完成或它的状态是什么?如果是这样,是否可以启动一个将启动 DCOM 操作的 Thread,轮询状态直到认为操作完成,然后销毁 DCOM 操作?

    【讨论】:

    • 线程方向似乎是一种可能性。会话进行时线程不会被破坏吗?
    • @Inbar,不,它只会在服务器进程中作为单独的线程运行。
    【解决方案2】:

    放置在 COM+ 注册的组件,它保持活动状态。在link查看更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多