我正在为我的 Java 服务器实现 REST API。通过 API 获得的资源之一实际上是创建一个 C++ DCOM 对象并反射(reflect)其值。 我使用的 Java 到 COM 桥接器是 J-Integra。
问题是我需要保持该 DCOM 对象处于 Activity 状态以供后续 REST 调用使用,但只要该对象的 Java 引用存在,该对象就处于 Activity 状态 - 最多直到 REST session 过期为止。
如何使 DCOM 对象保持 Activity 状态,直到我不再需要它为止? 到目前为止,我唯一想到的就是使用 EJB,它将成为启动 DCOM 对象并保存其引用的 EJB。我不是 EJB 方面的专家,但我认为 a) 这是一个过度的解决方案 b) EJB 可能被服务器缓存(钝化?),从而丢失 DCOM 引用。
有什么建议吗?
谢谢 因巴尔
最佳答案
How can I keep the DCOM object alive until I no longer needs it?
我想这取决于不再需要该对象意味着什么。你怎么知道什么时候完成了?
这些 DCOM 实例适用于整个站点还是仅适用于特定用户?如果在站点范围内,接收这些请求的资源是否可以保留对该对象的引用?如果没有,也许您需要另一个层来为您管理这些对象。
您使用什么框架进行 REST?
<小时/>Here's some more info: The DCOM object is executing a set of tasks async. So, the main call to it from the Java server returns immidietialy, while the DCOM object continues execution. Unfortuantley, it's quite an old object and i have no control over its implementation or interface - I can't change that. The DCOM object doesn't even have COM events. The only way to know if it is done or not, is to poll it using a specific method (getStatus). I don't want to poll it from my REST API implementation, as this will break the REST concept. I have no way to know in advance how long it will take for the DCOM object to run, so I can't keep the session alive that long.
基本上,您想使用 REST 调用来启动操作,但不关心它何时完成或其状态是什么?如果是这样,您是否可以启动一个线程来启动DCOM操作,轮询状态直到操作被认为完成,然后销毁DCOM操作?
关于java - 在 REST 调用上使 Java 服务器保持 DCOM 对象处于 Activity 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/518435/