java - 在 REST 调用上使 Java 服务器保持 DCOM 对象处于 Activity 状态

标签 java com rest ejb dcom

我正在为我的 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/

相关文章:

delphi - 如何跨线程边界传递 ADO Recordset(或任何 COM 对象)?

c++ - 使用自定义标识调用 QueryInterface

Java Jersey PUT 方法和工作客户端

java - 如何使用 File 对象获取文件的目录?

java - JSP页面重新加载时如何更改标签的文本?

python - 如何在python中定义类并继承COM对象属性?

java - 如何为使用 angularjs ngResource ($resource) 进行的 REST 调用设置时间限制

java - AlertDialog.Builder 显示 API 请求为 null

java - 使用java套接字发送时图像不完整

rest - 通过 REST 调用停止 TeamCity 构建