0

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

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

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

有什么建议么?

谢谢因巴尔

4

2 回答 2

2

我怎样才能让 DCOM 对象保持活动状态,直到我不再需要它?

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

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

你为 REST 使用什么框架?


这里有更多信息: DCOM 对象正在异步执行一组任务。因此,Java 服务器对它的主要调用立即返回,而 DCOM 对象继续执行。不幸的是,它是一个相当古老的对象,我无法控制它的实现或接口——我无法改变它。DCOM 对象甚至没有 COM 事件。知道它是否完成的唯一方法是使用特定方法(getStatus)对其进行轮询。我不想从我的 REST API 实现中轮询它,因为这会破坏 REST 概念。我无法提前知道 DCOM 对象运行需要多长时间,所以我不能让会话保持那么长时间。

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

于 2009-02-05T23:43:09.783 回答
0

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

于 2009-02-15T23:23:38.537 回答